Gemini 3 Pro Image Preview API 错误处理指南
为开发者提供的 gemini-3-pro-image-preview API 错误处理最佳实践与用户友好提示方案
📋 目录
概述
API 基本信息
- 模型代码:
gemini-3-pro-image-preview - API 端点:
https://api.apiyi.com/models/gemini-3-pro-image-preview:generateContent - 知识库截止: 2025年1月
- 官方文档: Google AI 文档
为什么需要专门的错误处理?
Google Gemini API 对内容安全有严格控制,会在多个层级拒绝不合规的请求。简单的”生成失败”提示无法帮助用户理解问题,需要: ✅ 精准识别拒绝原因 - 区分内容违规、知识库限制、技术错误等✅ 友好的用户提示 - 将技术错误转化为可理解的说明
✅ 可操作的建议 - 告诉用户如何修改才能成功
✅ 完整的技术信息 - 供开发者调试和排查问题
核心判断指标
1. candidatesTokenCount(最高优先级)⭐
位置:response.usageMetadata.candidatesTokenCount
含义: API 生成的候选内容的 token 数量
判断规则:
2. finishReason(次优先级)
位置:response.candidates[0].finishReason
含义: API 处理结束的原因
判断规则:
| finishReason | 含义 | 用户友好文案 |
|---|---|---|
STOP | 正常结束 | - |
PROHIBITED_CONTENT | 违禁内容 | ”内容违反安全策略,已被拒绝处理” |
SAFETY | 安全过滤 | ”内容触发了安全过滤器” |
RECITATION | 引用限制 | ”内容可能涉及版权问题” |
MAX_TOKENS | Token 超限 | ”内容长度超出限制” |
3. API 文本响应(重要)
位置:response.candidates[0].content.parts[].text
含义: API 返回的文本说明(可能是中文或英文)
判断规则:
错误场景与处理流程
场景 1: 谷歌内容审核拒绝(最早期拒绝)
检测条件:场景 2: finishReason 拒绝(生成过程拒绝)
检测条件:场景 3: API 文本响应(返回说明文本)
检测条件:场景 4: 知识库限制
检测条件:- “将手机改为 iPhone 17”
- “添加 2026 年的汽车”
场景 5: 去水印/换脸等禁止功能
检测条件:C 端用户友好提示文案
文案设计原则
- 简洁明了 - 避免技术术语
- 正面引导 - 告诉用户怎么做,而不是只说不行
- 可操作 - 提供具体的修改建议
- 避免指责 - 不要让用户感到被批评
推荐文案模板
❌ 内容不符合要求
❌ 功能暂不支持
❌ 内容超出范围
✅ 技术错误(网络等)
完整处理流程图
代码实现示例
1. 响应解析与错误检测
2. 关键词智能识别
3. 前端展示逻辑
最佳实践建议
1. 优先级排序 ⭐
错误检测应按以下顺序进行:2. 文本收集注意事项 ⚠️
关键:必须在判断thoughtSignature 之前收集 text
3. 响应数据保留 📦
开发测试工具必须保留完整响应:- C 端用户:默认不展示技术详情
- B 端用户:默认展开技术详情
- 开发者:提供”展开/收起”切换
4. 多语言支持 🌍
API 可能返回中文或英文说明,需要都支持:5. 友好降级 📉
6. 永不显示”未知错误” 🚫
关键代码片段
thoughtSignature 处理
错误消息优先级
错误响应示例汇总
✅ 完整的测试用例
用例 1: candidatesTokenCount = 0
用例 2: finishReason = PROHIBITED_CONTENT
用例 3: 有中文文本响应
用例 4: 有英文文本响应
用例 5: 正常成功
常见问题 FAQ
Q1: 为什么同一个提示词有时能生成有时不能?
A: Google API 的安全过滤有随机性和上下文相关性:- 参考图的内容会影响判断
- 提示词的组合方式会影响判断
- 建议:调整描述方式,使用更委婉的表达
Q2: 如何区分是内容问题还是技术问题?
A: 看错误类型:candidatesTokenCount: 0或finishReason: PROHIBITED_CONTENT→ 内容问题Failed to fetch或 HTTP 错误 → 技术问题- 有 API 文本说明 → 通常是内容问题
Q3: C 端用户应该看到多少技术信息?
A: 建议分层展示:- 默认显示: 友好的错误说明 + 修改建议
- 可选展开: 技术详情(供高级用户)
- 开发模式: 完整的 JSON 响应
Q4: 是否需要为每个 finishReason 写特定处理?
A: 不需要!使用映射表 + 通用处理:参考资源
- Google 官方文档: https://ai.google.dev/gemini-api/docs/models?hl=zh-cn#gemini-3-pro-image-preview
- 本项目 FAQ: nano-banana-faq.md
- 代码实现:
js/api.js-processImageResponse方法
更新日志
- 2025-12-07: 初始版本
- 完整的错误处理流程图
- C 端用户友好文案示例
- 代码实现示例
- 最佳实践建议
提示: 本文档基于实际开发测试经验总结,建议开发者根据自己的应用场景调整用户提示文案的详细程度。