调用Gemini-Pro API触发IndexError:列表索引越界问题排查
Gemini-Pro API调用触发IndexError的原因分析
问题场景
- 连续调用Gemini-Pro API(约50次/分钟),已正确配置VertexAI项目及凭据
- 调用量低于某阈值时正常响应,超出后触发
IndexError: list index out of range,且阈值随查询长度变化:查询长度增加约20%,阈值从330次降至60次 - 当前调用速率(<60次/分钟)处于us-central1区域公开配额(300次/分钟)范围内,使用含300美元赠金的免费试用账户
错误堆栈
File "/Users/user/anaconda3/envs/chat1/lib/python3.11/site-packages/vertexai/generative_models/_generative_models.py", line 1315, in text
return self.candidates[0].text
调用代码
def gemini_response(message: str) -> str: # Initialize Vertex AI vertexai.init(project="project-id-0123", location="us-central1") # Load the model model = GenerativeModel("gemini-pro") # Query the model response = model.generate_content(message) return response.text
调试关键信息
调试发现candidates为空数组,相关变量详情:
> self > prompt_feedback {block_reason: OTHER} > usage_metadata {prompt_token_count: 505 total_token_count: 505 } > self.candidates > [] > self._raw_response > prompt_feedback {block_reason: OTHER} > usage_metadata {prompt_token_count: 505 total_token_count: 505 }
问题原因
- 连续请求触发内容安全拦截:单条查询未触发内容拦截,但短时间内高频连续调用被系统判定为风险行为,触发
block_reason: OTHER的拦截机制,导致模型不返回候选响应,candidates为空数组。 - 免费试用账户的隐性限制:除公开的300次/分钟配额外,免费试用账户存在未明确标注的累计调用或并发管控规则。查询长度增加会消耗更多模型资源,进一步降低触发限制的阈值。
- 区域资源临时限流:us-central1区域可能存在临时资源紧张,系统对免费试用用户的请求进行优先级降级,部分请求无法获取模型响应,返回空
candidates。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

