Bei der Migration von Text Completions zu Messages sollten Sie die folgenden Änderungen berücksichtigen.

Eingaben und Ausgaben

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

Bei Text Completions sind Eingaben rohe Strings:

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:"

Bei Messages spezifizieren Sie eine Liste von Eingabenachrichten anstelle eines rohen Prompts:

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?"},
]

Jede Eingabenachricht hat eine role und content.

Rollennamen

Die Text Completions API erwartet abwechselnde \n\nHuman: und \n\nAssistant: Züge, aber die Messages API erwartet user und assistant Rollen. Sie könnten Dokumentation sehen, die sich auf “human” oder “user” Züge bezieht. Diese beziehen sich auf dieselbe Rolle und werden zukünftig “user” sein.

Bei Text Completions wird der generierte Text des Modells in den completion Werten der Antwort zurückgegeben:

Python
>>> response = anthropic.completions.create(...)
>>> response.completion
" Hi, I'm Claude"

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

Python
>>> response = anthropic.messages.create(...)
>>> response.content
[{"type": "text", "text": "Hi, I'm Claude"}]

Claude Worte in den Mund legen

Bei Text Completions können Sie einen Teil von Claudes Antwort vorab ausfüllen:

Python
prompt = "\n\nHuman: Hello\n\nAssistant: Hello, my name is"

Bei Messages können Sie dasselbe Ergebnis erzielen, indem Sie die letzte Eingabenachricht die assistant Rolle haben lassen:

Python
messages = [
  {"role": "human", "content": "Hello"},
  {"role": "assistant", "content": "Hello, my name is"},
]

Wenn Sie dies tun, wird der Antwort content von der letzten Eingabenachricht content fortgesetzt:

JSON
{
  "role": "assistant",
  "content": [{"type": "text", "text": " Claude. How can I assist you today?" }],
  ...
}

System Prompt

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

Python
prompt = "Today is January 1, 2024.\n\nHuman: Hello, Claude\n\nAssistant:"

Bei Messages spezifizieren Sie den System Prompt mit dem system Parameter:

Python
anthropic.Anthropic().messages.create(
    model="claude-sonnet-4-20250514",
    max_tokens=1024,
    system="Today is January 1, 2024.", # <-- system prompt
    messages=[
        {"role": "user", "content": "Hello, Claude"}
    ]
)

Modellnamen

Die Messages API erfordert, dass Sie die vollständige Modellversion spezifizieren (z.B. claude-sonnet-4-20250514).

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

Stop Reason

Text Completions haben immer einen stop_reason von entweder:

  • "stop_sequence": Das Modell beendete seinen Zug natürlich, oder eine Ihrer benutzerdefinierten Stop-Sequenzen wurde generiert.
  • "max_tokens": Entweder generierte das Modell Ihre spezifizierten max_tokens an Inhalt, oder es erreichte sein absolutes Maximum.

Messages haben einen stop_reason von einem der folgenden Werte:

  • "end_turn": Der Gesprächszug endete natürlich.
  • "stop_sequence": Eine Ihrer spezifizierten benutzerdefinierten Stop-Sequenzen wurde generiert.
  • "max_tokens": (unverändert)

Max Tokens spezifizieren

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

Streaming Format

Bei der 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 verschiedener Typen enthalten, und daher ist ihr Streaming-Format etwas komplexer. Siehe Messages Streaming für Details.