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,
"比较这三张图片并描述差异"
])最佳实践
- 使用适当的分辨率 - 简单任务用较低分辨率,需要细节时用较高分辨率
- 压缩大图像 - 发送前减小文件大小
- 明确具体 - 清晰的提示能获得更好的结果
- 批量处理图像 - 将相关图像一起发送以进行比较任务
相关文档
How is this guide?