Refactor backend to support interface-definition driven model resources
- Introduce a new model structure for managing interface definitions and model resources, enhancing the backend's capability to handle various service integrations. - Update the Makefile to reflect changes in database seeding and resource management commands. - Remove the deprecated credentials management routes and replace them with a unified model registry API. - Modify existing routes and schemas to align with the new model structure, ensuring seamless integration with the frontend. - Enhance database seeding scripts to populate new model resources and their configurations. - Update README documentation to reflect the new architecture and usage instructions for model resources and interface definitions.
This commit is contained in:
48
backend/db/seed_model_resources.sql
Normal file
48
backend/db/seed_model_resources.sql
Normal file
@@ -0,0 +1,48 @@
|
||||
-- 模型资源种子数据。依赖应用启动时写入 interface_definitions。
|
||||
|
||||
INSERT INTO model_resources
|
||||
(id, name, capability, interface_type, values, secrets, enabled, is_default)
|
||||
VALUES
|
||||
('model_001', 'DeepSeek-Chat', 'LLM', 'openai-llm',
|
||||
'{"modelId":"deepseek-chat","apiUrl":"https://api.deepseek.com/v1","temperature":0.7}',
|
||||
'{"apiKey":"replace-me"}', TRUE, TRUE),
|
||||
('model_002', 'SiliconFlow-TeleSpeechASR', 'ASR', 'openai-asr',
|
||||
'{"modelId":"TeleAI/TeleSpeechASR","apiUrl":"https://api.siliconflow.cn/v1","language":"zh"}',
|
||||
'{"apiKey":"replace-me"}', TRUE, FALSE),
|
||||
('model_003', 'SiliconFlow-Qwen3-Embedding-4B', 'Embedding', 'openai-embedding',
|
||||
'{"modelId":"Qwen/Qwen3-Embedding-4B","apiUrl":"https://api.siliconflow.cn/v1"}',
|
||||
'{"apiKey":"replace-me"}', TRUE, TRUE),
|
||||
('model_004', 'SiliconFlow-CosyVoice2-0.5B', 'TTS', 'openai-tts',
|
||||
'{"modelId":"FunAudioLLM/CosyVoice2-0.5B","apiUrl":"https://api.siliconflow.cn/v1","voice":"FunAudioLLM/CosyVoice2-0.5B:anna","speed":1.0,"sourceSampleRate":24000}',
|
||||
'{"apiKey":"replace-me"}', TRUE, FALSE),
|
||||
'{"apiKey":"replace-me"}', TRUE, FALSE),
|
||||
('model_005', '讯飞语音识别', 'ASR', 'xfyun-asr',
|
||||
'{"apiUrl":"https://iat-api.xfyun.cn/v2/iat","language":"zh_cn","domain":"iat","accent":"mandarin","dynamicCorrection":false,"frameSize":1280}',
|
||||
'{"appId":"replace-me","apiKey":"replace-me","apiSecret":"replace-me"}', TRUE, TRUE),
|
||||
('model_006', 'Paraformer 识别', 'ASR', 'dashscope-asr',
|
||||
'{"modelId":"paraformer-realtime-v2","apiUrl":"https://dashscope.aliyuncs.com/api/v1/services/audio/asr","language":"zh"}',
|
||||
'{"apiKey":"replace-me"}', TRUE, FALSE),
|
||||
('model_007', '讯飞语音合成', 'TTS', 'xfyun-tts',
|
||||
'{"apiUrl":"https://tts-api.xfyun.cn/v2/tts","voice":"xiaoyan","speed":50,"volume":50,"pitch":50,"sourceSampleRate":16000}',
|
||||
'{"appId":"replace-me","apiKey":"replace-me","apiSecret":"replace-me"}', TRUE, TRUE),
|
||||
('model_008', 'CosyVoice 合成', 'TTS', 'dashscope-tts',
|
||||
'{"modelId":"cosyvoice-v1","apiUrl":"https://dashscope.aliyuncs.com/api/v1/services/audio/tts","voice":"longxiaochun"}',
|
||||
'{"apiKey":"replace-me"}', TRUE, FALSE),
|
||||
('model_009', 'GPT Realtime', 'Realtime', 'openai-realtime',
|
||||
'{"modelId":"gpt-4o-realtime-preview","apiUrl":"https://api.openai.com/v1/realtime"}',
|
||||
'{"apiKey":"replace-me"}', TRUE, TRUE),
|
||||
('model_010', 'Gemini Live', 'Realtime', 'gemini-realtime',
|
||||
'{"modelId":"gemini-2.0-flash-live","apiUrl":"https://generativelanguage.googleapis.com/v1beta"}',
|
||||
'{"apiKey":"replace-me"}', TRUE, FALSE),
|
||||
('model_011', 'text-embedding-3', 'Embedding', 'openai-embedding',
|
||||
'{"modelId":"text-embedding-3-small","apiUrl":"https://api.openai.com/v1/embeddings"}',
|
||||
'{"apiKey":"replace-me"}', TRUE, FALSE)
|
||||
ON CONFLICT (id) DO UPDATE SET
|
||||
name = EXCLUDED.name,
|
||||
capability = EXCLUDED.capability,
|
||||
interface_type = EXCLUDED.interface_type,
|
||||
values = EXCLUDED.values,
|
||||
secrets = EXCLUDED.secrets,
|
||||
enabled = EXCLUDED.enabled,
|
||||
is_default = EXCLUDED.is_default,
|
||||
updated_at = now();
|
||||
Reference in New Issue
Block a user