liurenchaxin/tmp_rovodev_vertex_check.py

122 lines
3.9 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
"""
临时健康检查脚本:验证本机 Vertex AI 基础配置是否完好。
使用说明:
python3 tmp_rovodev_vertex_check.py
运行完成后请将输出粘贴给我,我会据此给出修复建议。
完成诊断后可删除该文件。
"""
import os
import json
import sys
from pathlib import Path
STATUS = []
def ok(msg):
STATUS.append((True, msg))
print(f"{msg}")
def warn(msg):
STATUS.append((None, msg))
print(f"⚠️ {msg}")
def fail(msg):
STATUS.append((False, msg))
print(f"{msg}")
def has(var):
return bool(os.getenv(var))
print("🧪 Vertex AI 本地配置健康检查\n")
# 1) 关键环境变量与文件
adc_path = Path.home() / ".config/gcloud/application_default_credentials.json"
if adc_path.exists():
ok(f"找到 ADC (Application Default Credentials): {adc_path}")
else:
warn("未找到 ADC 文件 (~/.config/gcloud/application_default_credentials.json)。如果你改用服务账号密钥也可忽略此项")
vars_to_check = [
"GOOGLE_GENAI_USE_VERTEXAI",
"GOOGLE_CLOUD_PROJECT_ID",
"GOOGLE_CLOUD_LOCATION",
"VERTEX_MEMORY_BANK_ENABLED",
"GOOGLE_API_KEY",
"GOOGLE_SERVICE_ACCOUNT_KEY",
]
print("\n🔍 环境变量:")
for v in vars_to_check:
val = os.getenv(v)
if not val:
if v in ("GOOGLE_SERVICE_ACCOUNT_KEY", "GOOGLE_API_KEY"):
# 可选
warn(f"{v}: 未设置 (可选)")
else:
fail(f"{v}: 未设置")
else:
if v.endswith("KEY"):
ok(f"{v}: 已设置 (不显示具体值)")
else:
ok(f"{v}: {val}")
# 2) 依赖与版本
print("\n🔍 依赖google-cloud-aiplatform")
try:
import google
from google.cloud import aiplatform
ok(f"google-cloud-aiplatform 可导入,版本: {aiplatform.__version__}")
except Exception as e:
fail(f"无法导入 google-cloud-aiplatform: {e}")
# 3) 验证默认凭据可用性(若存在)
print("\n🔍 默认凭据 (ADC) 可用性:")
try:
import google.auth
from google.auth.transport.requests import Request
creds, proj = google.auth.default(scopes=[
"https://www.googleapis.com/auth/cloud-platform",
])
# 刷新一次,验证有效性
try:
creds.refresh(Request())
ok("默认凭据可用并成功刷新访问令牌")
except Exception as e:
warn(f"找到默认凭据,但刷新失败(可能未登录或网络受限):{e}")
if proj:
ok(f"默认凭据解析到的 Project: {proj}")
else:
warn("默认凭据未解析出 Project ID")
except Exception as e:
warn(f"未能通过 google.auth.default() 获取默认凭据:{e}")
# 4) 初始化 Vertex AI使用环境中的 Project/Location
print("\n🔍 Vertex AI 初始化:")
project = os.getenv("GOOGLE_CLOUD_PROJECT_ID")
location = os.getenv("GOOGLE_CLOUD_LOCATION", "us-central1")
if project:
try:
from google.cloud import aiplatform
aiplatform.init(project=project, location=location)
ok(f"Vertex AI 初始化成功: project={project}, location={location}")
except Exception as e:
fail(f"Vertex AI 初始化失败: {e}")
else:
fail("缺少 GOOGLE_CLOUD_PROJECT_ID无法初始化 Vertex AI")
# 5) 汇总
print("\n📋 检查摘要:")
all_good = True
for s, msg in STATUS:
if s is False:
all_good = False
if all_good:
print("\n🎉 结论:看起来你的 Vertex AI 本地配置是可用的。")
else:
print("\n🚧 结论:存在未通过项。请根据上面的 ❌/⚠️ 提示逐项修复后重试。")
print("\n提示:\n- 启用 Vertex 模式export GOOGLE_GENAI_USE_VERTEXAI=TRUE\n- 必填export GOOGLE_CLOUD_PROJECT_ID=你的项目ID\n- 可选export GOOGLE_CLOUD_LOCATION=us-central1\n- 建议使用 ADCgcloud auth application-default login\n- 或设置服务账号密钥export GOOGLE_SERVICE_ACCOUNT_KEY='(JSON 字符串或路径)'\n")