122 lines
3.9 KiB
Python
122 lines
3.9 KiB
Python
#!/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- 建议使用 ADC:gcloud auth application-default login\n- 或设置服务账号密钥:export GOOGLE_SERVICE_ACCOUNT_KEY='(JSON 字符串或路径)'\n")
|