我正在以连续的方式调用 Google Gemini-Pro API(大约每分钟 50 个查询)。我相信我已经正确设置了我的 VertexAI 项目和凭据。当我使用的连续查询数量低于恒定条时,查询将运行并且可以很好地收到响应。然而,一旦查询数量超过上述栏,就会出现以下错误:
IndexError - 列表索引超出范围
请注意,发生此错误的查询“bar”的数量取决于每个查询的长度,并且如果查询的长度在程序执行中保持相同,则该数量是一致的。例如,在尝试将查询长度增加大约 20% 后,查询长度从大约 330 个查询下降到大约 60 个查询。
文件 “/Users/user/anaconda3/envs/chat1/lib/python3.11/site-packages/vertexai/generative_models/_generative_models.py”, 第 1315 行,文本 返回 self.candidates[0].text ~~~~~~~~~~~~~~~^^^ IndexError:列表索引超出范围
这是什么原因造成的?我已将 VertexAI 服务器位置设置为:“us-central1”,据我所知,该位置的配额应该只有 300 个查询/分钟。由于我连续执行 API 调用,但低于每分钟 60 次查询的速率,因此我认为我处于使用正常范围。我目前正在使用免费的 VertexAI 试用帐户(有 300 美元的免费信用)。
我写的Gemini Pro API调用函数是:
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
。
如果相同提示的其他运行有效,那么这可能是由于速率限制,即使您认为自己低于限制。您可以在 Cloud Console API 信息中心中查看这一点,但所有这些数字都是粗略的近似值。
如果此提示始终不起作用,则可能是安全系统标记了该提示,可能是错误的。
无论哪种情况,查看
response
对象的 JSON 表示形式以准确查看返回的内容并检查相应的字段都非常有用。如果这确实表明存在速率错误,那么您应该能够在短时间内重试。