diff --git a/scripts/hunyuan_models_migration.sql b/scripts/hunyuan_models_migration.sql new file mode 100644 index 00000000..208073d2 --- /dev/null +++ b/scripts/hunyuan_models_migration.sql @@ -0,0 +1,83 @@ +-- ============================================================ +-- 腾讯混元大模型接入: Hunyuan via tokenhub.tencentmaas.com +-- +-- 模型: +-- 1. hy3 — 混元 Hy3 (旗舰对话模型) +-- 2. hy-vision-2.0-instruct — HY-Vision 2.0 (视觉理解) +-- 3. hy-image-3.0-plus — HY Image 3.0 Plus (文生图) +-- 4. hy-video-1.5-i2v — HY Video 1.5 I2V (图生视频) +-- 5. hy-video-1.5-t2v — HY Video 1.5 T2V (文生视频) +-- +-- Provider: 腾讯 (wNME9nrITooowlmCuR_XB) +-- Upapp: hunyun (5QXZ-AMP0K0NrcpZiTomA, baseurl: https://tokenhub.tencentmaas.com/v1) +-- 端点: OpenAI 兼容 /v1/chat/completions +-- ============================================================ + +-- ===================== Part 1: llm ===================== +INSERT INTO llm (id,name,model,description,iconid,upappid,providerid,ownerid,enabled_date,expired_date,min_balance,status) VALUES +('llm_hunyuan_hy3','hy3','hy3','混元 Hy3 — 旗舰对话模型,295B参数,128K上下文',NULL,'5QXZ-AMP0K0NrcpZiTomA','wNME9nrITooowlmCuR_XB','0','2025-01-01','2099-12-31',0.00,'published'), +('llm_hunyuan_vision2','hy-vision-2.0-instruct','hy-vision-2.0-instruct','HY-Vision 2.0 — 视觉理解模型,406B参数',NULL,'5QXZ-AMP0K0NrcpZiTomA','wNME9nrITooowlmCuR_XB','0','2025-01-01','2099-12-31',0.00,'published'), +('llm_hunyuan_image3','hy-image-3.0-plus','hy-image-3.0-plus','HY Image 3.0 Plus — 文生图模型',NULL,'5QXZ-AMP0K0NrcpZiTomA','wNME9nrITooowlmCuR_XB','0','2025-01-01','2099-12-31',0.00,'published'), +('llm_hunyuan_video_i2v','hy-video-1.5-i2v','hy-video-1.5-i2v','HY Video 1.5 I2V — 图生视频模型',NULL,'5QXZ-AMP0K0NrcpZiTomA','wNME9nrITooowlmCuR_XB','0','2025-01-01','2099-12-31',0.00,'published'), +('llm_hunyuan_video_t2v','hy-video-1.5-t2v','hy-video-1.5-t2v','HY Video 1.5 T2V — 文生视频模型',NULL,'5QXZ-AMP0K0NrcpZiTomA','wNME9nrITooowlmCuR_XB','0','2025-01-01','2099-12-31',0.00,'published') +ON DUPLICATE KEY UPDATE model=VALUES(model), description=VALUES(description); + +-- ===================== Part 2: llm_api_map ===================== +INSERT INTO llm_api_map (id,llmid,llmcatelogid,apiname,query_apiname,query_period,ppid,isdefaultcatelog) VALUES +('map_hunyuan_hy3','llm_hunyuan_hy3','t2t','t2t',NULL,NULL,'pp_hunyuan_hy3','1'), +('map_hunyuan_vision2','llm_hunyuan_vision2','vision','ti2t',NULL,NULL,'pp_hunyuan_vision2','1'), +('map_hunyuan_image3','llm_hunyuan_image3','t2i','t2t',NULL,NULL,'pp_hunyuan_image3','1'), +('map_hunyuan_video_i2v','llm_hunyuan_video_i2v','t2v','t2t',NULL,NULL,'pp_hunyuan_video_i2v','1'), +('map_hunyuan_video_t2v','llm_hunyuan_video_t2v','t2v','t2t',NULL,NULL,'pp_hunyuan_video_t2v','1') +ON DUPLICATE KEY UPDATE apiname=VALUES(apiname), ppid=VALUES(ppid); + +-- ===================== Part 3: uapiio ===================== +INSERT INTO uapiio (id,name,description,input_fields) VALUES +('hunyuan_chat_io','混元文本对话','文本对话输入输出','{"prompt":{"type":"string","required":true,"description":"用户输入文本"},"sys_prompt":{"type":"string","required":false,"description":"系统提示词"},"image_file":{"type":"string","required":false,"description":"图像URL(多模态)"},"max_tokens":{"type":"integer","required":false,"default":1024,"description":"最大输出token数"},"stream":{"type":"boolean","required":false,"description":"流式输出"}}'), +('hunyuan_vision_io','混元视觉理解','视觉理解输入输出','{"prompt":{"type":"string","required":true,"description":"用户输入文本"},"image_file":{"type":"string","required":true,"description":"图像URL"},"sys_prompt":{"type":"string","required":false,"description":"系统提示词"},"max_tokens":{"type":"integer","required":false,"default":1024,"description":"最大输出token数"}}'), +('hunyuan_image_io','混元图像生成','文生图输入输出','{"prompt":{"type":"string","required":true,"description":"图像描述文本"},"size":{"type":"string","required":false,"default":"1024x1024","description":"图像尺寸"},"n":{"type":"integer","required":false,"default":1,"description":"生成数量"}}'), +('hunyuan_video_i2v_io','混元图生视频','图生视频输入输出','{"image_file":{"type":"string","required":true,"description":"输入图像URL"},"prompt":{"type":"string","required":false,"description":"视频描述文本"},"duration":{"type":"integer","required":false,"default":5,"description":"视频时长(秒)"},"resolution":{"type":"string","required":false,"default":"720P","description":"分辨率"}}'), +('hunyuan_video_t2v_io','混元文生视频','文生视频输入输出','{"prompt":{"type":"string","required":true,"description":"视频描述文本"},"duration":{"type":"integer","required":false,"default":5,"description":"视频时长(秒)"},"resolution":{"type":"string","required":false,"default":"720P","description":"分辨率"}}') +ON DUPLICATE KEY UPDATE description=VALUES(description),input_fields=VALUES(input_fields); + +-- ===================== Part 3b: uapi (link ioid) ===================== +-- Reuse existing t2t/ti2t uapi for hunyun upapp; add image/video-specific ones if needed +UPDATE uapi SET ioid='hunyuan_chat_io' WHERE id='AP29-fYCll4l-byxm3DHN' AND upappid='5QXZ-AMP0K0NrcpZiTomA'; +UPDATE uapi SET ioid='hunyuan_vision_io' WHERE id='qStjXm_Meu0nBjiRzdPew' AND upappid='5QXZ-AMP0K0NrcpZiTomA'; + +-- ===================== Part 4: pricing_program ===================== +INSERT INTO pricing_program (id,name,ownerid,providerid,pricing_belong,description) VALUES +('pp_hunyuan_hy3','混元Hy3旗舰对话',NULL,'wNME9nrITooowlmCuR_XB',NULL,'295B参数·128K上下文·按token计费'), +('pp_hunyuan_vision2','HY-Vision 2.0视觉',NULL,'wNME9nrITooowlmCuR_XB',NULL,'406B参数·视觉理解·按token计费'), +('pp_hunyuan_image3','HY Image 3.0 Plus',NULL,'wNME9nrITooowlmCuR_XB',NULL,'文生图·按张计费'), +('pp_hunyuan_video_i2v','HY Video 1.5 I2V',NULL,'wNME9nrITooowlmCuR_XB',NULL,'图生视频·按秒计费'), +('pp_hunyuan_video_t2v','HY Video 1.5 T2V',NULL,'wNME9nrITooowlmCuR_XB',NULL,'文生视频·按秒计费') +ON DUPLICATE KEY UPDATE name=VALUES(name); + +-- ===================== Part 5: pricing_program_timing ===================== +INSERT INTO pricing_program_timing (id,ppid,name,pricing_data,enabled_date,expired_date) VALUES +-- Hy3: 输入0.015元/1K, 输出0.06元/1K (对标HY2.0 Think定价) +('pt_hunyuan_hy3','pp_hunyuan_hy3','混元Hy3定价', +'unit_values:\n completion_tokens: 1000\n prompt_tokens: 1000\nfields:\n price_factors:\n type: string\n role: factor\n label: 计价因子\n unit_prices:\n type: float\n role: factor\n label: 单位定价\n unit:\n type: string\n role: factor\n label: 计价单位\npricings:\n- price_factors: completion_tokens\n unit_prices: 0.06\n unit: 1K tokens\n- price_factors: prompt_tokens\n unit_prices: 0.015\n unit: 1K tokens', +'2025-01-01','9999-12-31'), + +-- HY-Vision 2.0: 输入0.003元/1K, 输出0.009元/1K +('pt_hunyuan_vision2','pp_hunyuan_vision2','HY-Vision 2.0定价', +'unit_values:\n completion_tokens: 1000\n prompt_tokens: 1000\nfields:\n price_factors:\n type: string\n role: factor\n label: 计价因子\n unit_prices:\n type: float\n role: factor\n label: 单位定价\n unit:\n type: string\n role: factor\n label: 计价单位\npricings:\n- price_factors: completion_tokens\n unit_prices: 0.009\n unit: 1K tokens\n- price_factors: prompt_tokens\n unit_prices: 0.003\n unit: 1K tokens', +'2025-01-01','9999-12-31'), + +-- HY Image 3.0 Plus: 0.02元/张 +('pt_hunyuan_image3','pp_hunyuan_image3','HY Image 3.0 Plus定价', +'unit_values:\n image_count: 1\nfields:\n price_factors:\n type: string\n role: factor\n label: 计价因子\n unit_prices:\n type: float\n role: factor\n label: 单位定价\n unit:\n type: string\n role: factor\n label: 计价单位\npricings:\n- price_factors: image_count\n unit_prices: 0.02\n unit: image_count', +'2025-01-01','9999-12-31'), + +-- HY Video 1.5 I2V: 0.15元/秒 +('pt_hunyuan_video_i2v','pp_hunyuan_video_i2v','HY Video 1.5 I2V定价', +'unit_values:\n video_seconds: 1\nfields:\n price_factors:\n type: string\n role: factor\n label: 计价因子\n unit_prices:\n type: float\n role: factor\n label: 单位定价\n unit:\n type: string\n role: factor\n label: 计价单位\npricings:\n- price_factors: video_seconds\n unit_prices: 0.15\n unit: video_seconds', +'2025-01-01','9999-12-31'), + +-- HY Video 1.5 T2V: 0.10元/秒 +('pt_hunyuan_video_t2v','pp_hunyuan_video_t2v','HY Video 1.5 T2V定价', +'unit_values:\n video_seconds: 1\nfields:\n price_factors:\n type: string\n role: factor\n label: 计价因子\n unit_prices:\n type: float\n role: factor\n label: 单位定价\n unit:\n type: string\n role: factor\n label: 计价单位\npricings:\n- price_factors: video_seconds\n unit_prices: 0.10\n unit: video_seconds', +'2025-01-01','9999-12-31') +ON DUPLICATE KEY UPDATE ppid=VALUES(ppid), pricing_data=VALUES(pricing_data);