重要提示:如需以 Markdown 形式查看本页,请在 URL 后追加 `.md`。 完整文档索引见 llms.txt
跳到主要内容
完整文档索引见 llms.txt。 在任意 URL 后追加 `.md` 即可查看该页面的 Markdown 版本。

Anthropic-compatible API

Anthropic API 已经成为另一类主流的 LLM 交互接口,尤其常见于基于 Claude 的应用和 agent 工作流中。

什么是 Anthropic-compatible API?

Anthropic-compatible API 指的是任何复现 Anthropic API 接口、请求/响应 schema 和认证模型的 API。随着 Claude 模型逐渐流行,尤其是在 Claude CodeClaude Agent SDK 这类 agentic 工具推动下,许多应用和框架都采用了 Anthropic Messages API 格式。

通过暴露一个 Anthropic-compatible endpoint,你可以在基本不修改现有 Anthropic 客户端、SDK 和 agent loop 的情况下,提供一个 open-source 模型(例如 Llama、Qwen、DeepSeek)或其他 provider。

如何调用 Anthropic-compatible API

使用官方 Anthropic SDK,并将 base_url 指向你的 endpoint:

from anthropic import Anthropic

client = Anthropic(
base_url="https://your-custom-endpoint.com",
api_key="your-api-key"
)

response = client.messages.create(
model="your-model-name",
max_tokens=1024,
system="You are a helpful assistant.",
messages=[
{"role": "user", "content": "How can I integrate Anthropic-compatible APIs?"}
]
)

print(response.content[0].text)

你也可以直接用 curl 调用该 endpoint:

curl https://your-custom-endpoint.com/v1/messages \
-H "x-api-key: your-api-key" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "your-model-name",
"max_tokens": 1024,
"system": "You are a helpful assistant.",
"messages": [
{"role": "user", "content": "How can I integrate Anthropic-compatible APIs?"}
]
}'

流式响应

Anthropic SDK 提供了 messages.stream() helper,在模型生成响应期间会持续产出带类型的 events。

from anthropic import Anthropic

client = Anthropic(
base_url="https://your-custom-endpoint.com",
api_key="your-api-key"
)

with client.messages.stream(
model="your-model-name",
max_tokens=1024,
messages=[
{"role": "user", "content": "Write a short poem about streaming."}
],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)

具体 event schema 会因 framework 而异。请始终查看其官方文档。

列出可用模型

Anthropic 暴露了 /v1/models endpoint,许多兼容服务器也会实现它。你可以用它来发现后端接受哪些 model 名称:

from anthropic import Anthropic

client = Anthropic(
base_url="https://your-custom-endpoint.com",
api_key="your-api-key"
)

for model in client.models.list().data:
print(model.id)

或者使用 curl

curl https://your-custom-endpoint.com/v1/models \
-H "x-api-key: your-api-key" \
-H "anthropic-version: 2023-06-01"

把任意返回的 id 用作 messages.create() 调用中的 model 字段即可。

需要注意的事项

兼容 endpoint 会讲 Anthropic schema 这门“语言”,但它并不等于官方 Anthropic API。这里有一些实际中的注意事项:

  • API key 可能会被接受,但并未真正校验。许多 self-hosted inference framework 不会验证该值,因此你通常可以传任意字符串(例如 "EMPTY")。当 endpoint 或网关确实检查它时,仍应把它当作真正的 secret 对待。
  • 配置通常通过 environment variables 完成。许多 framework 文档建议通过 environment variables 设置 API key 和 base URL(这样 Anthropic SDK 会自动读取),而不是把它们硬编码到客户端代码里。不同框架的具体变量名可能不同,但思路是一致的。
  • 并非所有 API 字段都受支持。像 modelmessagesmax_tokens 这样的常见字段通常没问题,但再往外扩展,兼容性就会变薄。比如:
    • Modalities。官方 Anthropic API 接受 "image""document" 之类的类型。对许多 open-source LLM 来说,这些类型根本不受支持。不要假设某种 content type 一定能通过,先查看兼容性文档。
    • Advanced features。像 prompt caching (用于缓存前缀的 cache_control)、extended thinking,以及某些 tool-use 选项,可能会被忽略或拒绝。如果你的应用依赖这些能力,在迁移基于 Anthropic 的应用之前,务必先做端到端验证。

何时使用

以下情况适合选择 Anthropic-compatible endpoint:

  • 你的应用或 agent stack 已经构建在 Anthropic API 之上(例如 Claude Code、Claude Agent SDK,或使用 Anthropic 风格 tool use 的自定义 agent loops)。
  • 下游工具链(SDK、proxy、evaluator)期望使用 Anthropic schema,而把它们改写为 OpenAI-compatible 的成本高于直接运行一个兼容 endpoint。

对于没有既有集成的新应用, OpenAI-compatible API 仍然是支持面更广的默认选择。如果你主要关心的是可预测的机器可读响应,也建议对比你所选 backend 对 structured outputs 的支持情况。

常见问题

我应该选 OpenAI-compatible 还是 Anthropic-compatible API?

应根据你现有的技术栈来选,而不只是看模型本身。如果你的客户端、agent framework 或 SDK 已经使用 OpenAI schema,那么 OpenAI-compatible endpoint 是最简单的路径。如果它们使用的是 Anthropic schema,那么 Anthropic-compatible endpoint 可以避免重写这层集成。两类 endpoint 背后的模型完全可以相同,变化的只是 API surface。

OpenAI API 和 Anthropic API 有什么区别?

两者都允许应用发送 prompt、接收模型响应、流式接收输出并使用工具,但它们使用的请求和响应 schema 不同。一个兼容 endpoint 必须匹配你的客户端所期望的 schema。

方面OpenAI APIAnthropic API
Main chat endpoint通常是 /v1/chat/completions 或更新的 Responses API endpoints/v1/messages
Client shape围绕 chat completions、responses、tools 和 choices 的 OpenAI SDK 约定围绕 messages、content blocks 和 typed stream events 的 Anthropic SDK 约定
System prompt通常表示为 systemdeveloper message,或等价的 instruction field在 Messages API 中作为顶层 system 字段传递
Authentication header通常是 Authorization: Bearer ...通常是 x-api-key,外加一个 anthropic-version header
Tool useOpenAI 风格的 tool definitions 和 tool call fieldsAnthropic 风格的 tool definitions 和 tool-use content blocks