外观
Anthropic Messages
Messages API 使用 Anthropic 原生的消息结构,适合 Anthropic SDK、Claude 生态工具,以及需要保留原生内容块格式的应用。
模型名称不是固定值
下面的 your-claude-model 是占位符。请在 FlashCoding.AI 控制台确认当前账户可用的模型 ID、上下文限制和协议支持情况。
请求约定
原生 Messages 请求发送到:
text
POST https://flashcoding.ai/v1/messages1
需要以下请求头:
| 请求头 | 值 |
|---|---|
x-api-key | sk-your-key |
anthropic-version | 2023-06-01 |
content-type | application/json |
anthropic-version 表示协议版本,不是模型版本。除非控制台另有说明,建议显式发送它。
最小请求
bash
curl https://flashcoding.ai/v1/messages \
-H "x-api-key: sk-your-key" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "your-claude-model",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "请只回复:连接成功"}
]
}'1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
成功响应的 content 是内容块数组。纯文本结果通常需要读取所有 type 为 text 的块,而不是假定 content 本身就是字符串。
系统提示词与多轮对话
Anthropic Messages 的系统提示词放在顶层 system 字段中,不要把 system 作为 messages 中的角色。
bash
curl https://flashcoding.ai/v1/messages \
-H "x-api-key: sk-your-key" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "your-claude-model",
"max_tokens": 1024,
"system": "你是一个回答简洁的中文助手。",
"messages": [
{"role": "user", "content": "我的项目代号是 Sakura。"},
{"role": "assistant", "content": "好的,我记住了。"},
{"role": "user", "content": "项目代号是什么?"}
]
}'1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
Messages API 通常是无状态的。多轮对话需要由你的应用保存历史,并在下一次请求中重新发送必要上下文。
流式响应
设置 "stream": true 可以请求事件流:
bash
curl -N https://flashcoding.ai/v1/messages \
-H "x-api-key: sk-your-key" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{
"model": "your-claude-model",
"max_tokens": 1024,
"messages": [
{"role": "user", "content": "用三点说明如何保护 API Key。"}
],
"stream": true
}'1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
流式响应包含不同类型的事件。生产代码应按事件类型解析,不能把每一行都当成文本增量。是否支持流式以及具体事件,以控制台说明和实际响应为准。
使用 Anthropic Python SDK
python
import os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["FLASHCODING_API_KEY"],
base_url="https://flashcoding.ai",
)
message = client.messages.create(
model="your-claude-model",
max_tokens=1024,
messages=[{"role": "user", "content": "请只回复:连接成功"}],
)
for block in message.content:
if block.type == "text":
print(block.text)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
不同 SDK 版本对自定义 Base URL 的拼接方式可能不同。如果最终请求出现重复的 /v1 或缺少 /v1/messages,打开 SDK 的 HTTP 调试日志,按Base URL 与协议调整。
与 OpenAI 格式的区别
| 项目 | Anthropic Messages | OpenAI Chat Completions |
|---|---|---|
| 鉴权头 | x-api-key(当前网关也接受 Authorization: Bearer ...) | Authorization: Bearer ... |
| 系统提示词 | 顶层 system | messages 中的 system 角色 |
| 输出正文 | content 内容块 | choices[0].message.content |
| 输出上限 | max_tokens | 依接口与模型而定 |
如果某个客户端只支持 OpenAI 格式,可改用 /v1/chat/completions 并选择控制台中标记为兼容的模型。不要把 Anthropic 请求体直接发到 OpenAI 路径。
常见失败原因
401:密钥缺失、无效或已被撤销;同时检查请求头中的密钥值是否完整。400:缺少max_tokens、消息结构错误,或发送了模型不支持的参数。404:Base URL 拼接错误,或模型 ID 不存在。429:触发当前账户或上游渠道的频率限制;遵循响应中的重试提示(若有)。
