Chargement

Conversations multi-tours

Leçon 47 min

Lorsque vous travaillez avec l'API Anthropic et Claude, il y a un concept crucial que vous devez comprendre : Claude ne stocke aucun historique de votre conversation. Chaque requête que vous effectuez est complètement indépendante, sans aucune mémoire des échanges précédents.

Cela signifie que si vous souhaitez avoir une conversation multi-tours où Claude se souvient du contexte des messages précédents, vous devez gérer vous-même l'état de la conversation.

Le problème des conversations sans état

Supposons que vous demandiez à Claude « Qu'est-ce que l'informatique quantique ? » et que vous obteniez une bonne réponse. Ensuite, vous poursuivez avec « Écris une autre phrase » - Claude n'a aucune idée de ce à quoi vous faites référence. Il écrira une phrase sur quelque chose de complètement aléatoire car il n'a aucune mémoire de la discussion sur l'informatique quantique.

Comment fonctionnent les conversations multi-tours

Pour maintenir le contexte de la conversation, vous devez faire deux choses :

  • Maintenir manuellement une liste de tous les messages dans votre code
  • Envoyer l'historique complet des messages à chaque requête

Voici le flux qui fonctionne réellement :

  1. Envoyez votre message utilisateur initial à Claude
  2. Prenez la réponse de Claude et ajoutez-la à votre liste de messages en tant que message assistant
  3. Ajoutez votre question de suivi comme un autre message utilisateur
  4. Envoyez l'historique complet de la conversation à Claude

Création de fonctions d'aide

Pour faciliter la gestion des conversations, vous pouvez créer trois fonctions d'aide :

python
def add_user_message(messages, text):
    user_message = {"role": "user", "content": text}
    messages.append(user_message)

def add_assistant_message(messages, text):
    assistant_message = {"role": "assistant", "content": text}
    messages.append(assistant_message)

def chat(messages):
    message = client.messages.create(
        model=model,
        max_tokens=1000,
        messages=messages,
    )
    return message.content[0].text

Assembler le tout

Voici comment utiliser ces fonctions pour maintenir une conversation :

python
# Commencer avec une liste de messages vide
messages = []

# Ajouter la question initiale de l'utilisateur
add_user_message(messages, "Define quantum computing in one sentence")

# Obtenir la réponse de Claude
answer = chat(messages)

# Ajouter la réponse de Claude à l'historique de conversation
add_assistant_message(messages, answer)

# Ajouter une question de suivi
add_user_message(messages, "Write another sentence")

# Obtenir la réponse de suivi avec le contexte complet
final_answer = chat(messages)

Maintenant, Claude comprendra que « Écris une autre phrase » fait référence au développement de la définition de l'informatique quantique, car vous avez fourni le contexte complet de la conversation.

Points clés à retenir

Rappelez-vous que chaque appel API à Claude est indépendant. Si vous souhaitez un contexte conversationnel, vous devez :

  • Stocker tous les messages localement dans votre application
  • Envoyer l'historique complet des messages à chaque requête
  • Formater correctement les messages avec les rôles « user » et « assistant »

Ces fonctions d'aide seront essentielles tout au long de votre travail avec Claude, rendant beaucoup plus facile la création d'applications qui ressemblent à des conversations naturelles plutôt qu'à des échanges de questions-réponses isolés.