Skip to content

[功能请求] 支持使用 Vertex AI的API Key 模式调用 #699

@Wzhenming

Description

@Wzhenming

我希望能够使用 API Key,而不仅是使用 Service Account JSON (saJSON) 生成 Bearer Token (Authorization: Bearer ...)进行认证,通过 aiplatform.googleapis.com 端点来调用 Vertex AI 模型,正如官方文档中所述:Vertex AI Quickstart (API Key)
目前的 GeminiVertexExecutor 实现存在逻辑限制:一旦检测到 API Key,它就默认目标是 Google AI Studio (generativelanguage.googleapis.com) 的通用格式,无法为 Vertex AI 构造正确的请求路径。

期望的解决方案
我希望 GeminiVertexExecutor 能够支持一种配置方式,允许我提供 base_url(指向 aiplatform.googleapis.com)和 api_key,同时能够正确地在 URL 路径中包含 project_idlocation 信息。

技术背景与代码分析
基于文件 internal/runtime/executor/gemini_vertex_executor.go 的分析:

  1. 逻辑分离问题:
    Execute 方法严格根据是否存在 API Key 来拆分逻辑分支,导致 Vertex AI 的相关逻辑(如项目ID和位置的处理)无法与 API Key 认证结合使用:
// internal/runtime/executor/gemini_vertex_executor.go

// 如果没有找到 API Key,才进入 Service Account 逻辑
if apiKey == "" {
    // ... (Service Account 逻辑,此处包含正确的 Vertex 路径构造)
}
// 强制进入 API Key 逻辑 (默认为 AI Studio)
return e.executeWithAPIKey(...)
  1. Vertex + API Key 的 URL 构造错误:
    executeWithAPIKey 方法构造的是简化版的 URL,适用于 AI Studio,缺少了 Vertex AI 必须的 Project 和 Location 字段:
// internal/runtime/executor/gemini_vertex_executor.go

// 当前实现 (适用于 AI Studio):
url := fmt.Sprintf("%s/%s/publishers/google/models/%s:%s", baseURL, vertexAPIVersion, upstreamModel, action)

Vertex AI 所需的正确 URL 格式:
https://{LOCATION}-aiplatform.googleapis.com/v1/projects/{PROJECT_ID}/locations/{LOCATION}/publishers/google/models/{MODEL_ID}:{ACTION}

补充信息
当前的实现阻碍了用户通过更简便的 API Key 认证方式来使用 Vertex AI 资源。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions