admin_ai_model_config.sql 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. -- =====================================================
  2. -- Admin DB: AI模型统一配置表
  3. -- 将除了FastGPT、TTS、图像/语音以外的所有AI模型配置
  4. -- 从租户DB迁移到Admin DB统一管理
  5. -- =====================================================
  6. -- 1. 模型配置表
  7. DROP TABLE IF EXISTS admin_ai_model;
  8. CREATE TABLE admin_ai_model (
  9. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
  10. model_name VARCHAR(100) NOT NULL COMMENT '模型显示名称',
  11. provider_code VARCHAR(50) NOT NULL COMMENT '供应商编码: doubao/qwen/yuanbao/deepseek',
  12. model_identifier VARCHAR(200) NOT NULL COMMENT '模型标识符, 如 doubao-1-5-pro-32k',
  13. api_endpoint VARCHAR(500) NOT NULL COMMENT 'API地址',
  14. api_key VARCHAR(500) NOT NULL COMMENT 'API密钥',
  15. embedding_endpoint VARCHAR(500) COMMENT '嵌入端点(可选)',
  16. max_tokens INT DEFAULT 4096 COMMENT '最大Token数',
  17. temperature DOUBLE DEFAULT 0.7 COMMENT '温度参数',
  18. sort_order INT DEFAULT 0 COMMENT '全局排序,越小越优先',
  19. status TINYINT DEFAULT 1 COMMENT '状态: 1启用 0禁用',
  20. create_by VARCHAR(50) DEFAULT 'system' COMMENT '创建人',
  21. create_time DATETIME DEFAULT NOW() COMMENT '创建时间',
  22. update_by VARCHAR(50) DEFAULT 'system' COMMENT '更新人',
  23. update_time DATETIME DEFAULT NOW() ON UPDATE NOW() COMMENT '更新时间'
  24. ) COMMENT='AI模型配置表(Admin DB统一管理, 不含FastGPT/TTS/图像/语音)';
  25. -- 2. 场景定义表
  26. DROP TABLE IF EXISTS admin_ai_scene;
  27. CREATE TABLE admin_ai_scene (
  28. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
  29. scene_code VARCHAR(50) NOT NULL UNIQUE COMMENT '场景编码',
  30. scene_name VARCHAR(100) NOT NULL COMMENT '场景名称',
  31. scene_type VARCHAR(20) NOT NULL DEFAULT 'single' COMMENT '场景类型: single单模型 / multi_pipeline多模型流水线',
  32. pipeline_type VARCHAR(30) COMMENT '流水线类型: sequential顺序调用 / scoring质量评分链',
  33. quality_threshold INT DEFAULT 120 COMMENT '质量评分通过阈值(满分160, 默认120)',
  34. status TINYINT DEFAULT 1 COMMENT '状态: 1启用 0禁用',
  35. create_by VARCHAR(50) DEFAULT 'system' COMMENT '创建人',
  36. create_time DATETIME DEFAULT NOW() COMMENT '创建时间',
  37. update_by VARCHAR(50) DEFAULT 'system' COMMENT '更新人',
  38. update_time DATETIME DEFAULT NOW() ON UPDATE NOW() COMMENT '更新时间'
  39. ) COMMENT='AI模型使用场景定义';
  40. -- 3. 场景-模型关联表(支持排序)
  41. DROP TABLE IF EXISTS admin_ai_scene_model;
  42. CREATE TABLE admin_ai_scene_model (
  43. id BIGINT AUTO_INCREMENT PRIMARY KEY COMMENT '主键',
  44. scene_code VARCHAR(50) NOT NULL COMMENT '关联场景编码',
  45. model_id BIGINT NOT NULL COMMENT '关联模型ID',
  46. pipeline_order INT DEFAULT 0 COMMENT '流水线中的顺序(min→max)',
  47. role VARCHAR(30) DEFAULT 'generator' COMMENT '角色: generator生成者 / scorer评分者',
  48. sort_weight INT DEFAULT 0 COMMENT '当多模型同级时的优先级权重',
  49. create_time DATETIME DEFAULT NOW() COMMENT '创建时间',
  50. INDEX idx_scene_code (scene_code),
  51. INDEX idx_model_id (model_id)
  52. ) COMMENT='场景-模型关联(支持排序)';
  53. -- =====================================================
  54. -- 初始化数据
  55. -- =====================================================
  56. -- 从 company_ai_provider 迁移现有模型(如存在)
  57. INSERT INTO admin_ai_model (model_name, provider_code, model_identifier, api_endpoint, api_key, embedding_endpoint, max_tokens, temperature, sort_order, status)
  58. SELECT
  59. provider_name,
  60. provider_code,
  61. model_name,
  62. api_endpoint,
  63. COALESCE(api_key, ''),
  64. CASE WHEN provider_code = 'doubao' THEN REPLACE(api_endpoint, '/chat/completions', '/embeddings')
  65. WHEN provider_code = 'qwen' THEN REPLACE(api_endpoint, '/chat/completions', '/embeddings')
  66. ELSE NULL END,
  67. COALESCE(max_tokens, 4096),
  68. COALESCE(temperature, 0.7),
  69. CASE WHEN is_default = 1 THEN 0 ELSE 10 END,
  70. enabled
  71. FROM company_ai_provider
  72. WHERE del_flag = 0 AND enabled = 1;
  73. -- 如果上述迁移没有数据,插入默认4种模型预设
  74. INSERT INTO admin_ai_model (model_name, provider_code, model_identifier, api_endpoint, api_key, embedding_endpoint, max_tokens, temperature, sort_order, status)
  75. SELECT * FROM (
  76. SELECT '豆包(Doubao)' AS model_name, 'doubao' AS provider_code, 'doubao-pro-32k' AS model_identifier,
  77. 'https://ark.cn-beijing.volces.com/api/v3/chat/completions' AS api_endpoint, '' AS api_key,
  78. 'https://ark.cn-beijing.volces.com/api/v3/embeddings' AS embedding_endpoint,
  79. 4096 AS max_tokens, 0.7 AS temperature, 0 AS sort_order, 1 AS status
  80. UNION ALL
  81. SELECT '通义千问(Qwen)', 'qwen', 'qwen-plus',
  82. 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions', '',
  83. 'https://dashscope.aliyuncs.com/compatible-mode/v1/embeddings',
  84. 8192, 0.7, 1, 1
  85. UNION ALL
  86. SELECT '元宝/混元(Yuanbao)', 'yuanbao', 'hunyuan-lite',
  87. 'https://api.hunyuan.cloud.tencent.com/v1/chat/completions', '',
  88. NULL, 4096, 0.7, 2, 1
  89. UNION ALL
  90. SELECT 'DeepSeek', 'deepseek', 'deepseek-chat',
  91. 'https://api.deepseek.com/v1/chat/completions', '',
  92. NULL, 8192, 0.7, 3, 1
  93. ) t
  94. WHERE NOT EXISTS (SELECT 1 FROM admin_ai_model LIMIT 1);
  95. -- 初始化19个场景
  96. INSERT INTO admin_ai_scene (scene_code, scene_name, scene_type, pipeline_type, quality_threshold, status) VALUES
  97. -- 多模型流水线场景
  98. ('workflow_generation', '工作流生成', 'multi_pipeline', 'sequential', NULL, 1),
  99. ('quality_scoring', '质量评分', 'multi_pipeline', 'scoring', 120, 1),
  100. -- 单模型场景
  101. ('workflow_llm', '工作流LLM回答', 'single', NULL, NULL, 1),
  102. ('workflow_fallback', '工作流兜底回答', 'single', NULL, NULL, 1),
  103. ('dynamic_node', '动态节点执行', 'single', NULL, NULL, 1),
  104. ('semantic_analysis', '语义意图分析', 'single', NULL, NULL, 1),
  105. ('summary_generation', '对话摘要', 'single', NULL, NULL, 1),
  106. ('content_moderation', '内容审核', 'single', NULL, NULL, 1),
  107. ('multi_turn_dialogue', '多轮对话管理', 'single', NULL, NULL, 1),
  108. ('takeover_detection', '转人工检测', 'single', NULL, NULL, 1),
  109. ('dynamic_adjustment', '动态节点调整', 'single', NULL, NULL, 1),
  110. ('workflow_evolution', '工作流进化', 'single', NULL, NULL, 1),
  111. ('template_evolution', '模板进化', 'single', NULL, NULL, 1),
  112. ('feedback_evolution', '反馈驱动进化', 'single', NULL, NULL, 1),
  113. ('event_decision', '事件决策', 'single', NULL, NULL, 1),
  114. ('user_optimization', '用户级优化', 'single', NULL, NULL, 1),
  115. ('corpus_analysis', '语料分析', 'single', NULL, NULL, 1),
  116. ('tenant_learning', '租户学习', 'single', NULL, NULL, 1),
  117. ('vector_embedding', '向量嵌入', 'single', NULL, NULL, 1);
  118. -- 为单模型场景绑定默认模型(取排序第一的doubao模型)
  119. INSERT INTO admin_ai_scene_model (scene_code, model_id, pipeline_order, role, sort_weight)
  120. SELECT s.scene_code, m.id, 0, 'generator', 0
  121. FROM admin_ai_scene s
  122. CROSS JOIN (SELECT id FROM admin_ai_model WHERE provider_code = 'doubao' AND status = 1 ORDER BY sort_order LIMIT 1) m
  123. WHERE s.scene_type = 'single'
  124. AND NOT EXISTS (SELECT 1 FROM admin_ai_scene_model sm WHERE sm.scene_code = s.scene_code);
  125. -- 为工作流生成场景绑定默认3模型流水线(如存在≥3个模型)
  126. INSERT INTO admin_ai_scene_model (scene_code, model_id, pipeline_order, role, sort_weight)
  127. SELECT 'workflow_generation', m.id, m.rn - 1,
  128. CASE WHEN m.rn = 1 THEN 'generator' WHEN m.rn = 2 THEN 'generator' ELSE 'scorer' END,
  129. 0
  130. FROM (SELECT id, ROW_NUMBER() OVER (ORDER BY sort_order) AS rn FROM admin_ai_model WHERE status = 1 LIMIT 3) m
  131. WHERE NOT EXISTS (SELECT 1 FROM admin_ai_scene_model WHERE scene_code = 'workflow_generation');
  132. -- 为质量评分场景绑定默认2模型流水线(如存在≥2个模型)
  133. INSERT INTO admin_ai_scene_model (scene_code, model_id, pipeline_order, role, sort_weight)
  134. SELECT 'quality_scoring', m.id, m.rn - 1,
  135. CASE WHEN m.rn = 1 THEN 'generator' ELSE 'scorer' END,
  136. 0
  137. FROM (SELECT id, ROW_NUMBER() OVER (ORDER BY sort_order) AS rn FROM admin_ai_model WHERE status = 1 LIMIT 2) m
  138. WHERE NOT EXISTS (SELECT 1 FROM admin_ai_scene_model WHERE scene_code = 'quality_scoring');