gemini本地调用时429错误

本文讲述了作者在使用GeminiAPI时遇到的ResourceExhausted错误,经过排查发现是由于接口更新导致,通过调整model_name参数并查看官方文档解决了问题。还提及了一次HTTP429错误,可能是因为频繁访问引发的.

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

最近跑前段时间写的一个调用gemini的项目,发现一直报错。报错提示如下:

Traceback (most recent call last):
  File "D:\anaconda3\lib\site-packages\google\api_core\grpc_helpers.py", line 79, in error_remapped_callable
    return callable_(*args, **kwargs)
  File "D:\anaconda3\lib\site-packages\grpc\_channel.py", line 1160, in __call__
    return _end_unary_response_blocking(state, call, False, None)
  File "D:\anaconda3\lib\site-packages\grpc\_channel.py", line 1003, in _end_unary_response_blocking
    raise _InactiveRpcError(state)  # pytype: disable=not-instantiable
grpc._channel._InactiveRpcError: <_InactiveRpcError of RPC that terminated with:
    status = StatusCode.RESOURCE_EXHAUSTED
    details = "Resource has been exhausted (e.g. check quota)."
    debug_error_string = "UNKNOWN:Error received from peer ipv4:127.0.0.1:7890 {grpc_message:"Resource has been exhausted (e.g. check quota).", grpc_status:8, created_time:"2024-02-27T03:18:28.3008412+00:00"}"
>
​
The above exception was the direct cause of the following exception:
​
Traceback (most recent call last):
  File "E:\code\python\project\HUGEMINI\backend.py", line 19, in text
    result = m.gemini_pro(history)
  File "E:\code\python\project\HUGEMINI\models.py", line 94, in gemini_pro
    response = self.model_pro.generate_content(history_processed)
  File "D:\anaconda3\lib\site-packages\google\generativeai\generative_models.py", line 243, in generate_content
    response = self._client.generate_content(request)
  File "D:\anaconda3\lib\site-packages\google\ai\generativelanguage_v1beta\services\generative_service\client.py", line 566, in generate_content
    response = rpc(
  File "D:\anaconda3\lib\site-packages\google\api_core\gapic_v1\method.py", line 131, in __call__
    return wrapped_func(*args, **kwargs)
  File "D:\anaconda3\lib\site-packages\google\api_core\retry.py", line 372, in retry_wrapped_func
    return retry_target(
  File "D:\anaconda3\lib\site-packages\google\api_core\retry.py", line 207, in retry_target
    result = target()
  File "D:\anaconda3\lib\site-packages\google\api_core\timeout.py", line 120, in func_with_timeout
    return func(*args, **kwargs)
  File "D:\anaconda3\lib\site-packages\google\api_core\grpc_helpers.py", line 81, in error_remapped_callable
    raise exceptions.from_grpc_error(exc) from exc
google.api_core.exceptions.ResourceExhausted: 429 Resource has been exhausted (e.g. check quota).

解决过程

报错里有127.0.0.1:7890,检查代理,发现没问题,访问官方文档也没有被拦截(如果在某个地区不能使用他的文档会直接拦截),说明不是代理的问题。且

genai.configure(api_key=API_KEY)

这句代码能够被正常运行,说明连接没有问题。

进一步排查:

前几周都还能用,但是现在不能用了,检查API_KEY,发现key还活着,官网上网页版的ai也是能正常使用,盲猜是接口更新了。打印可以使用的模型。

genai.configure(api_key=API_KEY)
        # 打印可用模型
        for m in genai.list_models():
            if 'generateContent' in m.supported_generation_methods:
                print(m.name)
models/gemini-1.0-pro
models/gemini-1.0-pro-001
models/gemini-1.0-pro-latest
models/gemini-1.0-pro-vision-latest
models/gemini-pro
models/gemini-pro-vision
​
2024.2.27

发现确实是更新了,这里可以发现官方文档还是写的老的接口。

这时候只要改成新的接口就好了。

self.model_pro = genai.GenerativeModel(model_name='gemini-pro')
# 改成👇
self.model_pro = genai.GenerativeModel(model_name='models/gemini-1.0-pro-latest')

测试下

问题解决!


还有一个这里报了429错误,网上可以看到,http的等429是指频繁访问。

并不是很清楚为啥报这个错。

本人博客:TnTeQAQ的blog

### Spring Framework 与 AI Gemini 集成实现语音识别 为了将 Spring Framework 和 AI Gemini 结合起来用于语音识别功能,可以采用 RESTful API 或 gRPC 的方式来调用 Gemini 提供的服务接口。以下是具体方法: #### 架构设计 Spring 应用程序可以通过 HTTP 请求的方式连接到 Gemini 平台上的语音识别服务端点[^1]。Gemini 可能提供了一个预训练模型或者自定义模型的访问入口,开发者需要通过这些端点发送音频数据并接收转录后的文本。 #### 实现步骤概述 在 Java 中利用 `RestTemplate` 或者更现代的选择如 WebClient 来构建请求对象并向远程服务器发起 POST 请求传递二进制文件流(即录音片段)。返回的结果通常是以 JSON 形式封装好的字符串表示形式的文字内容[^2]。 下面展示了一段简单的代码示例说明如何使用 Spring Boot 创建这样的客户端应用: ```java import org.springframework.web.client.RestTemplate; import java.util.Base64; public class VoiceRecognitionClient { private final RestTemplate restTemplate = new RestTemplate(); public String recognizeSpeech(String audioFilePath){ byte[] encodedAudioData = Base64.getEncoder().encode(readFileAsBytes(audioFilePath)); HttpHeaders headers = new HttpHeaders(); headers.setContentType(MediaType.APPLICATION_JSON); Map<String, Object> requestBody = new HashMap<>(); requestBody.put("audio_data", new String(encodedAudioData)); HttpEntity<Map<String,Object>> requestEntity = new HttpEntity<>(requestBody ,headers); ResponseEntity<String> response = restTemplate.exchange( "https://api.gemini.com/speech-to-text", HttpMethod.POST, requestEntity , String.class ); return response.getBody(); } } ``` 此代码片段展示了基本的功能逻辑——读取本地存储的声音文件将其转换为基础编码格式再上传至云端处理;最后解析得到最终结果作为输出显示给用户查看[^3]。 需要注意的是实际部署过程中还需要考虑安全性因素比如身份验证机制以及错误重试策略等问题,在生产环境中应当更加严谨地对待每一个环节的设计开发工作流程管理等方面的要求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值