Migration depuis Text Completions
Migration de Text Completions vers Messages
Lorsque vous migrez de Text Completions vers Messages, considérez les changements suivants.
Entrées et sorties
Le plus grand changement entre Text Completions et Messages est la façon dont vous spécifiez les entrées du modèle et recevez les sorties du modèle.
Avec Text Completions, les entrées sont des chaînes brutes :
prompt = "\n\nHuman: Bonjour\n\nAssistant: Salut, je suis Claude. Comment puis-je aider ?\n\nHuman: Peux-tu m'expliquer la glycolyse ?\n\nAssistant:"
Avec Messages, vous spécifiez une liste de messages d’entrée au lieu d’une invite brute :
Chaque message d’entrée a un role
et un content
.
Noms de rôles
L’API Text Completions attend des tours alternés \n\nHuman:
et \n\nAssistant:
, mais l’API Messages attend des rôles user
et assistant
. Vous pouvez voir la documentation faisant référence à des tours “human” ou “user”. Ils font référence au même rôle, qui sera “user” à l’avenir.
Avec Text Completions, le texte généré par le modèle est renvoyé dans les valeurs completion
de la réponse :
>>> response = anthropic.completions.create(...)
>>> response.completion
" Salut, je suis Claude"
Avec Messages, la réponse est la valeur content
, qui est une liste de blocs de contenu :
>>> response = anthropic.messages.create(...)
>>> response.content
[{"type": "text", "text": "Salut, je suis Claude"}]
Mettre des mots dans la bouche de Claude
Avec Text Completions, vous pouvez pré-remplir une partie de la réponse de Claude :
prompt = "\n\nHuman: Bonjour\n\nAssistant: Bonjour, mon nom est"
Avec Messages, vous pouvez obtenir le même résultat en faisant en sorte que le dernier message d’entrée ait le rôle assistant
:
messages = [
{"role": "human", "content": "Bonjour"},
{"role": "assistant", "content": "Bonjour, mon nom est"},
]
Ce faisant, le content
de la réponse continuera à partir du content
du dernier message d’entrée :
{
"role": "assistant",
"content": [{"type": "text", "text": " Claude. Comment puis-je vous aider aujourd'hui ?" }],
...
}
Invite système
Avec Text Completions, l’invite système est spécifiée en ajoutant du texte avant le premier tour \n\nHuman:
:
prompt = "Nous sommes le 1er janvier 2024.\n\nHuman: Bonjour, Claude\n\nAssistant:"
Avec Messages, vous spécifiez l’invite système avec le paramètre system
:
anthropic.Anthropic().messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
system="Nous sommes le 1er janvier 2024.", # <-- invite système
messages=[
{"role": "user", "content": "Bonjour, Claude"}
]
)
Noms de modèles
L’API Messages nécessite que vous spécifiiez la version complète du modèle (par exemple claude-3-opus-20240229
).
Nous prenions auparavant en charge la spécification uniquement du numéro de version majeure (par exemple claude-2
), ce qui entraînait des mises à niveau automatiques vers des versions mineures. Cependant, nous ne recommandons plus ce modèle d’intégration et Messages ne le prend pas en charge.
Raison d’arrêt
Text Completions a toujours une stop_reason
parmi :
"stop_sequence"
: Le modèle a soit terminé son tour naturellement, soit l’une de vos séquences d’arrêt personnalisées a été générée."max_tokens"
: Soit le modèle a généré votremax_tokens
de contenu spécifié, soit il a atteint son maximum absolu.
Messages a une stop_reason
parmi les valeurs suivantes :
"end_turn"
: Le tour de conversation s’est terminé naturellement."stop_sequence"
: L’une de vos séquences d’arrêt personnalisées spécifiées a été générée."max_tokens"
: (inchangé)
Spécification du nombre maximum de tokens
- Text Completions : paramètre
max_tokens_to_sample
. Pas de validation, mais des valeurs plafonnées par modèle. - Messages : paramètre
max_tokens
. Si vous passez une valeur supérieure à ce que le modèle prend en charge, une erreur de validation est renvoyée.
Format de streaming
Lors de l’utilisation de "stream": true
avec Text Completions, la réponse incluait l’un des événements envoyés par le serveur completion
, ping
et error
. Voir Streaming Text Completions pour plus de détails.
Les messages peuvent contenir plusieurs blocs de contenu de types variés, donc son format de streaming est un peu plus complexe. Voir Streaming Messages pour plus de détails.