Linux环境下调用Google Gemini API报错的排查求助
问题:Linux服务器无法调用Google Gemini API,Windows环境正常
应用几周前在Ubuntu Linux上可正常运行,如今无法调用Google Gemini API。相同测试代码在Windows开发机上可正常执行,但在Linux服务器上运行失败。已尝试重装Ubuntu、降级Python、更换Debian系统及外部IP、更换谷歌账号重新生成API key,但问题仍未解决。
测试代码
import google.generativeai as genai # api key genai.configure(api_key=GOOGLE_API_KEY) for m in genai.list_models(): print(m) if 'generateContent' in m.supported_generation_methods: print(m.name) model = genai.GenerativeModel('gemini-pro') response = model.generate_content("Are you working for me today?") print(response.text)
报错信息
E0114 21:53:23.743476819 24711 hpack_parser.cc:999] Error parsing 'content-type' metadata: invalid value Traceback (most recent call last): File "/home/user/.local/lib/python3.9/site-packages/google/api_core/grpc_helpers.py", line 79, in error_remapped_callable return callable_(*args, **kwargs) File "/home/user/.local/lib/python3.9/site-packages/grpc/_channel.py", line 1160, in __call__ return _end_unary_response_blocking(state, call, False, None) File "/home/user/.local/lib/python3.9/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.UNKNOWN details = "Stream removed" debug_error_string = "UNKNOWN:Error received from peer {grpc_message:"Stream removed", grpc_status:2, created_time:"2024-01-14T21:53:23.743853464+00:00"}" > During handling of the above exception, another exception occurred: Traceback (most recent call last): File "/home/user/application2/testgoogle.py", line 8, in <module> for m in genai.list_models(): File "/home/user/.local/lib/python3.9/site-packages/google/generativeai/models.py", line 164, in list_models for model in client.list_models(page_size=page_size): File "/home/user/.local/lib/python3.9/site-packages/google/ai/generativelanguage_v1beta/services/model_service/client.py", line 677, in list_models response = rpc( File "/home/user/.local/lib/python3.9/site-packages/google/api_core/gapic_v1/method.py", line 131, in __call__ return wrapped_func(*args, **kwargs) File "/home/user/.local/lib/python3.9/site-packages/google/api_core/retry.py", line 372, in retry_wrapped_func return retry_target( File "/home/user/.local/lib/python3.9/site-packages/google/api_core/retry.py", line 207, in retry_target result = target() File "/home/user/.local/lib/python3.9/site-packages/google/api_core/timeout.py", line 120, in func_with_timeout return func(*args, **kwargs) File "/home/user/.local/lib/python3.9/site-packages/google/api_core/grpc_helpers.py", line 81, in error_remapped_callable raise exceptions.from_grpc_error(exc) from exc File "/home/user/.local/lib/python3.9/site-packages/google/api_core/exceptions.py", line 616, in from_grpc_error details, err_info = _parse_grpc_error_details(rpc_exc) File "/home/user/.local/lib/python3.9/site-packages/google/api_core/exceptions.py", line 564, in _parse_grpc_error_details status = rpc_status.from_call(rpc_exc) AttributeError: 'NoneType' object has no attribute 'from_call'
相关依赖版本
google-ai-generativelanguage 0.4.0 google-api-core 2.15.0 google-auth 2.26.2 google-generativeai 0.3.2 googleapis-common-protos 1.62.0 grpcio 1.60.0
预期输出
gemini-pro gemini-pro-vision "Ai response here."
解决方案
1. 强制使用REST传输替代gRPC
修改测试代码,添加transport="rest"配置,绕过gRPC的metadata解析问题:
import google.generativeai as genai import os genai.configure( api_key=os.environ.get("GOOGLE_API_KEY"), # 建议通过环境变量管理API Key transport="rest" ) for m in genai.list_models(): print(m) if 'generateContent' in m.supported_generation_methods: print(m.name) model = genai.GenerativeModel('gemini-pro') response = model.generate_content("你今天能为我工作吗?") print(response.text)
2. 升级google-generativeai到最新稳定版
当前使用的0.3.2版本存在已知的Linux环境gRPC兼容问题,执行以下命令升级:
pip install --upgrade google-generativeai
3. 调整grpcio版本以匹配google-api-core
1.60.0版本的grpcio与部分旧版google-api-core存在兼容性冲突,降级到1.59.0:
pip install grpcio==1.59.0
4. 更新Linux系统SSL证书
部分Linux环境可能因证书缺失导致HTTPS请求失败,执行以下命令更新证书:
apt-get install ca-certificates update-ca-certificates
内容的提问来源于stack exchange,提问作者DJW
相关产品推荐
相关产品推荐

