AnyInt Docs
模型

图像输入

说明如何在 AnyInt 请求中同时传入文本和参考图。推荐使用 OpenAI 兼容聊天的 image_url 内容块。

这页说明“把图片作为输入传给模型”怎么写请求体。最常见场景是:你有一张或多张参考图,希望模型基于图片回答问题、描述图片、提取信息,或把参考图作为后续生成任务的上下文。

先看结论

如果你只是想“请求时带上图片”,优先使用 OpenAI 兼容聊天接口:

POST https://api.anyint.ai/openai/v1/chat/completions

请求写法是:

  1. messages[].content 不再写成普通字符串,而是写成数组。
  2. 文本指令放在 { "type": "text" } 块里。
  3. 每张图片放在 { "type": "image_url" } 块里。
  4. 图片用公网 HTTPS URL;如果图片来自本地文件,也可以转成 data:image/...;base64,... data URL 后传入。

模型必须支持图像输入。模型 ID 请优先从 Models API 获取,不要只凭示例硬编码。

OpenAI 兼容请求示例

下面示例把一张参考图和一句文本指令放进同一条 user 消息:

curl https://api.anyint.ai/openai/v1/chat/completions \
  -H "Authorization: Bearer $ANYINT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-3.1-flash-image-preview",
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "text",
            "text": "使用这张参考图,用一句话描述产品风格。"
          },
          {
            "type": "image_url",
            "image_url": {
              "url": "https://your-domain.com/reference.png"
            }
          }
        ]
      }
    ]
  }'

这段请求里最重要的是 messages[0].content

[
  {
    "type": "text",
    "text": "使用这张参考图,用一句话描述产品风格。"
  },
  {
    "type": "image_url",
    "image_url": {
      "url": "https://your-domain.com/reference.png"
    }
  }
]

传入多张参考图

要传多张图片,就继续追加多个 image_url 块。图片顺序就是模型看到的顺序。

[
  {
    "type": "text",
    "text": "比较这两张图的包装差异。"
  },
  {
    "type": "image_url",
    "image_url": {
      "url": "https://your-domain.com/before.png"
    }
  },
  {
    "type": "image_url",
    "image_url": {
      "url": "https://your-domain.com/after.png"
    }
  }
]

字段说明

字段必填含义示例
model支持图像输入的模型 ID。请从 Models API 获取。gemini-3.1-flash-image-preview
messages[].role消息角色。图像输入通常放在 user 消息中。user
messages[].content[]内容块数组,可以同时放文本和图片。[{"type":"text",...},{"type":"image_url",...}]
content[].type内容块类型。文本用 text,图片用 image_urlimage_url
content[].text文本块必填给模型的文字说明。描述这张图。
content[].image_url.url图片块必填公网 HTTPS 图片 URL 或 data URL。生产环境优先用公网 URL;图片来自本地文件时可用 data URL。https://your-domain.com/reference.png

图片地址要求

推荐使用能直接返回图片字节的公网 HTTPS URL,例如:

https://your-domain.com/reference.png

不要发送本地文件路径,例如:

/tmp/reference.png
C:\Users\you\image.png

上游模型无法读取你的本地磁盘。请先把图片上传到对象存储、CDN 或其他可公开访问的位置。

如果你不想先上传图片,也可以把本地图片编码成 base64,然后放进 data URL。PNG 的 data URL 形态是:

data:image/png;base64,<BASE64_IMAGE_DATA>

例如:

IMAGE_DATA="$(base64 -i ./reference.png | tr -d '\n')"

curl https://api.anyint.ai/openai/v1/chat/completions \
  -H "Authorization: Bearer $ANYINT_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"model\": \"gemini-3.1-flash-image-preview\",
    \"messages\": [
      {
        \"role\": \"user\",
        \"content\": [
          {
            \"type\": \"text\",
            \"text\": \"使用这张参考图,用一句话描述产品风格。\"
          },
          {
            \"type\": \"image_url\",
            \"image_url\": {
              \"url\": \"data:image/png;base64,$IMAGE_DATA\"
            }
          }
        ]
      }
    ]
  }"

当图片来自本地文件且你不想先上传时,可以使用这种格式。注意请求体大小:base64 会放大体积;很大的图片更适合先上传到对象存储或 CDN,再传公网 HTTPS URL。

Gemini 原生 inlineData

如果你的应用已经使用 Gemini 原生请求体,/gemini/v1beta 路由也可以通过 contents[].parts[].inlineData 传入内联图片字节:

IMAGE_DATA="$(base64 -i ./reference.png | tr -d '\n')"

curl https://api.anyint.ai/gemini/v1beta/models/gemini-3.1-flash-image-preview:generateContent \
  -H "Authorization: Bearer $ANYINT_API_KEY" \
  -H "Content-Type: application/json" \
  -d "{
    \"contents\": [
      {
        \"role\": \"user\",
        \"parts\": [
          {
            \"text\": \"使用这张参考图,用一句话描述产品风格。\"
          },
          {
            \"inlineData\": {
              \"mimeType\": \"image/png\",
              \"data\": \"$IMAGE_DATA\"
            }
          }
        ]
      }
    ]
  }"

只有在你明确需要 Gemini 原生 contents[].parts[] 负载时才使用这个格式。作为统一默认路径,仍然优先使用上面的 OpenAI 兼容 image_url 写法。

Anthropic 兼容格式

如果你的应用已经使用 Anthropic Messages API,可以使用:

POST https://api.anyint.ai/anthropic/v1/messages

Anthropic 风格的图片块使用 type: "image",图片字节放在 source.data,不是 image_url

curl https://api.anyint.ai/anthropic/v1/messages \
  -H "x-api-key: $ANYINT_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 512,
    "messages": [
      {
        "role": "user",
        "content": [
          {
            "type": "image",
            "source": {
              "type": "base64",
              "media_type": "image/png",
              "data": "<BASE64_IMAGE_DATA>"
            }
          },
          {
            "type": "text",
            "text": "描述这张图里有什么。"
          }
        ]
      }
    ]
  }'

如果你没有 Anthropic 格式兼容需求,优先使用上面的 OpenAI 兼容 image_url 写法。

和图像生成的区别

图像输入是“把图片交给模型看”。模型最终返回文本、图片还是混合内容,取决于你选择的模型和路由。

如果你的目标是生成或编辑图片,请继续看:

面向客户的图像输入,当前推荐使用 OpenAI 兼容聊天的 messages[].content[]image_url。如果你的集成明确使用 Gemini 原生 contents[].parts[] 负载,也可以参考 Gemini 兼容 API 页面中的 inlineData 写法。

常见错误

  • messages[].content 继续写成字符串,导致图片没有地方传。
  • 把本地文件路径写进 JSON,而不是公网 URL 或 data URL。
  • 图片 URL 需要登录、Cookie、防盗链,或不会直接返回图片字节。
  • 模型本身不支持图像输入。
  • 把 Gemini 原生 contents[].parts[] 和 OpenAI 兼容 messages[].content[] 混在同一个请求里。
  • 在 OpenAI 兼容 image_url.url 字段里只传裸 base64,而不是带 data:image/...;base64, 前缀的 data URL。

相关页面

On this page