Bei der Migration von Text Completions zu Messages sind folgende Änderungen zu beachten.

Eingaben und Ausgaben

Die größte Änderung zwischen Text Completions und Messages ist die Art und Weise, wie Sie Modelleingaben angeben und Ausgaben vom Modell erhalten.

Bei Text Completions sind die Eingaben rohe Zeichenketten:

Python
prompt = "\n\nHuman: Hallo\n\nAssistant: Hi, ich bin Claude. Wie kann ich helfen?\n\nHuman: Kannst du mir Glykolyse erklären?\n\nAssistant:"

Bei Messages geben Sie statt eines rohen Prompts eine Liste von Eingabenachrichten an:

messages = [
  {"role": "user", "content": "Hallo."},
  {"role": "assistant", "content": "Hi, ich bin Claude. Wie kann ich helfen?"},
  {"role": "user", "content": "Kannst du mir Glykolyse erklären?"},
]

Jede Eingabenachricht hat eine role und einen content.

Rollennamen

Die Text Completions API erwartet abwechselnde \n\nHuman: und \n\nAssistant: Turns, aber die Messages API erwartet user und assistant Rollen. In der Dokumentation wird möglicherweise auf “human” oder “user” Turns verwiesen. Diese beziehen sich auf die gleiche Rolle und werden in Zukunft “user” sein.

Bei Text Completions wird der vom Modell generierte Text in den completion Werten der Antwort zurückgegeben:

Python
>>> response = anthropic.completions.create(...)
>>> response.completion
" Hi, ich bin Claude"

Bei Messages ist die Antwort der content Wert, der eine Liste von Inhaltsblöcken ist:

Python
>>> response = anthropic.beta.messages.create(...)
>>> response.content
[{"type": "text", "text": "Hi, ich bin Claude"}]

Claude Worte in den Mund legen

Mit Text Completions können Sie einen Teil von Claudes Antwort vorfüllen:

Python
prompt = "\n\nHuman: Hallo\n\nAssistant: Hallo, mein Name ist"

Mit Messages können Sie das gleiche Ergebnis erzielen, indem Sie die letzte Eingabenachricht die Rolle assistant geben:

Python
messages = [
  {"role": "human", "content": "Hallo"},
  {"role": "assistant", "content": "Hallo, mein Name ist"},
]

Wenn Sie dies tun, wird der Antwort-content vom letzten Eingabenachrichten-content fortgesetzt:

JSON
{
  "role": "assistant",
  "content": [{"type": "text", "text": " Claude. Wie kann ich Ihnen heute helfen?" }],
  ...
}

System Prompt

Bei Text Completions wird der System Prompt angegeben, indem Text vor dem ersten \n\nHuman: Turn hinzugefügt wird:

Python
prompt = "Heute ist der 1. Januar 2024.\n\nHuman: Hallo, Claude\n\nAssistant:"

Bei Messages geben Sie den System Prompt mit dem system Parameter an:

Python
anthropic.Anthropic().beta.messages.create(
    model="claude-3-opus-20240229",
    max_tokens=1024,
    system="Heute ist der 1. Januar 2024.", # <-- System Prompt
    messages=[
        {"role": "user", "content": "Hallo, Claude"}
    ]
)

Modellnamen

Die Messages API erfordert, dass Sie die vollständige Modellversion angeben (z. B. claude-3-opus-20240229).

Wir haben zuvor die Angabe nur der Hauptversionsnummer (z. B. claude-2) unterstützt, was zu automatischen Upgrades auf Nebenversionen führte. Wir empfehlen dieses Integrationsmuster jedoch nicht mehr, und Messages unterstützen es nicht.

Stop Grund

Text Completions haben immer einen stop_reason von entweder:

  • "stop_sequence": Das Modell hat seinen Turn entweder auf natürliche Weise beendet oder eine Ihrer benutzerdefinierten Stop-Sequenzen wurde generiert.
  • "max_tokens": Entweder hat das Modell Ihre angegebenen max_tokens an Inhalt generiert oder es hat sein absolutes Maximum erreicht.

Messages haben einen stop_reason von einem der folgenden Werte:

  • "end_turn": Der Gesprächsturn endete auf natürliche Weise.
  • "stop_sequence": Eine Ihrer angegebenen benutzerdefinierten Stop-Sequenzen wurde generiert.
  • "max_tokens": (unverändert)

Angabe der maximalen Tokens

  • Text Completions: max_tokens_to_sample Parameter. Keine Validierung, aber begrenzte Werte pro Modell.
  • Messages: max_tokens Parameter. Wenn Sie einen höheren Wert übergeben, als das Modell unterstützt, wird ein Validierungsfehler zurückgegeben.

Streaming-Format

Bei Verwendung von "stream": true mit Text Completions enthielt die Antwort beliebige completion, ping und error Server-Sent-Events. Siehe Text Completions Streaming für Details.

Messages können mehrere Inhaltsblöcke unterschiedlicher Typen enthalten, daher ist das Streaming-Format etwas komplexer. Siehe Messages Streaming für Details.