從 Text Completions 遷移
從 Text Completions 遷移到 Messages
當從 Text Completions 遷移到 Messages 時,請考慮以下變更。
輸入和輸出
Text Completions 和 Messages 之間最大的變化是指定模型輸入和接收模型輸出的方式。
使用 Text Completions 時,輸入是原始字串:
prompt = "\n\nHuman: 你好\n\nAssistant: 嗨,我是 Claude。我能幫上什麼忙?\n\nHuman: 你能向我解釋糖酵解嗎?\n\nAssistant:"
使用 Messages 時,您需要指定一個輸入訊息列表,而不是原始提示:
每個輸入訊息都有一個 role
和 content
。
角色名稱
Text Completions API 期望交替的 \n\nHuman:
和 \n\nAssistant:
輪次,但 Messages API 期望 user
和 assistant
角色。您可能會看到文檔中提到 “human” 或 “user” 輪次。這些指的是相同的角色,以後將統一為 “user”。
使用 Text Completions 時,模型生成的文本會在響應的 completion
值中返回:
>>> response = anthropic.completions.create(...)
>>> response.completion
" 嗨,我是 Claude"
使用 Messages 時,響應是 content
值,它是一個內容塊列表:
>>> response = anthropic.messages.create(...)
>>> response.content
[{"type": "text", "text": "嗨,我是 Claude"}]
讓 Claude 說話
使用 Text Completions 時,您可以預先填充 Claude 的部分響應:
prompt = "\n\nHuman: 你好\n\nAssistant: 你好,我的名字是"
使用 Messages 時,您可以通過讓最後一條輸入訊息具有 assistant
角色來實現相同的結果:
messages = [
{"role": "human", "content": "你好"},
{"role": "assistant", "content": "你好,我的名字是"},
]
這樣做時,響應的 content
將從最後一條輸入訊息的 content
繼續:
{
"role": "assistant",
"content": [{"type": "text", "text": " Claude。今天我能如何幫助您?" }],
...
}
系統提示
使用 Text Completions 時,系統提示是通過在第一個 \n\nHuman:
輪次之前添加文本來指定的:
prompt = "今天是 2024 年 1 月 1 日。\n\nHuman: 你好,Claude\n\nAssistant:"
使用 Messages 時,您可以使用 system
參數指定系統提示:
anthropic.Anthropic().messages.create(
model="claude-3-opus-20240229",
max_tokens=1024,
system="今天是 2024 年 1 月 1 日。", # <-- 系統提示
messages=[
{"role": "user", "content": "你好,Claude"}
]
)
模型名稱
Messages API 要求您指定完整的模型版本(例如 claude-3-opus-20240229
)。
我們之前支持僅指定主要版本號(例如 claude-2
),這會導致自動升級到次要版本。但是,我們不再推薦這種集成模式,Messages 也不支持它。
停止原因
Text Completions 的 stop_reason
總是以下兩個值之一:
"stop_sequence"
:模型要麼自然結束了輪次,要麼生成了您自定義的停止序列之一。"max_tokens"
:模型要麼生成了您指定的max_tokens
內容,要麼達到了其絕對最大值。
Messages 的 stop_reason
是以下值之一:
"end_turn"
:對話輪次自然結束。"stop_sequence"
:生成了您指定的自定義停止序列之一。"max_tokens"
:(不變)
指定最大 tokens
- Text Completions:
max_tokens_to_sample
參數。沒有驗證,但每個模型有上限值。 - Messages:
max_tokens
參數。如果傳遞的值高於模型支持的值,將返回驗證錯誤。
流式格式
在 Text Completions 中使用 "stream": true
時,響應包括 completion
、ping
和 error
服務器發送事件中的任何一個。有關詳細信息,請參閱 Text Completions 流式傳輸。
Messages 可以包含多個不同類型的內容塊,因此其流式格式稍微複雜一些。有關詳細信息,請參閱 Messages 流式傳輸。