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 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 stattdessen eine Liste von Eingabenachrichten anstelle einer rohen Eingabeaufforderung 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: Runden, aber die Messages API erwartet user und assistant Rollen. In der Dokumentation wird möglicherweise auf “human” oder “user” Runden verwiesen. Diese beziehen sich auf die gleiche Rolle und werden in Zukunft “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, ich bin Claude"

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

Python
>>> response = anthropic.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 Eingabenachricht content fortgesetzt:

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

System Prompt

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

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

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

Python
anthropic.Anthropic().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 seine Runde entweder auf natürliche Weise beendet oder eine Ihrer benutzerdefinierten Stoppsequenzen 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": Die Gesprächsrunde endete auf natürliche Weise.
  • "stop_sequence": Eine Ihrer angegebenen benutzerdefinierten Stoppsequenzen wurde generiert.
  • "max_tokens": (unverändert)

Angabe der maximalen Token

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

Streaming-Format

Bei Verwendung von "stream": true mit Text Completions enthielt die Antwort eine der folgenden Server-Sent-Events: completion, ping und error. 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.