L’API Text Completions a été dépréciée en faveur de l’API Messages.
Lors de la migration des Complétions de Texte vers Messages, considérez les changements suivants.

Entrées et sorties

Le plus grand changement entre les Complétions de Texte et les Messages est la façon dont vous spécifiez les entrées du modèle et recevez les sorties du modèle. Avec les Complétions de Texte, les entrées sont des chaînes brutes :
Python
prompt = "\n\nHuman: Hello there\n\nAssistant: Hi, I'm Claude. How can I help?\n\nHuman: Can you explain Glycolysis to me?\n\nAssistant:"
Avec Messages, vous spécifiez une liste de messages d’entrée au lieu d’un prompt brut :
messages = [
  {"role": "user", "content": "Hello there."},
  {"role": "assistant", "content": "Hi, I'm Claude. How can I help?"},
  {"role": "user", "content": "Can you explain Glycolysis to me?"},
]
Chaque message d’entrée a un role et un content.
Noms des rôlesL’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 pourriez voir de la documentation faisant référence aux tours “human” ou “user”. Ceux-ci font référence au même rôle, et ce sera “user” à l’avenir.
Avec les Complétions de Texte, le texte généré par le modèle est retourné dans les valeurs completion de la réponse :
Python
>>> response = anthropic.completions.create(...)
>>> response.completion
" Hi, I'm Claude"
Avec Messages, la réponse est la valeur content, qui est une liste de blocs de contenu :
Python
>>> response = anthropic.messages.create(...)
>>> response.content
[{"type": "text", "text": "Hi, I'm Claude"}]

Mettre des mots dans la bouche de Claude

Avec les Complétions de Texte, vous pouvez pré-remplir une partie de la réponse de Claude :
Python
prompt = "\n\nHuman: Hello\n\nAssistant: Hello, my name is"
Avec Messages, vous pouvez obtenir le même résultat en faisant que le dernier message d’entrée ait le rôle assistant :
Python
messages = [
  {"role": "human", "content": "Hello"},
  {"role": "assistant", "content": "Hello, my name is"},
]
Ce faisant, le content de la réponse continuera à partir du content du dernier message d’entrée :
JSON
{
  "role": "assistant",
  "content": [{"type": "text", "text": " Claude. How can I assist you today?" }],
  ...
}

Prompt système

Avec les Complétions de Texte, le prompt système est spécifié en ajoutant du texte avant le premier tour \n\nHuman: :
Python
prompt = "Today is January 1, 2024.\n\nHuman: Hello, Claude\n\nAssistant:"
Avec Messages, vous spécifiez le prompt système avec le paramètre system :
Python
anthropic.Anthropic().messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    system="Today is January 1, 2024.", # <-- prompt système
    messages=[
        {"role": "user", "content": "Hello, Claude"}
    ]
)

Noms des modèles

L’API Messages exige que vous spécifiiez la version complète du modèle (par exemple claude-sonnet-4-5-20250929). Nous avons précédemment pris 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 les versions mineures. Cependant, nous ne recommandons plus ce modèle d’intégration, et Messages ne le prennent pas en charge.

Raison d’arrêt

Les Complétions de Texte ont toujours un stop_reason de soit :
  • "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é votre max_tokens spécifié de contenu, soit il a atteint son maximum absolu.
Messages ont un stop_reason de l’une des valeurs suivantes :
  • "end_turn" : Le tour conversationnel 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 des tokens maximum

  • Complétions de Texte : paramètre max_tokens_to_sample. Pas de validation, mais 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, retourne une erreur de validation.

Format de streaming

Lors de l’utilisation de "stream": true avec les Complétions de Texte, la réponse incluait n’importe lequel des événements server-sent-events completion, ping, et error. Messages peuvent contenir plusieurs blocs de contenu de types variés, et donc son format de streaming est quelque peu plus complexe. Voir Streaming Messages pour les détails.