Caicaini
免费开始

端点

POST /v1/messages

主端点。发送一组消息,返回模型的回复。支持系统提示、多轮对话、视觉、工具、深度思考和流式响应。

基本调用

三个必填字段:modelmax_tokensmessagessystem 字段可选,但建议填写以引导语气和约束。

curl https://caicaini.com/v1/messages \
  -H "Authorization: Bearer cai_api_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "caicaini/sonnet",
    "max_tokens": 1024,
    "system": "You are a senior backend engineer. Be terse.",
    "messages": [
      {"role": "user", "content": "Why prefer queues over cron for retries?"}
    ]
  }'

请求字段

字段类型说明
model必填string五个虚拟 ID 之一。详见 模型
max_tokens必填integer模型可生成 token 数的硬上限。我们按实际使用计费,但绝不会超过这个上限。
messages必填array对话历史。user 与 assistant 消息交替,并以 user 消息结尾。
systemstring系统提示。出现在上下文最顶端,仅一次。用来引导语气、输出格式和约束。
temperaturenumber 0–1默认 1。值越低,模型越倾向于确定性输出。
top_pnumber 0–1核采样。建议只设置 temperature 或 top_p 之一,不要同时设置。
stop_sequencesstring[]最多四个字符串。模型一旦生成其中任意一个就停止。
streamboolean为 true 时,响应是 SSE 流。详见 流式响应
toolsTool[]模型可以调用的函数定义。详见 工具
tool_choiceobject强制使用某个工具,或设置 { type: "any" } 要求必须调用任意工具。
thinkingobjectcaicaini/opus 上启用扩展推理。详见 深度思考
metadataobject可选 { user_id?: string }。便于滥用排查和按用户维度统计。

messages 数组

每条消息都有 role"user""assistant")和 content。content 可以是普通字符串,也可以是带类型的内容块数组。当你需要在同一轮里混合图片、工具结果或多段文本时,使用数组形式。

curl https://caicaini.com/v1/messages \
  -H "Authorization: Bearer cai_api_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "caicaini/auto",
    "max_tokens": 512,
    "messages": [
      {"role": "user",      "content": "Plan a 3-day Lisbon trip in October."},
      {"role": "assistant", "content": "Sure. Day 1: Alfama walking tour..."},
      {"role": "user",      "content": "Skip the tram. I want food only."}
    ]
  }'

响应

响应 · 200 OK
{
  "id": "msg_01H8fkx2N3p4q5r6s7t8u9v0wx",
  "type": "message",
  "role": "assistant",
  "content": [
    { "type": "text", "text": "Cron pretends a job is fire-and-forget..." }
  ],
  "model": "caicaini/sonnet",
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 38,
    "output_tokens": 184,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "credits_consumed": 92
  }
}

响应字段

字段类型说明
idstring本条消息的唯一 id。建议保留以便提工单排查。
type"message"/v1/messages 永远是 "message"。
role"assistant"响应里永远是 "assistant"。
contentContentBlock[]类型化内容块的数组。至少有一项。请遍历处理——只看 text 的假设在使用工具或思考时会出错。
modelstring你请求的虚拟 ID。我们不会暴露底层供应商名称。
stop_reasonstring"end_turn"、"max_tokens"、"stop_sequence"、"tool_use" 之一。
usage.input_tokensinteger输入 token 数(不含缓存读取的部分)。
usage.output_tokensinteger已生成的 token 数,包含 thinking 块的 token。
usage.cache_creation_input_tokensinteger本轮写入提示缓存的 token 数。
usage.cache_read_input_tokensinteger本轮从提示缓存读取的 token 数。
usage.credits_consumedinteger本轮实际扣除的积分(权威值)。Caicaini 自有扩展。

POST /v1/messages/count_tokens

只返回请求体的输入 token 数,不会真正调用模型。可用于预算预估和路由决策。免费,但与 /v1/messages 共享速率限制。

curl https://caicaini.com/v1/messages/count_tokens \
  -H "Authorization: Bearer cai_api_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "caicaini/sonnet",
    "messages": [
      {"role": "user", "content": "How many tokens is this prompt?"}
    ]
  }'

限制

  • 请求体最大 16 MB。多数图片足够;非常大的视觉负载请在客户端拆分或先行摘要。
  • 对话长度仅受模型上下文窗口限制。详见 模型 响应中的 context_window
  • max_tokens 不得超过对应模型的 max_output_tokens