Migration von Text Completions
Migration von Text Completions zu Messages
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:
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:
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:
>>> 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:
>>> 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:
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:
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:
{
"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:
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:
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 angegebenenmax_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.