Exercice : construire un chatbot
Mettez en pratique ce que vous avez appris en construisant un chatbot interactif en ligne de commande.
Objectif
Creer un programme Python qui :
- Accepte les messages de l’utilisateur en boucle
- Maintient l’historique de la conversation
- Envoie l’historique complet a chaque requete
- Affiche les reponses de Claude
- Permet de quitter avec “quit” ou “exit”
Consignes
- Reutilisez les fonctions
add_user_message,add_assistant_messageetchatde la lecon precedente - Le chatbot doit tourner en continu jusqu’a ce que l’utilisateur decide de quitter
- Affichez un message d’accueil au demarrage
- Gerez proprement la sortie
Bonus
Ajoutez un prompt systeme pour donner une personnalite au chatbot (nous verrons les prompts systeme en detail dans la prochaine lecon, mais vous pouvez deja experimenter avec le parametre system de messages.create()).
Solution
Essayez d’abord par vous-meme avant de regarder la solution.
Voir la solution
from dotenv import load_dotenv
import anthropic
load_dotenv()
client = anthropic.Anthropic()
def add_user_message(conversation, text):
conversation.append({"role": "user", "content": text})
def add_assistant_message(conversation, text):
conversation.append({"role": "assistant", "content": text})
def chat(conversation, user_message, system_prompt=None, model="claude-sonnet-4-20250514", max_tokens=1024):
add_user_message(conversation, user_message)
kwargs = {
"model": model,
"max_tokens": max_tokens,
"messages": conversation
}
if system_prompt:
kwargs["system"] = system_prompt
response = client.messages.create(**kwargs)
assistant_text = response.content[0].text
add_assistant_message(conversation, assistant_text)
return assistant_text
def main():
print("=== Chatbot Claude ===")
print("Tapez 'quit' ou 'exit' pour quitter.\n")
conversation = []
# Bonus : prompt systeme pour donner une personnalite
system_prompt = (
"Tu es un assistant sympathique et concis. "
"Tu reponds en francais. "
"Tu utilises des exemples concrets quand c'est utile."
)
while True:
user_input = input("Vous : ").strip()
if not user_input:
continue
if user_input.lower() in ("quit", "exit"):
print("Au revoir !")
break
try:
response = chat(conversation, user_input, system_prompt=system_prompt)
print(f"\nClaude : {response}\n")
except Exception as e:
print(f"\nErreur : {e}\n")
if __name__ == "__main__":
main()
Pour aller plus loin
- Ajoutez un compteur de tokens pour suivre la consommation
- Sauvegardez l’historique dans un fichier JSON pour reprendre une conversation
- Ajoutez une commande
/resetpour effacer l’historique