请在此处提交与 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 之间(包括 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始终为空