接入 Google Agent Platform 并开放已验证的 AI Studio embedding

This commit is contained in:
Codex
2026-10-09 09:02:00 -07:00
parent db09881b2d
commit d3a487f86a
5 changed files with 27 additions and 0 deletions
+3
View File
@@ -7,3 +7,6 @@ ZENMUX_SUBSCRIPTION_API_KEY=
ZENMUX_PAYG_API_KEY=
OPENROUTER_API_KEY=
GOOGLE_AI_STUDIO_API_KEY=
VERTEXAI_ENABLED=false
VERTEXAI_PROJECT=
VERTEXAI_LOCATION=global
+4
View File
@@ -38,6 +38,10 @@ services:
ZENMUX_PAYG_API_KEY: ${ZENMUX_PAYG_API_KEY:-}
OPENROUTER_API_KEY: ${OPENROUTER_API_KEY:-}
GOOGLE_AI_STUDIO_API_KEY: ${GOOGLE_AI_STUDIO_API_KEY:-}
VERTEXAI_ENABLED: ${VERTEXAI_ENABLED:-false}
VERTEXAI_PROJECT: ${VERTEXAI_PROJECT:-}
VERTEXAI_LOCATION: ${VERTEXAI_LOCATION:-global}
GOOGLE_APPLICATION_CREDENTIALS: /tokens/google/adc.json
CHATGPT_TOKEN_DIR: /tokens/chatgpt
XAI_OAUTH_TOKEN_DIR: /tokens/xai
LITELLM_LOG: WARNING
+5
View File
@@ -13,6 +13,11 @@ google_ai_studio:
gemini-flash-latest: gemini-flash-latest
gemini-flash-lite-latest: gemini-flash-lite-latest
gemini-pro-latest: gemini-pro-latest
gemini-embedding-2-studio: gemini-embedding-2
google_vertex:
gemini-flash-vertex: gemini-3.8-flash
gemini-flash-lite-vertex: gemini-3.5-flash-lite
gemini-pro-vertex: gemini-3.1-pro-preview
# 已有 Hindsight 部署用过的候选模型;本代理仍需独立授权与请求验收。
# renderer 在实际 token 出现前排除这些路线。
chatgpt:
@@ -34,6 +34,11 @@ def build_config(catalog, env, exists):
if env.get('GOOGLE_AI_STUDIO_API_KEY'):
for alias, model in catalog['google_ai_studio'].items():
add(alias, 'gemini/' + model, 'GOOGLE_AI_STUDIO_API_KEY')
if env.get('VERTEXAI_ENABLED', '').lower() == 'true' and env.get('VERTEXAI_PROJECT'):
for alias, model in catalog.get('google_vertex', {}).items():
add(alias, 'vertex_ai/' + model,
vertex_project='os.environ/VERTEXAI_PROJECT',
vertex_location='os.environ/VERTEXAI_LOCATION')
for provider, token_var, default_dir in [
('chatgpt', 'CHATGPT_TOKEN_DIR', '/tokens/chatgpt'),
('xai', 'XAI_OAUTH_TOKEN_DIR', '/tokens/xai'),
+10
View File
@@ -9,6 +9,7 @@ class ConfigTests(unittest.TestCase):
'zenmux': {'claude-sonnet-latest': 'anthropic/claude-sonnet-5.5'},
'openrouter': {'glm-latest': 'z-ai/glm-5.3-prime'},
'google_ai_studio': {'gemini-latest': 'gemini-test'},
'google_vertex': {'gemini-vertex': 'gemini-vertex-test'},
'chatgpt': {'codex-latest': 'gpt-test'},
'xai': {'grok-latest': 'grok-test'},
}
@@ -44,6 +45,15 @@ class ConfigTests(unittest.TestCase):
path.write_text('{"access_token": "fixture-only"}')
self.assertTrue(oauth_ready(path))
def test_vertex_requires_explicit_enable_and_project(self):
for env in ({'VERTEXAI_PROJECT': 'test-project'}, {'VERTEXAI_ENABLED': 'true'}):
self.assertEqual(build_config(self.catalog, env, lambda _: False)['model_list'], [])
routes = build_config(self.catalog, {'VERTEXAI_ENABLED': 'true',
'VERTEXAI_PROJECT': 'test-project'}, lambda _: False)['model_list']
self.assertEqual(routes[0]['litellm_params']['model'], 'vertex_ai/gemini-vertex-test')
self.assertEqual(routes[0]['litellm_params']['vertex_project'], 'os.environ/VERTEXAI_PROJECT')
self.assertNotIn('api_key', routes[0]['litellm_params'])
if __name__ == '__main__':
unittest.main()