Amux
文本Gemini 格式

媒体识别

通过 Gemini generateContent 接口理解图像、PDF、音频、视频 — 多模态理解的专项指南

Gemini 的多模态理解能力复用 generateContent 接口 —— 您只需在 contents[].parts[] 中加入媒体部件即可。本页聚焦多模态使用方式:上传方式、支持的 MIME 类型、调用示例与注意事项。完整请求 / 响应字段参考请看 文本聊天

项目
请求方法POST
请求路径/v1beta/models/{model}:generateContent(与文本聊天同接口)

多模态模型:建议使用 gemini-2.5-pro / gemini-2.5-flash / gemini-flash-latest 等支持视觉与音视频的模型;模型对各模态的支持能力请参考 模型与定价

媒体上传方式

Gemini 提供两种媒体输入方式,amux-api 均支持透传:

Prop

Type

实践建议

  • 单次请求体大小建议控制在 20MB 以内。超出请使用 fileData.fileUri
  • 对于公网 URL 形式的文件,可使用 urlContext 工具或先下载再走 inlineData
  • amux-api 不参与 Google File API 的文件管理;如使用 fileData,文件需事先存在于上游账户中

支持的 MIME 类型

模态常见 MIME 类型
图像image/pngimage/jpegimage/webpimage/heicimage/heif
文档application/pdf
音频audio/mpeg(mp3)、audio/wavaudio/oggaudio/flacaudio/aac
视频video/mp4video/mpegvideo/movvideo/avivideo/x-flvvideo/webmvideo/wmvvideo/3gpp

详细支持范围以模型为准。

请求示例

图像理解(Base64 内联)

IMAGE_BASE64=$(base64 < cat.png | tr -d '\n')

curl "https://api.amux.ai/v1beta/models/gemini-2.5-pro:generateContent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -d "{
    \"contents\": [{
      \"role\": \"user\",
      \"parts\": [
        { \"text\": \"这张图里是什么?请用中文描述。\" },
        { \"inlineData\": { \"mimeType\": \"image/png\", \"data\": \"$IMAGE_BASE64\" } }
      ]
    }]
  }"
import base64
import os
from google import genai

client = genai.Client(
    api_key=os.environ["AMUX_API_KEY"],
    http_options={"base_url": "https://api.amux.ai"},
)

with open("cat.png", "rb") as f:
    image_b64 = base64.b64encode(f.read()).decode()

response = client.models.generate_content(
    model="gemini-2.5-pro",
    contents=[
        {"role": "user", "parts": [
            {"text": "这张图里是什么?请用中文描述。"},
            {"inline_data": {"mime_type": "image/png", "data": image_b64}},
        ]},
    ],
)

print(response.text)
import { readFileSync } from 'node:fs';
import { GoogleGenAI } from '@google/genai';

const ai = new GoogleGenAI({
  apiKey: process.env.AMUX_API_KEY!,
  httpOptions: { baseUrl: 'https://api.amux.ai' },
});

const imageBase64 = readFileSync('cat.png').toString('base64');

const response = await ai.models.generateContent({
  model: 'gemini-2.5-pro',
  contents: [
    {
      role: 'user',
      parts: [
        { text: '这张图里是什么?请用中文描述。' },
        { inlineData: { mimeType: 'image/png', data: imageBase64 } },
      ],
    },
  ],
});

console.log(response.text);

PDF 文档理解

PDF_BASE64=$(base64 < paper.pdf | tr -d '\n')

curl "https://api.amux.ai/v1beta/models/gemini-2.5-pro:generateContent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -d "{
    \"contents\": [{
      \"role\": \"user\",
      \"parts\": [
        { \"text\": \"概括这篇论文的核心观点(中文)。\" },
        { \"inlineData\": { \"mimeType\": \"application/pdf\", \"data\": \"$PDF_BASE64\" } }
      ]
    }]
  }"

音频识别

AUDIO_BASE64=$(base64 < meeting.mp3 | tr -d '\n')

curl "https://api.amux.ai/v1beta/models/gemini-2.5-pro:generateContent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -d "{
    \"contents\": [{
      \"role\": \"user\",
      \"parts\": [
        { \"text\": \"请把这段会议录音转写成文字,并按发言人分段。\" },
        { \"inlineData\": { \"mimeType\": \"audio/mpeg\", \"data\": \"$AUDIO_BASE64\" } }
      ]
    }]
  }"

视频理解(推荐使用 fileData)

curl "https://api.amux.ai/v1beta/models/gemini-2.5-pro:generateContent" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $AMUX_API_KEY" \
  -d '{
    "contents": [{
      "role": "user",
      "parts": [
        { "text": "总结这段视频的关键场景,并给出时间线。" },
        {
          "fileData": {
            "mimeType": "video/mp4",
            "fileUri": "https://generativelanguage.googleapis.com/v1beta/files/xxxxxxxx"
          }
        }
      ]
    }],
    "generationConfig": {
      "mediaResolution": "MEDIA_RESOLUTION_MEDIUM"
    }
  }'

控制媒体分辨率

通过 generationConfig.mediaResolution 控制输入媒体的解析精细度(影响 Token 消耗与识别质量):

Prop

Type

也可在单个 inlineData part 上设置 mediaResolution 单独控制,或在 videoMetadata 中指定视频帧采样策略。

用量统计

多模态请求的 usageMetadata.promptTokensDetails 会按模态拆分 Token 明细:

{
  "usageMetadata": {
    "promptTokenCount": 1284,
    "candidatesTokenCount": 156,
    "totalTokenCount": 1440,
    "promptTokensDetails": [
      { "modality": "TEXT", "tokenCount": 24 },
      { "modality": "IMAGE", "tokenCount": 1260 }
    ]
  }
}

便于按模态精确拆分计费。

注意事项

  • 请求体大小:amux-api 与上游均会有请求体上限,超过 20MB 建议使用 fileData.fileUri
  • MIME 类型必须正确:错误的 mimeType 会导致上游解析失败
  • 多模态消耗 Token 较高:建议结合 mediaResolution上下文缓存 cachedContent 控制成本
  • 完整字段参考:请求体的所有字段(generationConfig / tools / safetySettings 等)请参考 文本聊天

On this page