Appearance
Messages API (推荐)
通过 Anthropic 原生协议创建 Claude 对话。DouDi.ai 完全兼容 Anthropic Messages API,你可以直接使用官方 SDK。
推荐使用 Anthropic 原生协议调用 Claude 模型。 相比 OpenAI 兼容协议转发,原生协议具备以下优势:
- 原生 Prompt Caching —
system指令独立传递,自动享受 Anthropic 原生缓存机制,多轮对话前缀命中率更高,可节省最高 90% 输入 token 费用 - 完整特性支持 — 原生支持 Extended Thinking、Citations、PDF 输入等 Claude 独有能力,无协议转换损耗
- 更低延迟 — 无需 OpenAI → Anthropic 协议转换,请求直达上游
端点
http
POST https://doudi.ai/v1/messages认证
Anthropic 协议使用 x-api-key Header:
text
x-api-key: <你的 DOUDI_API_KEY>
anthropic-version: 2023-06-01请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | ✅ | 模型标识,使用 模型广场/价格页面 或 Anthropic Models API 返回的当前可用 ID |
max_tokens | number | ✅ | 最大生成 token 数 |
messages | array | ✅ | 消息数组 |
system | string | — | 系统提示词 |
temperature | number | — | 采样温度 0-1 |
top_p | number | — | 核采样参数 |
top_k | number | — | Top-K 采样 |
stream | boolean | — | 是否启用流式响应 |
tools | array | — | 工具定义 |
tool_choice | object | — | 工具选择策略 |
thinking | object | — | Claude 思考模式配置,不同模型版本的取值不同 |
output_config | object | — | Claude 4.6+ 自适应思考的输出配置,如 effort |
Message 格式
typescript
interface Message {
role: 'user' | 'assistant'
content: string | ContentBlock[]
}
type ContentBlock =
| { type: 'text'; text: string }
| { type: 'image'; source: { type: 'base64'; media_type: string; data: string } }
| { type: 'tool_use'; id: string; name: string; input: object }
| { type: 'tool_result'; tool_use_id: string; content: string }Claude 思考模式
Claude-family 模型的思考参数会随上游版本变化。请先在 模型广场/价格页面 或 Anthropic Models API 确认当前模型能力,再选择 enabled + budget_tokens 或 adaptive。不要把两类参数混用到同一个请求里。
budget_tokens 必须小于 max_tokens。思考过程会消耗并计入输出 token;如果只需要最终答案,可按上游支持情况使用 display: "omitted" 减少思考内容返回。
手动思考
适用于支持显式 budget_tokens 的模型:
json
{
"model": "<ANTHROPIC_MODEL_ID>",
"max_tokens": 16000,
"thinking": {
"type": "enabled",
"budget_tokens": 10000
},
"messages": [
{
"role": "user",
"content": "请深入分析这个复杂问题..."
}
]
}自适应思考
适用于支持 adaptive 的模型。output_config.effort 可按任务复杂度设置为 low、medium 或 high。
json
{
"model": "<ANTHROPIC_MODEL_ID>",
"max_tokens": 16000,
"thinking": {
"type": "adaptive"
},
"output_config": {
"effort": "medium"
},
"messages": [
{
"role": "user",
"content": "请深入分析这个复杂问题..."
}
]
}如果模型只支持 adaptive,不要发送手动 budget_tokens,否则上游可能返回参数错误。
请求示例
cURL
bash
curl https://doudi.ai/v1/messages \
-H "x-api-key: $DOUDI_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "<ANTHROPIC_MODEL_ID>",
"max_tokens": 1024,
"system": "你是一个专业的编程助手。",
"messages": [
{"role": "user", "content": "用 Python 写一个快速排序"}
]
}'Python
python
import anthropic
client = anthropic.Anthropic(
base_url="https://doudi.ai/v1",
api_key="<你的 DOUDI_API_KEY>"
)
message = client.messages.create(
model="<ANTHROPIC_MODEL_ID>",
max_tokens=1024,
system="你是一个专业的编程助手。",
messages=[
{"role": "user", "content": "用 Python 写一个快速排序"}
]
)
print(message.content[0].text)TypeScript
typescript
import Anthropic from '@anthropic-ai/sdk'
const client = new Anthropic({
baseURL: 'https://doudi.ai/v1',
apiKey: '<你的 DOUDI_API_KEY>'
})
const message = await client.messages.create({
model: '<ANTHROPIC_MODEL_ID>',
max_tokens: 1024,
system: '你是一个专业的编程助手。',
messages: [
{ role: 'user', content: '用 Python 写一个快速排序' }
]
})
console.log(message.content[0].text)响应格式
json
{
"id": "msg_abc123",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "以下是 Python 快速排序的实现..."
}
],
"model": "<ANTHROPIC_MODEL_ID>",
"stop_reason": "end_turn",
"usage": {
"input_tokens": 25,
"output_tokens": 200
}
}流式响应
Python
python
with client.messages.stream(
model="<ANTHROPIC_MODEL_ID>",
max_tokens=1024,
messages=[{"role": "user", "content": "讲一个故事"}]
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)TypeScript
typescript
const stream = client.messages.stream({
model: '<ANTHROPIC_MODEL_ID>',
max_tokens: 1024,
messages: [{ role: 'user', content: '讲一个故事' }]
})
for await (const event of stream) {
if (event.type === 'content_block_delta' && event.delta.type === 'text_delta') {
process.stdout.write(event.delta.text)
}
}DouDi.ai 的 Anthropic 协议支持 Vision、Tool Use、Prompt Caching、Extended Thinking 等原生能力;具体能力以当前模型元数据、上游支持和账号权限为准。
