Messages 使用 Anthropic 风格的请求体。与OpenAI聊天相比,它把系统说明放在顶层 system,返回 content 内容块,并使用 stop_reason 描述结束原因。模型品牌相同也不代表当前分组一定支持本接口。

请求地址与请求头#

项目内容
方法与归壹完整地址POST https://univto.com/v1/messages
鉴权x-api-key: 你的归壹API密钥;部分兼容客户端使用Authorization: Bearer,按客户端与线路约定选择其一
协议版本anthropic-version: 2023-06-01
请求类型Content-Type: application/json
最小请求字段model、messages、max_tokens

参数与消息结构#

字段怎么用
model有权限且明确支持Messages的完整模型ID
messagesuser和assistant消息数组;content可为文字或内容块
system顶层系统说明,不要作为messages里的system角色硬塞进去
max_tokens必须填写的正整数生成上限;先为短任务设置合适值
streamfalse为完整返回,true为SSE事件流
temperature / top_p / top_k仅在所选模型支持时使用;思考模式可能另有限制
tools / tool_choice以input_schema声明工具入参;需客户端处理tool_use与tool_result往返
thinking仅对支持相应思考模式和预算参数的模型使用,不能照搬其他品牌字段

最小 curl 示例#

先在本机设置 GUIYI_API_KEY,将 YOUR_MODEL_ID 替换为该令牌可用且支持Messages的完整模型ID。此示例只请求短文字,不主动打开思考或工具能力。

原生Messages非流式示例,会正常计费
curl --fail-with-body https://univto.com/v1/messages \
  -H "x-api-key: ${GUIYI_API_KEY}" \
  -H 'anthropic-version: 2023-06-01' \
  -H 'Content-Type: application/json' \
  --data '{
    "model": "YOUR_MODEL_ID",
    "max_tokens": 256,
    "messages": [{"role": "user", "content": "你好,请用一句话介绍自己。"}],
    "stream": false
  }'

回答不一定只有一个文字块#

字段解释
content[]依次处理内容块;text块含文字,tool_use块是工具调用请求
stop_reason=end_turn这一轮正常结束
stop_reason=max_tokens达到生成上限,回答可能未完整
stop_reason=tool_use需要客户端校验并执行工具,再回传对应结果
usage.input_tokens / output_tokens协议返回的输入、输出计量
cache_creation_input_tokens / cache_read_input_tokens若提供则表示缓存创建、读取计量;按该线路的实际语义及计费说明理解

不要只取 content[0].text;它可能不是文字块。模型返回 tool_use 时,你的程序需要核对工具名及参数,执行允许的操作,再用匹配 tool_use_id 的 tool_result 返回结果。API本身不会替你的程序安全执行任意本机命令。

开启stream时怎样判断完成#

按SSE事件处理 message_start、content_block_start、content_block_delta、content_block_stop、message_delta 与 message_stop。内容分块、结束原因和用量可能出现在不同事件中。HTTP 200、收到几段文字或连接自然结束,都不能替代完整终止事件检查。

其他聊天协议

OpenAI风格的messages是另一套结构。

接入地址怎么填写

Anthropic客户端根地址与完整Messages地址不要混淆。

查看用量含义

不要只凭可见文字长度估算费用。