Labs

Claude与Vertex AI整合:用GCP积分运行Anthropic模型

Claude与Vertex AI整合:用GCP积分运行Anthropic模型

在AI开发实践中,资源整合和成本控制是常见挑战。本文作者团队遇到了一个典型问题:他们拥有Google Cloud Platform (GCP) 的积分,希望将其用于AI模型推理,但其常用的Claude Code工具却默认调用Anthropic的Messages API,而非Vertex AI平台上的Anthropic模型接口。这种API和计费方式的错配,导致了重复的API密钥管理、额度分散以及账单复杂化。

为解决这一痛点,作者构建了一个本地网关,成功将Claude Code的请求转发至Vertex AI,从而实现了用GCP积分来驱动Anthropic模型的愿望。

技术挑战:API接口不匹配

直接连接Claude Code和Vertex AI会发现它们之间存在明显的API接口差异。

  • Claude Code预期的是符合Anthropic规范的请求格式:
    • POST /v1/messages
    • 包含Anthropic特有的头部信息
    • Anthropic风格的内容块
    • Anthropic的流式传输语义
  • Vertex AI对于Claude模型,其请求地址通常是:
    • .../publishers/anthropic/models/claude-sonnet-4-6:rawPredict
  • 对于Gemini模型,则是:
    • .../publishers/google/models/gemini-2.5-pro:generateContent

这意味着需要一个中间层,能够无缝接收Claude Code发出的Anthropic兼容请求,并将其转换为Vertex AI可以理解和处理的格式。

解决方案:利用CliGate本地网关

作者选择了CliGate作为这个中间层。CliGate是一个灵活的本地网关,它能够统一管理和路由来自不同CLI工具(如Claude Code、Codex CLI、Gemini CLI)的请求到多个上游服务提供商。

对于本场景,CliGate的优势在于其能将Vertex AI视为一个带有API密钥的常规上游服务。在CliGate中,配置Vertex AI的关键在于存储以下信息:

  • type: vertex-ai
  • projectId (GCP项目ID)
  • location (GCP区域)

特别地,apiKey字段可以直接存放完整的Google服务账号JSON配置,而非简单的API密钥字符串。

5分钟快速设置指南

以下是使用CliGate连接Claude Code与Vertex AI的简化步骤:

1. 启动CliGate网关

在本地终端运行以下命令即可启动CliGate:

npx cligate@latest start

网关启动后,默认管理面板可通过http://localhost:8081访问。

2. 添加Vertex AI作为API密钥提供商

可以通过CliGate的仪表板界面进行配置,也可以直接通过cURL命令提交:

curl -X POST http://localhost:8081/api/keys \
  -H "Content-Type: application/json" \
  -d '{
    "type": "vertex-ai",
    "name": "vertex-work",
    "apiKey": "{\"type\":\"service_account\",\"project_id\":\"my-project\", ... }",
    "projectId": "my-project",
    "location": "us-central1"
  }'

请注意,这里的apiKey字段是Google服务账号的完整JSON对象。

3. 将Claude Code指向本地网关

通过设置环境变量,让Claude Code将请求发送到本地运行的CliGate网关:

export ANTHROPIC_BASE_URL=http://localhost:8081
export ANTHROPIC_API_KEY=any-key
claude

至此,Claude Code仍旧以为它在与一个Anthropic兼容的服务器通信。而实际上,这个“服务器”是CliGate,它会根据配置将请求路由到Vertex AI,从而利用GCP积分来执行Anthropic模型的推理任务。

实践价值

通过这种方式,开发者不仅能够有效利用已有的GCP积分,避免了额外的API密钥管理和账单分散,还可以在不修改现有工具使用习惯的前提下,灵活切换底层AI服务提供商,实现资源的优化配置。

↗ 阅读原文