正确嵌入多模态数据需严格遵循gemini规范:一、图片用inlinedata配准确mimetype;二、视频用data uri作text值;三、大文件用gcs uri配filedata;四、多图需分立parts;五、mimetype须精确匹配且base64无空格。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您需要向 Gemini API 发送多模态请求,但不确定如何在 JSON 结构中正确嵌入图片或视频数据,则可能是由于未遵循其特定的 base64 编码与 MIME 类型组合规范。以下是实现该功能的具体方法:
一、使用 inlineData 方式嵌入 Base64 编码的图片
Gemini 要求图片以 base64 编码字符串形式嵌入 JSON 的 inlineData 字段,并明确指定 mimeType,否则 API 将拒绝解析图像内容。
1、将本地图片文件(如 PNG 或 JPEG)转换为 base64 编码字符串,可使用命令行工具或编程语言内置函数完成。
2、构造包含 inlineData 对象的 JSON 片段,其中 mimeType 必须严格匹配原始文件类型,例如 image/png 或 image/jpeg。
3、将该对象作为 parts 数组中的一个元素,置于 contents 下的单条消息内,确保 inlineData 与 text 同级且不嵌套于其他字段。
二、通过 data URI 方式在 JSON 中传递视频片段
视频不支持直接以纯 base64 块嵌入 inlineData,Gemini 当前仅接受符合 data:video/xxx;base64,... 格式的 URI 字符串作为 text 字段值,而非独立 media 字段。
1、提取视频关键帧或截取短时长片段(建议 ≤ 15 秒),使用 FFmpeg 或类似工具导出为 MP4 或 MOV 格式。
2、对该视频文件执行 base64 编码,并拼接前缀 data:video/mp4;base64,(MIME 类型需与实际格式一致)。
3、将完整 data URI 字符串作为 text 字段的唯一内容,放入 contents[0].parts[0],不可与其他文本混合或附加描述语句。
三、采用 Google Cloud Storage URI 引用远程媒体资源
当图片或视频体积较大时,Gemini 支持通过预签名的 GCS URI 直接引用托管在 Google Cloud Storage 中的媒体对象,避免 JSON 负载超限。
1、将图片或视频上传至已启用公共读取权限或配置了短期有效签名的 GCS 存储桶。
用于在用户想通过浏览器自动化与 Google Gemini 或 ChatGPT 交互时。触发短语包括“ask Gemini”“ask ChatGPT”“ask GPT”“让...”。
2、生成形如 gs://your-bucket-name/path/to/image.jpg 的 URI,确保该 URI 可被 Gemini 服务访问。
3、在 JSON 的 parts 中创建新对象,仅包含 fileData 字段,其下 fileUri 设为上述 GCS URI,mimeType 显式声明为对应类型,例如 image/webp。
四、组合文本与多张图片的 JSON 构造方式
Gemini 允许单次请求中混合多个 parts,但每张图片必须独占一个 inlineData 或 fileData 对象,不可合并编码或复用同一字段。
1、对每张待提交的图片分别进行 base64 编码,并记录各自准确的 MIME 类型。
2、在 contents[0].parts 数组中依次添加多个对象:第一个为 text 类型的提示词,后续每个均为独立的 inlineData 对象,各自携带 mime_type 和 data。
3、验证最终 JSON 中所有 parts 的顺序是否符合逻辑意图,例如“描述以下三张图”应使文本 part 置于数组首位,图片 parts 按展示顺序紧随其后。
五、规避常见 MIME 类型误配错误
Gemini 对 mimeType 字段校验极为严格,任何大小写偏差、缺失子类型或使用非标准别名均会导致 media 解析失败。
1、禁用自动推断工具生成的 MIME 类型,例如避免使用 image/jpg(应为 image/jpeg)或 video/x-m4v(应为 video/mp4)。
2、对 PNG 图片,必须使用 image/png;对 WebP 图片,必须使用 image/webp;对 AVIF 图片,必须使用 image/avif。
3、检查 base64 字符串是否含换行符或空格,Gemini 仅接受连续无分隔的 base64 字符序列,否则会触发 INVALID_ARGUMENT 错误。










