OpenAI SDK 相容性
Anthropic 提供相容性層,讓您能夠使用 OpenAI SDK 來測試 Anthropic API。透過少量程式碼變更,您可以快速評估 Anthropic 模型功能。
此相容性層主要用於測試和比較模型功能,對於大多數使用案例而言,並不被視為長期或生產就緒的解決方案。雖然我們確實打算保持其完全功能性且不進行破壞性變更,但我們的優先考量是 Anthropic API 的可靠性和有效性。
有關已知相容性限制的更多資訊,請參閱重要的 OpenAI 相容性限制。
如果您在使用 OpenAI SDK 相容性功能時遇到任何問題,請在這裡告知我們。
為了獲得最佳體驗並存取 Anthropic API 的完整功能集(PDF 處理、引用、延伸思考 和提示快取),我們建議使用原生的 Anthropic API。
開始使用 OpenAI SDK
要使用 OpenAI SDK 相容性功能,您需要:
- 使用官方 OpenAI SDK
- 變更以下項目
- 更新您的基礎 URL 以指向 Anthropic 的 API
- 將您的 API 金鑰替換為 Anthropic API 金鑰
- 更新您的模型名稱以使用 Claude 模型
- 查看下方文件以了解支援哪些功能
快速開始範例
重要的 OpenAI 相容性限制
API 行為
以下是與使用 OpenAI 最重要的差異:
- 函數呼叫的
strict
參數會被忽略,這意味著工具使用 JSON 不保證遵循提供的架構。 - 不支援音訊輸入;它會被忽略並從輸入中移除
- 不支援提示快取,但在 Anthropic SDK 中支援
- 系統/開發者訊息會被提升並串聯到對話開頭,因為 Anthropic 只支援單一初始系統訊息。
大多數不支援的欄位會被靜默忽略而不是產生錯誤。這些都在下方記錄。
輸出品質考量
如果您已經對提示進行了大量調整,它很可能是專門針對 OpenAI 進行了良好調整。考慮使用我們在 Anthropic Console 中的提示改進器作為良好的起點。
系統/開發者訊息提升
OpenAI SDK 的大多數輸入都直接對應到 Anthropic 的 API 參數,但一個明顯的差異是系統/開發者提示的處理。這兩種提示可以透過 OpenAI 放置在聊天對話的任何地方。由於 Anthropic 只支援初始系統訊息,我們會取得所有系統/開發者訊息並將它們串聯在一起,中間用單一換行符(\n
)分隔。然後將此完整字串作為單一系統訊息提供在訊息開頭。
延伸思考支援
您可以透過新增 thinking
參數來啟用延伸思考功能。雖然這會改善 Claude 對複雜任務的推理,但 OpenAI SDK 不會回傳 Claude 的詳細思考過程。要獲得完整的延伸思考功能,包括存取 Claude 的逐步推理輸出,請使用原生 Anthropic API。
速率限制
速率限制遵循 Anthropic 對 /v1/messages
端點的標準限制。
詳細的 OpenAI 相容 API 支援
請求欄位
簡單欄位
欄位 | 支援狀態 |
---|---|
model | 使用 Claude 模型名稱 |
max_tokens | 完全支援 |
max_completion_tokens | 完全支援 |
stream | 完全支援 |
stream_options | 完全支援 |
top_p | 完全支援 |
parallel_tool_calls | 完全支援 |
stop | 所有非空白停止序列都有效 |
temperature | 介於 0 和 1 之間(包含)。大於 1 的值會被限制為 1。 |
n | 必須恰好為 1 |
logprobs | 忽略 |
metadata | 忽略 |
response_format | 忽略 |
prediction | 忽略 |
presence_penalty | 忽略 |
frequency_penalty | 忽略 |
seed | 忽略 |
service_tier | 忽略 |
audio | 忽略 |
logit_bias | 忽略 |
store | 忽略 |
user | 忽略 |
modalities | 忽略 |
top_logprobs | 忽略 |
reasoning_effort | 忽略 |
tools
/ functions
欄位
messages
陣列欄位
回應欄位
欄位 | 支援狀態 |
---|---|
id | 完全支援 |
choices[] | 長度永遠為 1 |
choices[].finish_reason | 完全支援 |
choices[].index | 完全支援 |
choices[].message.role | 完全支援 |
choices[].message.content | 完全支援 |
choices[].message.tool_calls | 完全支援 |
object | 完全支援 |
created | 完全支援 |
model | 完全支援 |
finish_reason | 完全支援 |
content | 完全支援 |
usage.completion_tokens | 完全支援 |
usage.prompt_tokens | 完全支援 |
usage.total_tokens | 完全支援 |
usage.completion_tokens_details | 永遠為空 |
usage.prompt_tokens_details | 永遠為空 |
choices[].message.refusal | 永遠為空 |
choices[].message.audio | 永遠為空 |
logprobs | 永遠為空 |
service_tier | 永遠為空 |
system_fingerprint | 永遠為空 |
錯誤訊息相容性
相容性層與 OpenAI API 保持一致的錯誤格式。然而,詳細的錯誤訊息不會相等。我們建議僅將錯誤訊息用於記錄和除錯。
標頭相容性
雖然 OpenAI SDK 會自動管理標頭,但以下是 Anthropic API 支援的完整標頭清單,供需要直接使用它們的開發者參考。
標頭 | 支援狀態 |
---|---|
x-ratelimit-limit-requests | 完全支援 |
x-ratelimit-limit-tokens | 完全支援 |
x-ratelimit-remaining-requests | 完全支援 |
x-ratelimit-remaining-tokens | 完全支援 |
x-ratelimit-reset-requests | 完全支援 |
x-ratelimit-reset-tokens | 完全支援 |
retry-after | 完全支援 |
request-id | 完全支援 |
openai-version | 永遠為 2020-10-01 |
authorization | 完全支援 |
openai-processing-ms | 永遠為空 |