视觉理解 ​

LongCat-2.5-Preview 模型支持在文本之外输入图片和视频,你可以让模型描述图片、识别截图中的文字、分析图表,或理解视频内容。

传入图片 ​

共有两种方式向模型提供图片,均使用标准的 OpenAI 兼容对话补全格式,即 content 为一个块(block)数组,而非纯字符串。

方式一:Base64 编码图片(内联) ​

将图片编码后以 data: URL 的形式直接嵌入请求,这是本地文件最简单的方式。Base64 数据会计入请求体大小限制(见限制)。

python
import base64
from openai import OpenAI

client = OpenAI(
    api_key="YOUR_API_KEY",
    base_url="https://api.longcat.chat/openai"
)

with open("image.jpg", "rb") as f:
    b64 = base64.b64encode(f.read()).decode("utf-8")

response = client.chat.completions.create(
    model="LongCat-2.5-Preview",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "这张图片里有什么?"},
                {
                    "type": "image_url",
                    "image_url": {"url": f"data:image/jpeg;base64,{b64}"},
                },
            ],
        }
    ],
)
print(response.choices[0].message.content)
bash
curl https://api.longcat.chat/openai/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "model": "LongCat-2.5-Preview",
    "messages": [
      {
        "role": "user",
        "content": [
          {"type": "text", "text": "这张图片里有什么?"},
          {"type": "image_url", "image_url": {"url": "data:image/jpeg;base64,<BASE64_DATA>"}}
        ]
      }
    ]
  }'

方式二:外部图片 URL ​

传入一个可公开访问的 http(s) 链接,模型会自动下载图片。

python
response = client.chat.completions.create(
    model="LongCat-2.5-Preview",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "描述一下这张图片。"},
                {
                    "type": "image_url",
                    "image_url": {"url": "https://example.com/image.jpg"},
                },
            ],
        }
    ],
)
print(response.choices[0].message.content)

传入视频 ​

视频仅支持通过 URL 方式传入,模型会自动下载并解析视频内容。同样使用 content 块数组形式,视频以 video_url 块承载:

python
response = client.chat.completions.create(
    model="LongCat-2.5-Preview",
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "这个视频里发生了什么?"},
                {
                    "type": "video_url",
                    "video_url": {"url": "https://example.com/video.mp4"},
                },
            ],
        }
    ],
)
print(response.choices[0].message.content)

Token 用量 ​

图片和视频会根据其尺寸换算成 Token,并与文本 Token 一起计费。

图片 Token 数的估算公式:N_image = 图片像素总数 ÷ 784(每个视觉 Token 对应 28 × 28 像素)。若统计实际 PromptTokens,还需要增加 <img_start> 和 <img_end> 两个特殊 Token,即图片带来的 PromptTokens 增量 ≈ N_image + 2。

你也可以使用下面的计算器估算单张图片的 Token 消耗:

图片 Token 计算

计算公式: N = (W × H) ÷ 784

×
预估视觉 Tokens--

估算值,实际 token 数量以接口返回的 usage 为准。

限制 ​

图片限制 ​

限制项数值
支持格式PNG、JPG、JPEG、WebP、GIF(不支持 SVG、HEIC/HEIF 等)
传入形式Base64 编码、URL
原始宽高比超过 200:1 直接报错
单张图片大小不超过 10 MB
单请求图片数量不超过 50 张(暂定)

视频限制(暂定) ​

限制项数值
支持格式MP4、MOV、MKV、AVI、WebM
传入形式仅支持 URL
单个视频大小不超过 50 MB
视频时长不超过 1 小时

接口信息 ​

OpenAI 兼容接口 ​

视觉理解使用标准的 OpenAI 兼容对话补全端点:

  • 请求路径:POST https://api.longcat.chat/openai/v1/chat/completions
  • 模型名称:LongCat-2.5-Preview
  • 图片内容块:{"type": "image_url", "image_url": {"url": "..."}},url 支持公网 URL 或 data: URL(Base64)
  • 视频内容块:{"type": "video_url", "video_url": {"url": "..."}},url 仅支持公网 URL

Anthropic 兼容接口 ​

除 OpenAI 兼容端点外,也支持通过 Anthropic 兼容的 /messages 端点传入图片(base_url 为 https://api.longcat.chat/anthropic)。区别在于图片内容块的结构:Anthropic 使用 image 块,其 source 对象的 type 为 base64 或 url 之一:

python
import anthropic

client = anthropic.Anthropic(
    api_key="YOUR_API_KEY",
    base_url="https://api.longcat.chat/anthropic"
)

message = client.messages.create(
    model="LongCat-2.5-Preview",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "这张图片里有什么?"},
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/jpeg",
                        "data": "<BASE64_DATA>",
                    },
                },
            ],
        }
    ],
)
print(message.content)