Caicaini
免费开始

能力

视觉

把图片和文本一起放在同一个 content 数组里。模型会同时阅读图片与文本——没有单独的视觉端点,也不需要两步流程。

哪些模型支持视觉

目前五个虚拟 ID 都接受图片内容块。每个模型的能力开关通过 GET /v1/models 暴露为 supports_vision——如果你想在客户端 UI 上做能力开关,请在运行时读取它。

携带图片的基本调用

把 user 消息构造为 content 数组。顺序很重要——先放图片,再放问题。混合内容支持任意顺序,但模型更喜欢「先上下文、后问题」。

# Encode an image and embed it as a base64 content block.
B64=$(base64 -w0 receipt.jpg 2>/dev/null || base64 receipt.jpg)
curl https://caicaini.com/v1/messages \
  -H "Authorization: Bearer cai_api_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"caicaini/sonnet\",
    \"max_tokens\": 512,
    \"messages\": [{
      \"role\": \"user\",
      \"content\": [
        {\"type\": \"image\", \"source\": {\"type\": \"base64\", \"media_type\": \"image/jpeg\", \"data\": \"${B64}\"}},
        {\"type\": \"text\", \"text\": \"Extract every line item with price into JSON.\"}
      ]
    }]
  }"

图片来源

我们接受两种来源类型。生产环境最稳的是内联 base64,因为请求是自包含的——没有额外的网络跳转,也不会因图床中途不可用而失败。

  • base64——把原始字节用标准 base64 编码后填入 data 字段。media_type 设为 image/jpegimage/pngimage/webpimage/gif 之一。
  • url——我们在服务端拉取图片。URL 必须是 https://,5 秒内返回 200,并提供受支持的 MIME 类型。私有 URL(带签名的 S3 链接、预签名 R2 链接)只要请求时签名仍有效就可以。
url 形式
{
  "type": "image",
  "source": {
    "type": "url",
    "url": "https://example.com/photos/receipt.jpg"
  }
}

尺寸与数量限制

  • 每轮最多 20 张图片。超出会以 type 为 invalid_request_error 拒绝。
  • 每张图最大 5 MB,分辨率上限 8000 × 8000 像素。我们会在服务端把过大的图片下采样到对模型友好的分辨率,再据此计费输入 token。
  • 请求体总大小最大 16 MB。算上 base64 的开销,大约能放下两打照片。

实用建议

  • 发送前裁掉无关空白。更小、更清晰的图片更省成本,模型也读得更准。
  • 对于文档,请先在客户端把每页 PDF 渲染为 PNG 再发送。我们目前不直接接受 application/pdf
  • 用系统提示来引导——比如「只用合法 JSON 回复,不要做总结。」对 OCR 类提取任务效果很好。
  • 对延迟敏感的视觉任务,先路由到 caicaini/haiku,仅在结果不确定时升级到 caicaini/sonnet。对长输入的高吞吐文档问答,请固定使用 caicaini/kimi。详见 模型