-
-
Notifications
You must be signed in to change notification settings - Fork 1.6k
Description
我希望能够使用 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_id 和 location 信息。
技术背景与代码分析
基于文件 internal/runtime/executor/gemini_vertex_executor.go 的分析:
- 逻辑分离问题:
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(...)- 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 资源。