在Google Colab调用Gemini API时遭遇503错误求助
解决Gemini API 503服务器错误的方案
一、核心排查步骤
- API密钥与配额检查:确认
GOOGLE_API_KEY所属的Google Cloud项目已启用Gemini API,且未超出配额限制(可在Google Cloud控制台的API用量页面查看)。同时检查密钥是否设置了IP白名单,若有需将Colab出口IP加入白名单,或临时关闭限制测试。 - Colab环境重启:Colab的网络环境偶尔会出现波动,尝试通过菜单栏「Runtime」→「Restart runtime」重启运行时后重新执行代码,也可切换硬件加速类型(如从GPU转CPU)排查路由问题。
- 请求频率控制:503错误多与请求过载有关,Gemini API有速率限制,需避免短时间内批量发送大量请求,建议添加重试与延迟逻辑。
- 模型状态确认:
gemini-pro作为beta版本模型可能存在临时维护,可查看Google AI Studio的状态公告,或尝试切换到更稳定的模型版本(若可用)。
二、优化后的代码实现
针对通话分类场景,优化了prompt的结构化要求,并添加了指数退避重试逻辑,确保请求稳定性与结果准确性:
import google.generativeai as genai import time from google.api_core import exceptions GOOGLE_API_KEY = "your_api_key_here" genai.configure(api_key=GOOGLE_API_KEY) model = genai.GenerativeModel('gemini-pro') def send_to_gemini(transcript, max_retries=3): # 明确prompt要求,强制返回0/1结构化结果 prompt = f"""将以下通话记录分类为0或1: 0 = [替换为你的类别0定义,如:非业务咨询] 1 = [替换为你的类别1定义,如:业务问题反馈] 通话记录内容:{transcript} 仅返回数字0或1,无需额外解释。""" retry_delay = 1 for attempt in range(max_retries): try: response = model.generate_content(prompt) result = response.text.strip() if result in ("0", "1"): return int(result) print("返回格式不符合要求,重试中...") except exceptions.ResourceExhausted: print(f"配额耗尽,{retry_delay}秒后重试") except exceptions.ServiceUnavailable: print(f"服务暂不可用,{retry_delay}秒后重试") except Exception as e: print(f"请求出错:{str(e)}") break time.sleep(retry_delay) retry_delay *= 2 # 指数退避 return None
三、批量处理建议
处理Excel中的通话记录时,建议分批执行,每处理15-20条记录后暂停1-2秒,避免触发API速率限制;同时可在Google Cloud控制台开启API请求日志,获取更详细的错误诊断信息。
内容的提问来源于stack exchange,提问作者nils
相关产品推荐
相关产品推荐

