接入 Google Agent Platform 并开放已验证的 AI Studio embedding
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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'),
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user