配置Google Gemini 1.5 Pro分析上传文件时遇400错误求助
解决Gemini 1.5 Pro文件URI无效的问题
错误原因
Gemini 1.5 Pro的fileUri参数不支持普通HTTPS外链(比如维基百科、Cloudinary的公开URL),仅接受两种格式:
- Google Cloud Storage (GCS) 路径,格式为
gs://bucket-name/file-path - 基于Base64编码的文件二进制数据(通过
inlineData参数传递)
解决方案
方法1:使用GCS存储文件(生产环境推荐)
- 将用户上传的文件转存至GCS,或直接配置上传流程到GCS
- 给Gemini的服务账号
generativelanguage@googleapis.com分配GCS桶的storage.objects.get权限 - 在请求中使用
gs://格式的URI替换HTTPS链接:userContentParts.push({ fileData: { mimeType: testFileType, fileUri: "gs://your-bucket-name/your-file-path.png" }, });
方法2:使用Base64编码传递文件(测试/小文件场景)
直接下载文件并转换为Base64,通过inlineData参数传递:
- 新增文件转Base64的工具函数:
import axios from 'axios'; async function getFileAsBase64(url: string): Promise<string> { const response = await axios.get(url, { responseType: 'arraybuffer' }); return Buffer.from(response.data).toString('base64'); } - 修改文件处理逻辑:
if (fileUrl && fileType && uploadedFile) { const testFileUrl = "https://upload.wikimedia.org/wikipedia/commons/4/47/PNG_transparency_demonstration_1.png"; const testFileType = "image/png"; if (fileType.startsWith("image/") || fileType.includes("pdf")) { // 获取Base64编码数据 const base64Data = await getFileAsBase64(testFileUrl); userContentParts.push({ inlineData: { // 替换原fileData为inlineData mimeType: testFileType, data: base64Data }, }); // 后续messageType、displayRequest逻辑保持不变 } }
额外注意事项
- 文件大小限制:图片最大10MB,PDF最大1GB,超过限制会触发错误
- 确保使用最新版的
@google/generative-aiSDK,避免版本兼容问题 - 若使用GCS,确认桶和文件路径无拼写错误,且权限配置生效
内容的提问来源于stack exchange,提问作者Chris
相关产品推荐
相关产品推荐

