You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Colab中用Vertex AI构建问答机器人遇gRPC连接错误求助

解决Vertex AI在Colab中调用时的gRPC UNAVAILABLE错误

错误分析

你遇到的StatusCode.UNAVAILABLE错误是gRPC无法建立到Vertex AI服务地址的连接,常见诱因包括认证失效、权限不足、依赖版本过时、区域资源不可用,或是Matching Engine配置问题。

排查与解决步骤

1. 重新验证Colab的Vertex AI认证

  • 在Colab中执行以下命令完成认证,确保当前账号有权限访问你的Google Cloud项目:
    !gcloud auth application-default login
    !gcloud config set project 你的项目ID
    
    替换你的项目ID为实际的Google Cloud项目ID,执行后确认无报错。

2. 检查Vertex AI资源状态

  • 确认TEXT_GENERATION_MODEL对应的模型(如text-bison)在你项目所在的区域是可用的,可通过Google Cloud控制台的Vertex AI模型库查询支持区域。
  • 查看Google Cloud状态页面,确认Vertex AI服务在目标区域无故障。

3. 升级依赖库

旧版本的google-cloud-aiplatform或grpcio可能存在连接兼容问题,执行以下命令升级:

!pip install --upgrade google-cloud-aiplatform grpcio

升级完成后重启Colab运行时,确保新依赖生效。

4. 调整gRPC网络配置

  • 添加gRPC日志环境变量,帮助定位连接细节:
    import os
    os.environ["GRPC_VERBOSITY"] = "INFO"
    os.environ["GRPC_TRACE"] = "tcp"
    
  • 在model.predict中添加超时参数,避免因连接等待过久触发错误:
    response = model.predict(
        prompt,
        temperature=0.2,
        top_k=40,
        top_p=.8,
        max_output_tokens=1024,
        timeout=300  # 超时设置为5分钟
    )
    

5. 单独测试Matching Engine连接

错误可能来自matching_engine_search函数,先单独运行该部分代码,确认是否能正常获取结果:

matching_engine_response = matching_engine_search(question)
print("Matching Engine返回结果:", matching_engine_response)

如果这一步也触发gRPC错误,需检查Matching Engine的索引端点、区域配置,以及账号是否有访问该索引的权限。

调整后的完整代码示例

# 升级依赖
!pip install --upgrade google-cloud-aiplatform grpcio

# 认证并设置项目
!gcloud auth application-default login
!gcloud config set project 你的项目ID

import os
os.environ["GRPC_VERBOSITY"] = "INFO"

from vertexai.preview.language_models import TextGenerationModel

# 先测试Matching Engine连接
matching_engine_response = matching_engine_search(question)
print("Matching Engine返回结果:", matching_engine_response)

prompt=f"""
Follow exactly those 3 steps:

1. Read the context below and aggregate this data
Context : {matching_engine_response}
2. Answer the question using only this context
3. Show the source for your answers
User Question: {question}

If you don't have any context and are unsure of the answer, reply that you don't know about this topic.
"""

model = TextGenerationModel.from_pretrained(TEXT_GENERATION_MODEL)
response = model.predict(
    prompt,
    temperature=0.2,
    top_k=40,
    top_p=.8,
    max_output_tokens=1024,
    timeout=300
)

print(f"Question: \n{question}")
print(f"Response: \n{response.text}")

内容的提问来源于stack exchange,提问作者Elnino09

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.12 21:14:54