OpenAI SDK 兼容性(测试版)
通过几处代码更改,您可以使用 OpenAI SDK 来测试 Anthropic API。Anthropic 提供了一个兼容层,让您能够以最小的努力快速评估 Anthropic 模型的能力。
请在此处提交与 OpenAI SDK 兼容性功能相关的反馈或错误。
开始之前
这个兼容层旨在以最小的开发工作量测试和比较模型能力,不被视为大多数用例的长期或生产就绪解决方案。为了获得最佳体验并访问 Anthropic API 的完整功能集(PDF 处理、引用、扩展思考和提示缓存),我们建议使用原生 Anthropic API。
开始使用 OpenAI SDK
要使用 OpenAI SDK 兼容性功能,您需要:
- 使用官方 OpenAI SDK
- 更改以下内容
- 将您的基础 URL 更新为指向 Anthropic 的 API
- 用 Anthropic API 密钥替换您的 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 之间(包括 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 | 始终为空 |