feat: implement AI gateway phase one runtime

This commit is contained in:
2026-05-09 21:18:32 +08:00
parent a5e66e79cd
commit fdcdcd477b
46 changed files with 5678 additions and 768 deletions
@@ -0,0 +1,64 @@
WITH source_providers(provider_key, provider_code, provider_type, display_name, icon_path) AS (
VALUES
('easyai', 'easyai', 'easyai', 'EasyAI', ''),
('runninghub', 'runninghub', 'runninghub', 'RunningHub', ''),
('LiblibAI', 'LiblibAI', 'LiblibAI', 'LiblibAI', ''),
('keling', 'keling', 'keling', '可灵AI', 'https://static.51easyai.com/kling-color.webp'),
('gemini', 'google-gemini', 'google-gemini', 'Google Gemini', 'https://static.51easyai.com/gemini-color.png'),
('openai', 'openai', 'openai', 'OpenAI', ''),
('aliyun-bailian-openai', 'aliyun-bailian-openai', 'openai', '阿里云百炼(OpenAI兼容)', ''),
('gemini-openai', 'gemini-openai', 'openai', 'Gemini OpenAI兼容', 'https://static.51easyai.com/gemini-color.png'),
('volces-openai', 'volces-openai', 'openai', '火山引擎(OpenAI兼容)', 'https://ecmb.bdimg.com/tam-ogel/1801637412_-164881388_88_88.jpg'),
('zhipu-openai', 'zhipu-openai', 'openai', '智谱AI', 'https://static.51easyai.com/chatglm-color.webp'),
('minimax-openai', 'minimax-openai', 'openai', 'MiniMaxOpenAI兼容)', 'https://static.51easyai.com/minimax-color.png'),
('openrouter-openai', 'openrouter-openai', 'openai', 'OpenRouter', ''),
('aliyun-bailian', 'aliyun-bailian', 'aliyun-bailian', '阿里云百炼', 'https://static.51easyai.com/bailian-color.webp'),
('ollama', 'ollama', 'openai', 'Ollama', ''),
('blackforest', 'blackforest', 'blackforest', '黑森林实验室', 'https://easyai-1253343986.cos.ap-shanghai.myqcloud.com/663e19cd4fa9d8078385c7c9/upload/20250611132907371-blackforest.png'),
('dify', 'dify', 'dify', 'Dify', ''),
('volces', 'volces', 'volces', '火山引擎(豆包)', 'https://ecmb.bdimg.com/tam-ogel/1801637412_-164881388_88_88.jpg'),
('jimeng', 'jimeng', 'jimeng', '即梦AI', 'https://static.51easyai.com/jimeng-logo.png'),
('silicon-flow-openai', 'silicon-flow-openai', 'openai', '硅基流动', ''),
('tripo3d', 'tripo3d', 'tripo3d', 'Tripo3D', 'https://static.51easyai.com/tripo-logo.png'),
('tencent-hunyuan-image', 'tencent-hunyuan-image', 'tencent-hunyuan-image', '腾讯混元生图(第三方)', 'https://static.51easyai.com/hunyuan3d-logo.svg'),
('tencent-hunyuan-video', 'tencent-hunyuan-video', 'tencent-hunyuan-video', '腾讯混元视频(第三方)', 'https://static.51easyai.com/hunyuan3d-logo.svg'),
('tencent-hunyuan', 'tencent-hunyuan', 'tencent-hunyuan', '腾讯混元3D', 'https://static.51easyai.com/hunyuan3d-logo.svg'),
('suno', 'suno', 'suno', 'Suno音乐生成', 'https://static.51easyai.com/suno-logo.png'),
('minimax', 'minimax', 'minimax', 'MiniMax', 'https://static.51easyai.com/minimax-color.png'),
('midjourney', 'midjourney', 'midjourney', 'Midjourney', 'https://static.51easyai.com/midjourney.png'),
('tencent-lke', 'tencent-lke', 'tencent-lke', '腾讯云智能体开发平台', ''),
('universal', 'universal', 'universal', '自定义平台通用平台(支持自定义方式接入任意平台)', ''),
('newapi', 'newapi', 'newapi', 'NewAPI兼容平台', ''),
('vidu', 'vidu', 'vidu', 'Vidu视频生成', 'https://static.51easyai.com/vidu-color.webp'),
('n8n', 'n8n', 'n8n', 'n8n', ''),
('mock-test', 'mock-test', 'mock-test', 'Mock测试平台', '')
)
INSERT INTO model_catalog_providers (
provider_key, provider_code, provider_type, display_name, icon_path, source,
capability_schema, default_rate_limit_policy, metadata, status
)
SELECT provider_key,
provider_code,
provider_type,
display_name,
NULLIF(icon_path, ''),
'server-main.integration-platform',
'{}'::jsonb,
'{}'::jsonb,
jsonb_build_object(
'seed', 'server-main-provider-defaults',
'syncSource', 'server-main.integration-platform',
'sourceCode', provider_code,
'sourceSpecType', provider_type
),
'active'
FROM source_providers
ON CONFLICT (provider_key) DO UPDATE
SET provider_code = EXCLUDED.provider_code,
display_name = EXCLUDED.display_name,
provider_type = EXCLUDED.provider_type,
icon_path = EXCLUDED.icon_path,
source = EXCLUDED.source,
metadata = model_catalog_providers.metadata || EXCLUDED.metadata,
status = EXCLUDED.status,
updated_at = now();