此兼容层主要用于测试和比较模型能力,对于大多数用例而言,它并不被视为长期或生产就绪的解决方案。虽然我们致力于保持其完整功能且不引入破坏性更改,但优先考虑的是 Claude API 的可靠性和有效性。
有关已知兼容性限制的更多信息,请参阅重要的 OpenAI 兼容性限制。
如果您在使用 OpenAI SDK 兼容性功能时遇到任何问题,请通过此兼容性反馈表单分享您的反馈。
为了获得最佳体验并访问 Claude API 的完整功能集(PDF 处理、引用、扩展思考和提示缓存),请使用原生 Claude API。
要使用 OpenAI SDK 兼容性功能,您需要:
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ.get("ANTHROPIC_API_KEY"), # Your Claude API key
base_url="https://api.anthropic.com/v1/", # the Claude API endpoint
)
response = client.chat.completions.create(
model="claude-opus-4-8", # Claude model name
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Who are you?"},
],
)
print(response.choices[0].message.content)以下是与使用 OpenAI 相比最主要的差异:
strict 参数会被忽略,这意味着工具使用的 JSON 不保证遵循所提供的 schema。如需保证 schema 一致性,请使用原生 Claude API 的结构化输出。大多数不支持的字段会被静默忽略,而不会产生错误。这些内容均在下方有详细说明。
如果您对提示进行了大量调优,那么它很可能是专门针对 OpenAI 进行了优化。建议使用 Claude Console 中的提示改进器作为一个良好的起点。
OpenAI SDK 的大多数输入都能清晰地直接映射到 Anthropic 的 API 参数,但一个明显的区别是对系统/开发者提示的处理方式。通过 OpenAI,这两种提示可以放置在聊天对话的任意位置。由于 Anthropic 仅支持初始系统消息,API 会获取所有系统/开发者消息,并用单个换行符(\n)将它们拼接在一起。然后,这个完整的字符串会作为单个系统消息放置在消息列表的开头。
您可以通过添加 thinking 参数来启用扩展思考功能。虽然这可以改善 Claude 对复杂任务的推理能力,但 OpenAI SDK 不会返回 Claude 的详细思考过程。如需完整的扩展思考功能,包括访问 Claude 的逐步推理输出,请使用原生 Claude API。
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[{"role": "user", "content": "Who are you?"}],
extra_body={"thinking": {"type": "enabled", "budget_tokens": 2000}},
)速率限制遵循 Anthropic 针对 /v1/messages 端点的标准限制。
| 字段 | 支持状态 |
|---|---|
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 | 忽略。如需 JSON 输出,请使用原生 Claude API 的结构化输出 |
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 会自动管理请求头,但对于需要直接处理请求头的开发者,以下是 Claude 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 | 始终为空 |
Was this page helpful?