#!/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")