创建对话请求(Anthropic)

Token Hubs 兼容 Claude 官方 POST /v1/messages 规范,已接入 Claude 生态的团队只需将 base_url 与 api_key 切换到本平台即可复用现有代码,并支持流式响应、工具调用与多模态。

请求

Endpoint

POST https://api.token-hubs.com/v1/messages

Headers

Authorization: string必填

Bearer Token,格式:Bearer YOUR_API_KEY

Content-Type: string必填

请求体格式,固定为 application/json

anthropic-version: string

API 版本号,例如:2023-06-01

请求示例

curl -X POST 'https://api.token-hubs.com/v1/messages' \
  -H 'Content-Type: application/json' \
  -H 'Authorization: Bearer YOUR_API_KEY' \
  -H 'anthropic-version: 2023-06-01' \
  -d '{
    "model": "claude-opus-4-8",
    "max_tokens": 1024,
    "messages": [
        {"role": "user", "content": "Hello, world"}
    ],
    "thinking": {"type": "adaptive"},
    "output_config": {"effort": "high"}
}'

claude-opus-4-8 仅支持自适应思考(thinking={"type": "adaptive"}),并通过 output_config.effort(low / medium / high / xhigh / max)控制思考与输出的投入程度;temperature、top_p、top_k 及固定思考预算 budget_tokens 已不再支持。

Request Body

参数按用途分组展示,常用参数默认展开,进阶参数收纳在底部折叠区,按需点开即可。

核心参数

model: ModelParam必填

本次调用使用的模型 ID,例如:claude-opus-4-8 等;也支持传入字符串形式的自定义/未来模型名。

输入对话消息列表(最多 100,000 条)。Claude 以「用户 / 助手」交替轮次进行对话:

max_tokens: int必填

在模型停止前最多生成的 token 数(最小值 ≥ 1)。模型可能会在达到上限前自然结束;不同模型支持的最大值不同,请参考模型文档。

system: string | Iterable[TextBlockParam]

系统提示词,用于为 Claude 提供统一的角色设定与行为准则(如「你是一名资深 Python 开发助手」等)。可以是简单字符串,也可以是文本块数组。

思考与输出控制

扩展思考配置。claude-opus-4-8 仅支持「自适应思考」,由模型自行决定何时思考、思考多深:

输出与思考投入程度的配置。

工具调用

控制模型如何使用提供的工具:

定义模型可以使用的工具列表(客户端工具或服务端工具):

流式输出

stream: boolean

是否以 Server-Sent Events 形式增量流式返回结果,默认 false。设为 true 时按 SSE 逐块返回;大 max_tokens 请求建议开启流式以避免请求超时。

高级参数(点击展开)
stop_sequences: Sequence[str]

自定义停止序列列表。模型生成内容遇到任一序列会立即停止,此时响应的 stop_reason 为 "stop_sequence",同时 stop_sequence 字段会返回命中的具体序列。

控制本次请求使用的服务层级:

metadata: MetadataParam

描述本次请求的元数据对象,便于你在业务侧做审计、统计、追踪等。

user_id: string

终端用户的标识(例如经哈希后的用户 ID),用于安全审计和用量分析。

Response Body

id: string

对象的唯一标识符。ID 的格式和长度可能会随着时间变化。

模型生成的内容,为一组内容块数组,每个块有一个 type 决定结构。示例:

[{"type": "text", "text": "Hi, I'm Claude."}]
model: Model

实际用于完成本次补全的模型 ID,例如 claude-opus-4-8 等,也可为字符串。

role: string

生成消息的会话角色。对于 Claude Messages 响应,该字段始终为 "assistant"。

本次生成停止的原因,可能值:

stop_sequence: string | null

如果触发了自定义停止序列,则为实际命中的那条 stop 序列;否则为 null。

type: string

对象类型。对于 Messages 响应,该字段始终为 "message"。

计费与速率限制相关的 token 用量统计。

响应示例

{
  "id": "msg_013Zva2CMHLNnXjNJJKqJ2EF",
  "content": [
    {
      "citations": [
        {
          "cited_text": "cited_text",
          "document_index": 0,
          "document_title": "document_title",
          "end_char_index": 0,
          "file_id": "file_id",
          "start_char_index": 0,
          "type": "char_location"
        }
      ],
      "text": "Hi! My name is Claude.",
      "type": "text"
    }
  ],
  "model": "claude-opus-4-8",
  "role": "assistant",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "type": "message",
  "usage": {
    "cache_creation": {
      "ephemeral_1h_input_tokens": 0,
      "ephemeral_5m_input_tokens": 0
    },
    "cache_creation_input_tokens": 2051,
    "cache_read_input_tokens": 2051,
    "input_tokens": 2095,
    "output_tokens": 503,
    "server_tool_use": {
      "web_search_requests": 0
    },
    "service_tier": "standard"
  }
}

代码示例

Python 示例

使用 Anthropic SDK(推荐)

from anthropic import Anthropic

client = Anthropic(
    base_url='https://api.token-hubs.com',
    api_key='YOUR_API_KEY'
)

非流式调用

message = client.messages.create(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[
        {"role": "user", "content": "你好,请介绍一下你自己"}
    ]
)

print(message.content[0].text)

流式调用

from anthropic import Anthropic

client = Anthropic(
    base_url='https://api.token-hubs.com',
    api_key='YOUR_API_KEY'
)

with client.messages.stream(
    model="claude-opus-4-8",
    max_tokens=1024,
    messages=[{"role": "user", "content": "讲个笑话"}]
) as stream:
    for text in stream.text_stream:
        print(text, end='', flush=True)

Node.js 示例

使用 Anthropic SDK(推荐)

const Anthropic = require('@anthropic-ai/sdk');

const client = new Anthropic({
    baseURL: 'https://api.token-hubs.com',
    apiKey: 'YOUR_API_KEY'
});

// 非流式调用
async function main() {
    const message = await client.messages.create({
        model: 'claude-opus-4-8',
        max_tokens: 1024,
        messages: [
            { role: 'user', content: '你好,请介绍一下你自己' }
        ]
    });

    console.log(message.content[0].text);
}

main();

流式调用

const Anthropic = require('@anthropic-ai/sdk');

const client = new Anthropic({
    baseURL: 'https://api.token-hubs.com',
    apiKey: 'YOUR_API_KEY'
});

async function main() {
    const stream = await client.messages.stream({
        model: 'claude-opus-4-8',
        max_tokens: 1024,
        messages: [{ role: 'user', content: '讲个笑话' }]
    });

    for await (const chunk of stream) {
        if (chunk.type === 'content_block_delta' && 
            chunk.delta.type === 'text_delta') {
            process.stdout.write(chunk.delta.text);
        }
    }
}

main();