UniterRouter
API 参考Google 兼容

视觉

Gemini Vision API - 使用 Gemini Pro Vision、Gemini 1.5 分析图像和视频。多模态 AI 实现图像理解、视频分析和文档处理。

视觉(图像和视频输入)

Gemini 模型是原生多模态的,可以理解图像和视频。使用视觉功能进行图像分析、OCR、视觉推理和视频理解。

支持的模型: 所有 Gemini 1.5+ 模型都支持视觉输入。

支持的格式

图像

  • JPEG, PNG, GIF, WebP
  • 最大大小: 每张图像 20MB
  • 每个请求最多 3,600 张图像

视频

  • MP4, MOV, MPEG, AVI, FLV, MKV, WebM
  • 最大时长: 1 小时
  • 最大大小: 2GB

图像输入方法

1. Base64 内联数据

# 首先,编码您的图像
BASE64_IMAGE=$(base64 -i image.jpg)

curl -X POST "https://api.uniterouter.ai/v1beta/models/gemini-2.0-flash:generateContent" \
  -H "Content-Type: application/json" \
  -H "x-goog-api-key: $UNITEROUTER_API_KEY" \
  -d '{
    "contents": [
      {
        "role": "user",
        "parts": [
          {
            "inlineData": {
              "mimeType": "image/jpeg",
              "data": "'$BASE64_IMAGE'"
            }
          },
          {"text": "详细描述这张图片"}
        ]
      }
    ]
  }'
import google.generativeai as genai
import PIL.Image

genai.configure(
    api_key="your_uniterouter_api_key",
    transport="rest",
    client_options={"api_endpoint": "api.uniterouter.ai"}
)

model = genai.GenerativeModel("gemini-2.0-flash")

# 使用 PIL Image
image = PIL.Image.open("image.jpg")
response = model.generate_content([
    "详细描述这张图片",
    image
])
print(response.text)

# 或使用 base64
import base64
with open("image.jpg", "rb") as f:
    image_data = base64.b64encode(f.read()).decode()

response = model.generate_content([
    {
        "inline_data": {
            "mime_type": "image/jpeg",
            "data": image_data
        }
    },
    "描述这张图片"
])
import { GoogleGenerativeAI } from "@google/generative-ai";
import * as fs from "fs";

const genAI = new GoogleGenerativeAI("your_uniterouter_api_key", {
  baseUrl: "https://api.uniterouter.ai"
});

const model = genAI.getGenerativeModel({ model: "gemini-2.0-flash" });

const imageData = fs.readFileSync("image.jpg").toString("base64");

const result = await model.generateContent([
  {
    inlineData: {
      mimeType: "image/jpeg",
      data: imageData
    }
  },
  { text: "详细描述这张图片" }
]);

console.log(result.response.text());

2. URL 引用

response = model.generate_content([
    {
        "file_data": {
            "mime_type": "image/jpeg",
            "file_uri": "https://example.com/image.jpg"
        }
    },
    "这张图片里有什么?"
])

视频输入

import google.generativeai as genai

genai.configure(
    api_key="your_uniterouter_api_key",
    transport="rest",
    client_options={"api_endpoint": "api.uniterouter.ai"}
)

# 首先上传视频文件
video_file = genai.upload_file("video.mp4")

# 等待处理完成
import time
while video_file.state.name == "PROCESSING":
    time.sleep(2)
    video_file = genai.get_file(video_file.name)

# 使用视频生成内容
model = genai.GenerativeModel("gemini-2.0-flash")
response = model.generate_content([
    video_file,
    "总结这个视频中发生了什么"
])
print(response.text)
import { GoogleGenerativeAI, FileState } from "@google/generative-ai";

const genAI = new GoogleGenerativeAI("your_uniterouter_api_key", {
  baseUrl: "https://api.uniterouter.ai"
});

const fileManager = genAI.getFileManager();

// 上传视频
let file = await fileManager.uploadFile("video.mp4", {
  mimeType: "video/mp4"
});

// 等待处理完成
while (file.state === FileState.PROCESSING) {
  await new Promise(resolve => setTimeout(resolve, 2000));
  file = await fileManager.getFile(file.name);
}

// 生成内容
const model = genAI.getGenerativeModel({ model: "gemini-2.0-flash" });
const result = await model.generateContent([
  { fileData: { fileUri: file.uri, mimeType: file.mimeType } },
  { text: "总结这个视频中发生了什么" }
]);

console.log(result.response.text());

媒体分辨率

使用 mediaResolution 控制输入质量:

{
  "generationConfig": {
    "mediaResolution": "MEDIA_RESOLUTION_HIGH"
  }
}
值描述
MEDIA_RESOLUTION_LOW更快处理,较低质量
MEDIA_RESOLUTION_MEDIUM平衡
MEDIA_RESOLUTION_HIGH最佳质量,更多 token

使用场景

使用场景示例提示
图像描述"详细描述这张图片"
OCR"提取这张图片中的所有文字"
物体检测"列出你能看到的所有物体"
视觉问答"汽车是什么颜色?"
文档分析"总结这份文档"
视频摘要"这个视频讲了什么?"
时间戳分析"X 发生在什么时间点?"

多图像输入

response = model.generate_content([
    image1,
    image2,
    image3,
    "比较这三张图片并描述差异"
])

最佳实践

  1. 使用适当的分辨率 - 简单任务用较低分辨率,需要细节时用较高分辨率
  2. 压缩大图像 - 发送前减小文件大小
  3. 明确具体 - 清晰的提示能获得更好的结果
  4. 批量处理图像 - 将相关图像一起发送以进行比较任务

相关文档

How is this guide?