此相容性層主要用於測試和比較模型功能,對於大多數使用案例而言,並不被視為長期或生產就緒的解決方案。雖然我們確實打算保持其完全功能性且不進行破壞性變更,但我們的優先考量是 Anthropic API 的可靠性和有效性。

有關已知相容性限制的更多資訊,請參閱重要的 OpenAI 相容性限制

如果您在使用 OpenAI SDK 相容性功能時遇到任何問題,請在這裡告知我們。

為了獲得最佳體驗並存取 Anthropic API 的完整功能集(PDF 處理引用延伸思考提示快取),我們建議使用原生的 Anthropic API

開始使用 OpenAI SDK

要使用 OpenAI SDK 相容性功能,您需要:

  1. 使用官方 OpenAI SDK
  2. 變更以下項目
  3. 查看下方文件以了解支援哪些功能

快速開始範例

from openai import OpenAI

client = OpenAI(
    api_key="ANTHROPIC_API_KEY",  # 您的 Anthropic API 金鑰
    base_url="https://api.anthropic.com/v1/"  # Anthropic 的 API 端點
)

response = client.chat.completions.create(
    model="claude-opus-4-20250514", # Anthropic 模型名稱
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Who are you?"}
    ],
)

print(response.choices[0].message.content)

重要的 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。

response = client.chat.completions.create(
    model="claude-opus-4-20250514",
    messages=...,
    extra_body={
        "thinking": { "type": "enabled", "budget_tokens": 2000 }
    }
)

速率限制

速率限制遵循 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永遠為空