完整文档索引见 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 Code 和 Claude 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 字段都受支持。像
model、messages和max_tokens这样的常见字段通常没问题,但再往外扩展,兼容性就会变薄。比如:- Modalities。官方 Anthropic API 接受
"image"和"document"之类的类型。对许多 open-source LLM 来说,这些类型根本不受支持。不要假设某种 content type 一定能通过,先查看兼容性文档。 - Advanced features。像
prompt caching
(用于缓存前缀的
cache_control)、extended thinking,以及某些 tool-use 选项,可能会被忽略或拒绝。如果你的应用依赖这些能力,在迁移基于 Anthropic 的应用之前,务必先做端到端验证。
- Modalities。官方 Anthropic API 接受
何时使用
以下情况适合选择 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 API | Anthropic 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 | 通常表示为 system 或 developer message,或等价的 instruction field | 在 Messages API 中作为顶层 system 字段传递 |
| Authentication header | 通常是 Authorization: Bearer ... | 通常是 x-api-key,外加一个 anthropic-version header |
| Tool use | OpenAI 风格的 tool definitions 和 tool call fields | Anthropic 风格的 tool definitions 和 tool-use content blocks |