创建 Message¶
使用 Anthropic Messages 请求格式生成回复,返回文本或推理内容块。
POST https://token.moi.matrixorigin.cn/v1/messages
调用前准备¶
准备用于 Genesis 调用的个人访问令牌或服务账号 API Key。创建和权限配置参阅管理 Genesis 访问凭据。
通过查询可调用模型,选择
capabilities包含messages的模型。
请求体¶
将示例中的 $GENESIS_ACCESS_TOKEN 和 $MODEL_ID 分别替换为访问凭据和所选模型的 ID。
curl -X POST \
"https://token.moi.matrixorigin.cn/v1/messages" \
-H "Authorization: Bearer $GENESIS_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"model": "'"$MODEL_ID"'",
"max_tokens": 256,
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Reply with OK."
}
]
}
],
"stream": false
}'
以下字段覆盖文本消息。图像、文档、工具和显式推理配置需要相应模型能力。
参数 |
类型 |
是否必填 |
说明 |
|---|---|---|---|
|
string |
是 |
所选模型的 ID,取自模型查询结果中的 |
|
integer |
是 |
允许生成的最大 Token 数,应为正整数。 |
|
array of object |
是 |
按对话顺序排列的非空消息列表。 |
|
string |
是 |
消息角色,文本对话使用 |
|
string 或 array of object |
是 |
文本内容或文本块列表。 |
|
string |
文本块中必填 |
文本块填写 |
|
string |
文本块中必填 |
非空文本内容。 |
|
boolean |
否 |
设为 |
成功响应¶
非流式请求返回生成的消息,内容可包含文本块或推理块。
{
"id": "msg-example",
"type": "message",
"role": "assistant",
"model": "MODEL_ID",
"content": [
{
"type": "text",
"text": "OK"
}
],
"stop_reason": "end_turn",
"usage": {
"input_tokens": 12,
"output_tokens": 1
}
}
字段 |
类型 |
说明 |
|---|---|---|
|
string |
本次消息的标识。 |
|
string |
对象类型 |
|
string |
消息角色 |
|
string |
处理请求的模型。 |
|
array of object |
生成的内容块。按类型读取文本或推理内容。 |
|
string |
块类型;文本为 |
|
string |
文本块中的生成文本。 |
|
string |
推理块中的内容。 |
|
string |
推理块返回的签名,存在时保留原值。 |
|
string 或 null |
结束原因,例如 |
|
object |
本次调用的 Token 用量。 |
|
integer |
输入 Token 数。 |
|
integer |
输出 Token 数。 |
|
integer |
模型返回的缓存写入 Token 数,可能省略。 |
|
integer |
模型返回的缓存读取 Token 数,可能省略。 |
流式响应¶
在请求体中将 stream 设为 true,逐段接收模型生成的内容。服务通过服务器发送事件(SSE)返回增量结果,发送 message_stop 后结束消息。
curl -N -X POST \
"https://token.moi.matrixorigin.cn/v1/messages" \
-H "Authorization: Bearer $GENESIS_ACCESS_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"model": "'"$MODEL_ID"'",
"max_tokens": 256,
"messages": [
{
"role": "user",
"content": [
{
"type": "text",
"text": "Reply with OK."
}
]
}
],
"stream": true
}'
event: message_start
data: {"type":"message_start","message":{"id":"msg-example","type":"message","role":"assistant","content":[],"usage":{"input_tokens":12,"output_tokens":0}}}
event: content_block_start
data: {"type":"content_block_start","index":0,"content_block":{"type":"text","text":""}}
event: content_block_delta
data: {"type":"content_block_delta","index":0,"delta":{"type":"text_delta","text":"OK"}}
event: content_block_stop
data: {"type":"content_block_stop","index":0}
event: message_delta
data: {"type":"message_delta","delta":{"stop_reason":"end_turn"},"usage":{"output_tokens":1}}
event: message_stop
data: {"type":"message_stop"}
字段 |
类型 |
说明 |
|---|---|---|
|
string |
事件类型,与 SSE 的事件名一致;例如 |
|
object |
|
|
integer |
内容块的序号,用于关联同一内容块的开始、增量和结束事件。 |
|
object |
|
|
string |
初始内容块类型,文本块为 |
|
string |
文本块的初始文本。 |
|
object |
内容增量或消息状态更新,按事件类型读取。 |
|
string |
内容增量类型,文本增量为 |
|
string |
本次返回的增量文本,追加到同一内容块。 |
|
string |
推理增量事件中的内容,存在时读取。 |
|
string |
|
|
object |
|
|
integer |
已生成的输出 Token 数。 |
按完整 SSE 事件缓冲并解析响应。message_start 表示消息开始;按内容块序号处理 content_block_start、content_block_delta 和 content_block_stop。message_delta 可返回结束原因和用量,message_stop 表示消息结束。未收到 message_stop 就断开连接时,已收到的内容可能不完整。
错误响应¶
缺少必填模型 ID 时返回 HTTP 400。补充模型 ID 后重新提交。
{
"error": {
"message": "missing required parameter: model",
"type": "invalid_request",
"code": "invalid_request"
}
}
字段 |
类型 |
说明 |
|---|---|---|
|
object |
错误信息。 |
|
string |
错误原因;示例表示缺少模型 ID。 |
|
string |
错误类别,模型服务返回时可能省略。 |
|
string 或 null |
错误代码,模型服务返回时可能省略。 |
后续操作¶
在生成前检查消息输入长度时,使用计算输入 Token 数。