Aller au contenu principal

Conversations multi-tours avec outils

Quand Claude a besoin de plusieurs outils en sequence pour repondre a une question, il faut gerer automatiquement ce schema multi-tour.

Le pattern multi-tour

Pour “Quel jour serons-nous dans 103 jours ?”, Claude doit :

  1. Appeler get_current_datetime pour obtenir la date actuelle
  2. Appeler add_duration_to_datetime pour ajouter 103 jours
  3. Fournir la reponse finale

Refactoriser les fonctions utilitaires

from anthropic.types import Message

def add_user_message(messages, message):
    user_message = {
        "role": "user",
        "content": message.content if isinstance(message, Message) else message
    }
    messages.append(user_message)

Cela permet de passer une chaine, une liste de blocs, ou un objet message complet.

Mettre a jour la fonction chat

def chat(messages, system=None, temperature=1.0, stop_sequences=[], tools=None):
    params = {
        "model": model,
        "max_tokens": 1000,
        "messages": messages,
        "temperature": temperature,
        "stop_sequences": stop_sequences,
    }
    if tools:
        params["tools"] = tools
    if system:
        params["system"] = system
    message = client.messages.create(**params)
    return message

La fonction retourne maintenant le message complet, pas juste le texte.

Extraire le texte

def text_from_message(message):
    return "\n".join(
        [block.text for block in message.content if block.type == "text"]
    )

Ces modifications preparent le code pour gerer des conversations avec outils a tours multiples automatiquement.