Skip to content

图片输入

向支持多模态的生文模型发送带图请求时,使用 POST /v1/chat/completions(与 创建对话补全 相同),在 messages 里用 多段 content 数组 传入图片。image_url 可以是 公网 URLBase64 Data URL

可在同一条 content 数组中放多张图;单请求可附带的图片数量因模型与上游而异。解析时建议先放文本 Part、再放图片;若必须先图后文,可将说明放进 system 消息。

对标参考:OpenRouter · Image Inputs

勿与生图混淆

看图理解用本页的 image_url Part。文生图 / 参考图生图modalities + image_config,见 创建图像生成


URL 与 Base64

方式适用场景
URL公网可访问图片;无需在本地编码,体积更省
Base64 Data URL本地文件、内网或私有图;格式 data:image/<mime>;base64,...

单张图片大小上限以平台校验为准(契约按 70MB 以内,与 OpenAI 口径对齐)。


使用图片 URL

image_url 支持简写字符串OpenAI 对象写法:

json
{ "type": "image_url", "image_url": "https://example.com/sample.png" }
json
{
  "type": "image_url",
  "image_url": { "url": "https://example.com/sample.png" }
}
python
import json, os, requests

url = f"{os.environ['TRINITY_BASE_URL']}/chat/completions"
headers = {
    "Authorization": f"Bearer {os.environ['TRINITY_API_KEY']}",
    "Content-Type": "application/json",
}
payload = {
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "请描述这张图片的主要内容。"},
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/1280px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
                    },
                },
            ],
        }
    ],
}
r = requests.post(url, headers=headers, data=json.dumps(payload))
print(r.json())
typescript
const res = await fetch(`${process.env.TRINITY_BASE_URL}/chat/completions`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer ${process.env.TRINITY_API_KEY}`,
  },
  body: JSON.stringify({
    model: "gpt-4o",
    messages: [
      {
        role: "user",
        content: [
          { type: "text", text: "请描述这张图片的主要内容。" },
          {
            type: "image_url",
            image_url: {
              url: "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/1280px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg",
            },
          },
        ],
      },
    ],
  }),
});
console.log(await res.json());
bash
curl -sS "${TRINITY_BASE_URL}/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${TRINITY_API_KEY}" \
  -d '{
    "model": "gpt-4o",
    "messages": [{
      "role": "user",
      "content": [
        { "type": "text", "text": "请描述这张图片的主要内容。" },
        {
          "type": "image_url",
          "image_url": {
            "url": "https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Gfp-wisconsin-madison-the-nature-boardwalk.jpg/1280px-Gfp-wisconsin-madison-the-nature-boardwalk.jpg"
          }
        }
      ]
    }]
  }'

model 换成 模型广场 中你账号可用的、支持看图的多模态生文模型 ID。


使用 Base64 编码图片

本地图片需先转为 Data URL,再放入 image_url.url

python
import base64, json, os, requests
from pathlib import Path

def encode_image_to_data_url(image_path: str) -> str:
    suffix = Path(image_path).suffix.lower()
    mime = {".png": "image/png", ".jpg": "image/jpeg", ".jpeg": "image/jpeg", ".webp": "image/webp", ".gif": "image/gif"}.get(suffix, "image/jpeg")
    b64 = base64.b64encode(Path(image_path).read_bytes()).decode("utf-8")
    return f"data:{mime};base64,{b64}"

data_url = encode_image_to_data_url("path/to/your/image.jpg")
payload = {
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "请描述这张图片的主要内容。"},
                {"type": "image_url", "image_url": {"url": data_url}},
            ],
        }
    ],
}
r = requests.post(
    f"{os.environ['TRINITY_BASE_URL']}/chat/completions",
    headers={
        "Authorization": f"Bearer {os.environ['TRINITY_API_KEY']}",
        "Content-Type": "application/json",
    },
    data=json.dumps(payload),
)
print(r.json())
typescript
import { readFile } from "node:fs/promises";

async function encodeImageToDataUrl(imagePath: string): Promise<string> {
  const buf = await readFile(imagePath);
  const base64 = buf.toString("base64");
  return `data:image/jpeg;base64,${base64}`;
}

const dataUrl = await encodeImageToDataUrl("path/to/your/image.jpg");
const res = await fetch(`${process.env.TRINITY_BASE_URL}/chat/completions`, {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    Authorization: `Bearer ${process.env.TRINITY_API_KEY}`,
  },
  body: JSON.stringify({
    model: "gpt-4o",
    messages: [
      {
        role: "user",
        content: [
          { type: "text", text: "请描述这张图片的主要内容。" },
          { type: "image_url", image_url: { url: dataUrl } },
        ],
      },
    ],
  }),
});
console.log(await res.json());
bash
DATA_URL="data:image/jpeg;base64,$(base64 -i path/to/your/image.jpg | tr -d '\n')"
curl -sS "${TRINITY_BASE_URL}/chat/completions" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${TRINITY_API_KEY}" \
  -d '{"model":"gpt-4o","messages":[{"role":"user","content":[
    {"type":"text","text":"请描述这张图片的主要内容。"},
    {"type":"image_url","image_url":{"url":"'"$DATA_URL"'"}}
  ]}]}'

多图对比

多张图放在同一 content 数组中,可混用简写与对象写法:

json
{
  "role": "user",
  "content": [
    { "type": "text", "text": "对比这两张图的区别" },
    { "type": "image_url", "image_url": "https://example.com/a.png" },
    { "type": "image_url", "image_url": { "url": "https://example.com/b.png" } }
  ]
}

支持的图片类型

Data URL 的 MIME 类型常用:

MIME
image/png
image/jpeg
image/webp
image/gif

具体是否被某模型接受,以 模型广场 与调用结果为准。


模型 ID

请求体 model 须为支持多模态输入的生文模型 ID(在 模型广场 选用;勿使用仅生图或仅视频的模型)。字段全集见 API · 高级参数 · 生文


相关

© Trinity AI