创建 Anthropic Message

使用 Anthropic Messages 请求形态调用 Genesis 模型,并从 content[] 读取响应内容。该接口不使用 Chat Completions 的 choices[] 响应结构。

POST https://token.moi.matrixorigin.cn/v1/messages

调用前准备

请求地址为 https://token.moi.matrixorigin.cn/v1/messages。准备支持 Messages 的模型 ID,以及个人访问令牌或服务账号 API Key。

下方示例使用:

  • $GENESIS_ACCESS_TOKEN:实际个人访问令牌或服务账号 API Key,通过 Authorization: Bearer Header 传递。

  • $MODEL_ID:要调用的模型 ID,填入请求体的 model 字段。

不要将任意 Chat 模型当作 Messages 模型使用。使用支持 Messages 的模型 ID,并按该模型实际支持的请求格式调用。

请求头

请求头

是否必填

说明

Authorization

使用 Bearer <GENESIS_ACCESS_TOKEN> 传递个人访问令牌或服务账号 API Key。

Content-Type

请求体使用 JSON。

anthropic-version

指定 Anthropic API 版本。

请求体

请求体包含以下字段。

字段路径中的 [] 表示数组中的每一项。例如,messages[].role 表示 messages 数组中每一项的 role 字段。

字段

类型

是否必填

说明

model

string

支持 Anthropic Messages 的模型 ID。

max_tokens

integer

本次请求允许的最大输出 Token 数。

messages

array

按对话顺序传入的消息列表。

messages[].role

string

消息角色,使用 userassistant

messages[].content

string 或 array

文本消息可使用字符串;图文消息使用内容块数组。

system

string 或 array

系统级指令。

stream

boolean

设为 true 时返回 Anthropic Messages SSE 事件;非流式调用可省略或设为 false

tools

array

工具定义,仅在当前模型和服务配置支持时使用。

请求示例

以下示例可使用个人访问令牌或服务账号 API Key:

curl -X POST "https://token.moi.matrixorigin.cn/v1/messages" \
  -H "Authorization: Bearer $GENESIS_ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'anthropic-version: 2023-06-01' \
  -d '{
    "model": "'"$MODEL_ID"'",
    "max_tokens": 256,
    "stream": false,
    "messages": [
      {
        "role": "user",
        "content": "用一句话解释数据血缘。"
      }
    ]
  }'

成功响应

{
  "id": "<MESSAGE_ID>",
  "type": "message",
  "role": "assistant",
  "model": "<MODEL_ID>",
  "content": [
    {
      "type": "text",
      "text": "数据血缘描述数据从来源、处理到消费环节的关系。"
    }
  ],
  "stop_reason": "end_turn"
}

响应中用于读取生成内容的字段如下。

字段路径中的 [] 表示数组中的每一项。例如,content[].text 表示 content 数组中每一项的 text 字段。

字段

类型

说明

id

string

本次 Messages 请求的标识。

type

string

响应对象类型。

model

string

实际处理请求的模型 ID。

content

array

内容块列表。

content[].type

string

内容块类型。响应可以同时包含 thinkingtext 等类型。

content[].text

string

内容块类型为 text 时的生成文本。

content[].thinking

string

内容块类型为 thinking 时的推理内容;仅在响应实际包含时读取。

stop_reason

string 或 null

当前生成结束原因。

不要假定 content[] 的第一项就是文本。遍历内容块并只拼接 typetexttext 字段。

错误响应

接口不使用 codemsgdata 包络。收到非成功 HTTP 状态时,不要从 content[] 读取结果。错误对象由兼容的模型服务返回;除 error.message 外的字段可能省略。

错误对象字段

{
  "error": {
    "message": "<可读错误信息>",
    "type": "<错误类型,可能省略>",
    "code": "<错误代码,可能省略>"
  }
}

错误正文中可能出现的字段如下。

字段

类型

说明

error.message

string

可读错误信息。

error.type

string,可选

上游错误类别。

error.code

string 或 null,可选

上游错误代码。

常见 HTTP 错误

下表说明收到不同 HTTP 状态时应执行的操作。

HTTP 状态码

错误代码

常见原因

建议操作

400

缺少 max_tokens,或消息和可选参数不符合 Messages 形态。

先发送模型、max_tokens 和一条文本用户消息。

401

凭据无效,或没有模型权限。

检查 Bearer 凭据和目标模型范围。

403

凭据无效,或没有模型权限。

检查 Bearer 凭据和目标模型范围。

429

当前服务受到限制或暂时不可用。

降低请求频率,或稍后再次提交请求。

5xx

当前服务受到限制或暂时不可用。

降低请求频率,或稍后再次提交请求。

后续操作

最后更新于