通过Curl调用Gemini批量预测时触发Error Code 13 - INTERNAL错误
Gemini批量预测Error Code 13问题排查方案
一、BigQuery URI与输入格式规范检查
- BigQuery URI格式:必须严格遵循
bq://[项目ID].[数据集ID].[表名]格式,项目ID需为完整GCP项目ID,数据集和表名不能含特殊字符或空格。 - 输入表结构要求:
- 必须包含名为
Request的JSON类型列,每条JSON需符合格式:{"contents":[{"parts":[{"text":"你的请求文本"}]}]} - 仅保留
Request一列,多余列会导致系统生成无效SQL(如你遇到的空SELECT+LIMIT查询)。
- 必须包含名为
二、模型版本与API兼容性问题
- gemini-1.0-pro-002限制:该模型在v1beta版本不支持
GenerateContent方法,且暂未纳入批量预测支持范围,单条Python API调用成功是因为使用了兼容的API版本,但批量预测无法适配。 - 批量预测支持模型:当前仅
gemini-1.5-flash-001、gemini-1.5-pro-001支持批量预测,需使用v1版本API端点。
三、请求配置与日志异常排查
- Curl请求配置要点:
- 任务名称需符合GCP命名规范:小写字母、数字、连字符,以字母开头。
model字段需为完整路径:projects/[项目ID]/locations/[区域]/publishers/google/models/[模型名],建议使用us-central1或europe-west4区域,避免跨区域问题。- 输出配置需指定
writeDisposition(如WRITE_TRUNCATE/WRITE_APPEND),确保目标表可写入。
- 审计日志异常处理:
- 用BigQuery函数校验输入JSON合法性:
SELECT * FROM [表名] WHERE NOT JSON_VALID(Request),修正所有格式错误数据。 - 空SELECT错误源于输入表结构不符合预期,需确认仅保留
Request列且列名大小写完全匹配。
- 用BigQuery函数校验输入JSON合法性:
四、快速验证方案
- 创建仅含
Request列的测试表,插入1条格式正确的JSON数据。 - 使用简化版Curl请求测试:
curl -X POST \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://us-central1-aiplatform.googleapis.com/v1/projects/[项目ID]/locations/us-central1/batchPredictionJobs" \ -d '{ "displayName": "gemini-batch-test", "model": "projects/[项目ID]/locations/us-central1/publishers/google/models/gemini-1.5-flash-001", "inputConfig": { "bigquerySource": { "inputUri": "bq://[项目ID].[数据集ID].[测试表名]" } }, "outputConfig": { "bigqueryDestination": { "outputUri": "bq://[项目ID].[数据集ID].[输出表名]" } }, "dedicatedResources": { "machineSpec": { "machineType": "n1-standard-4" }, "startingReplicaCount": 1, "maxReplicaCount": 1 } }'
内容的提问来源于stack exchange,提问作者Parfait
相关产品推荐
相关产品推荐

