Messages API
使用 Anthropic Messages API 进行对话生成,兼容官方 Anthropic 格式。
Messages API 完全兼容 Anthropic 官方 /v1/messages 格式, 可直接搭配官方 anthropic SDK、Claude Code 等 Anthropic 客户端使用,只需替换 base_url 与 API Key 即可。 支持多轮对话、流式输出、扩展思考(Extended Thinking)以及工具调用(Tool Use)。
除 Claude 系列外,该端点同样可路由到 GPT、Gemini、DeepSeek 等模型;平台会自动在 Anthropic 格式与上游 Provider 之间完成协议转换。
用 AI 编程助手接入?
一键复制本页文档的纯文本版,粘贴给 Claude Code、Cursor、ChatGPT 等大模型,让它照着帮你写接入代码。
端点与鉴权
POST https://api.aideskapp.com/v1/messages
通过请求头进行鉴权,与 Anthropic 官方保持一致:
x-api-keysk-aidesk-YOUR_KEY平台 API Key(也可用Authorization: Bearer传入)anthropic-version2023-06-01Anthropic API 版本,建议固定填写content-typeapplication/json请求体为 JSON
| 请求头 | 值 | 说明 |
|---|---|---|
| x-api-key | sk-aidesk-YOUR_KEY | 平台 API Key(也可用 Authorization: Bearer 传入) |
| anthropic-version | 2023-06-01 | Anthropic API 版本,建议固定填写 |
| content-type | application/json | 请求体为 JSON |
核心请求参数
modelstring必填模型 ID,如 "claude-sonnet-5-5"、"gpt-6.1-sol"、"gemini-3.8-flash"messagesarray必填对话消息数组,每条含 role(user/assistant)和 content(字符串或内容块数组)max_tokensinteger必填本次生成的最大 token 数systemstring | array可选系统提示,可为字符串或内容块数组temperaturefloat可选采样温度,0.0 - 1.0,默认由模型决定top_pfloat可选核采样参数,0.0 - 1.0stop_sequencesarray可选自定义停止序列,命中后停止生成streamboolean可选是否启用 SSE 流式响应,默认 falsetoolsarray可选工具定义列表,启用 Tool Usetool_choiceobject | string可选工具选择策略,如 {"type": "auto"}thinkingobject可选扩展思考配置,如 {"type": "enabled", "budget_tokens": 10000}
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| model | string | 必填 | 模型 ID,如 "claude-sonnet-5-5"、"gpt-6.1-sol"、"gemini-3.8-flash" |
| messages | array | 必填 | 对话消息数组,每条含 role(user/assistant)和 content(字符串或内容块数组) |
| max_tokens | integer | 必填 | 本次生成的最大 token 数 |
| system | string | array | 可选 | 系统提示,可为字符串或内容块数组 |
| temperature | float | 可选 | 采样温度,0.0 - 1.0,默认由模型决定 |
| top_p | float | 可选 | 核采样参数,0.0 - 1.0 |
| stop_sequences | array | 可选 | 自定义停止序列,命中后停止生成 |
| stream | boolean | 可选 | 是否启用 SSE 流式响应,默认 false |
| tools | array | 可选 | 工具定义列表,启用 Tool Use |
| tool_choice | object | string | 可选 | 工具选择策略,如 {"type": "auto"} |
| thinking | object | 可选 | 扩展思考配置,如 {"type": "enabled", "budget_tokens": 10000} |
请求示例
使用官方 Anthropic Python SDK:
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.aideskapp.com",
api_key="sk-aidesk-YOUR_KEY",
)
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=500,
system="You are a helpful assistant.",
messages=[
{"role": "user", "content": "你好,请介绍一下你自己"}
],
)
print(message.content[0].text)或使用 cURL:
curl https://api.aideskapp.com/v1/messages \
-H "x-api-key: sk-aidesk-YOUR_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"max_tokens": 500,
"messages": [
{"role": "user", "content": "你好,请介绍一下你自己"}
]
}'响应字段说明
idstring消息的唯一标识符,如msg_xxxtypestring固定为"message"rolestring固定为"assistant"contentarray内容块数组,每块含type:text/thinking/tool_usemodelstring实际使用的模型 IDstop_reasonstringend_turn/max_tokens/stop_sequence/tool_usestop_sequencestring命中的停止序列,未命中为nullusageobjectToken 用量:input_tokens、output_tokens、cache_creation_input_tokens、cache_read_input_tokens
| 字段 | 类型 | 说明 |
|---|---|---|
| id | string | 消息的唯一标识符,如 msg_xxx |
| type | string | 固定为 "message" |
| role | string | 固定为 "assistant" |
| content | array | 内容块数组,每块含 type:text / thinking / tool_use |
| model | string | 实际使用的模型 ID |
| stop_reason | string | end_turn / max_tokens / stop_sequence / tool_use |
| stop_sequence | string | 命中的停止序列,未命中为 null |
| usage | object | Token 用量:input_tokens、output_tokens、cache_creation_input_tokens、cache_read_input_tokens |
响应示例
{
"id": "msg_01XFDUDYJgAACzvnptvVoYEL",
"type": "message",
"role": "assistant",
"content": [
{
"type": "text",
"text": "你好!我是 AI 助手,有什么可以帮你的吗?"
}
],
"model": "claude-sonnet-5-5",
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": {
"input_tokens": 25,
"output_tokens": 18,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}流式响应
设置 "stream": true 后,响应以 Server-Sent Events (SSE) 返回, 事件类型依次为 message_start、content_block_start、content_block_delta、content_block_stop、message_delta、message_stop。文本通过 content_block_delta 的 delta.text 增量传递。
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.aideskapp.com",
api_key="sk-aidesk-YOUR_KEY",
)
with client.messages.stream(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "写一首关于春天的诗"}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)扩展思考(Extended Thinking)
通过 thinking 参数开启深度思考,模型会先输出 thinking 内容块再给出回答,适用于数学、逻辑等复杂任务。
from anthropic import Anthropic
client = Anthropic(
base_url="https://api.aideskapp.com",
api_key="sk-aidesk-YOUR_KEY",
)
message = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=2048,
thinking={"type": "enabled", "budget_tokens": 10000},
messages=[
{"role": "user", "content": "如果一个笼子里有兔子和鸡,共 35 个头、94 只脚,兔子有几只?"}
],
)
for block in message.content:
if block.type == "thinking":
print("【思考】", block.thinking)
elif block.type == "text":
print("【回答】", block.text)Token 计数
调用 POST /v1/messages/count_tokens 可在不实际生成内容的情况下预估输入 Token 数, 请求体与 Messages API 一致(无需 max_tokens)。
curl https://api.aideskapp.com/v1/messages/count_tokens \
-H "x-api-key: sk-aidesk-YOUR_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-5-5",
"messages": [
{"role": "user", "content": "你好,请介绍一下你自己"}
]
}'
# => {"input_tokens": 25}常见错误码
401authentication_errorAPI Key 无效或已过期403permission_denied余额不足或无权访问该模型404not_found_error模型不存在或未启用429rate_limit_error请求频率超限,请稍后重试500api_error上游 Provider 返回错误529overloaded_error服务暂时过载,请稍后重试
| HTTP 状态码 | 类型 | 说明 |
|---|---|---|
| 401 | authentication_error | API Key 无效或已过期 |
| 403 | permission_denied | 余额不足或无权访问该模型 |
| 404 | not_found_error | 模型不存在或未启用 |
| 429 | rate_limit_error | 请求频率超限,请稍后重试 |
| 500 | api_error | 上游 Provider 返回错误 |
| 529 | overloaded_error | 服务暂时过载,请稍后重试 |