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 :
- Appeler
get_current_datetimepour obtenir la date actuelle - Appeler
add_duration_to_datetimepour ajouter 103 jours - 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.