feat: AI端点测试动态参数表单、接口工作流行内测试、本地开发环境改为线上域名
- 后端新增 /ai/endpoint/test 和 /ai/endpoint/stream 接口,支持直接端点测试 - 前端增加行内测试功能(场景绑定+接口工作流) - 测试对话框增加动态参数表单和参数定义编辑 - 支持 _meta 格式的默认输入参数处理 - web、web-admin 本地开发环境 API 调用改为线上域名 https://lifescript.happylifeos.com Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -144,6 +144,34 @@ WHERE c.`is_deleted` = 0
|
||||
ORDER BY c.`create_time` DESC
|
||||
LIMIT 1;
|
||||
|
||||
INSERT INTO `t_ai_provider`
|
||||
(`id`, `provider_code`, `provider_name`, `provider_type`, `base_url`, `api_key`, `auth_type`, `default_headers`, `timeout_ms`, `is_enabled`, `description`)
|
||||
SELECT UUID(),
|
||||
CONCAT('coze_', REPLACE(c.`config_key`, '.', '_')),
|
||||
CONCAT(c.`config_name`, '服务商'),
|
||||
'coze',
|
||||
CASE
|
||||
WHEN c.`api_base_url` LIKE '%/v1/workflow/stream_run' THEN REPLACE(c.`api_base_url`, '/v1/workflow/stream_run', '')
|
||||
WHEN c.`api_base_url` LIKE '%/v3/chat' THEN REPLACE(c.`api_base_url`, '/v3/chat', '')
|
||||
ELSE c.`api_base_url`
|
||||
END,
|
||||
c.`api_token`,
|
||||
'bearer',
|
||||
NULL,
|
||||
COALESCE(c.`timeout_ms`, 60000),
|
||||
c.`is_enabled`,
|
||||
CONCAT('由旧 AI 配置迁移生成,配置键:', c.`config_key`)
|
||||
FROM `t_ai_config` c
|
||||
WHERE c.`is_deleted` = 0
|
||||
AND c.`provider` = 'coze'
|
||||
AND c.`api_token` IS NOT NULL
|
||||
AND c.`api_token` <> ''
|
||||
AND NOT EXISTS (
|
||||
SELECT 1 FROM `t_ai_provider` p
|
||||
WHERE p.`provider_code` COLLATE utf8mb4_unicode_ci = CONCAT('coze_', REPLACE(c.`config_key`, '.', '_')) COLLATE utf8mb4_unicode_ci
|
||||
AND p.`is_deleted` = 0
|
||||
);
|
||||
|
||||
INSERT INTO `t_ai_provider`
|
||||
(`id`, `provider_code`, `provider_name`, `provider_type`, `base_url`, `api_key`, `auth_type`, `default_headers`, `timeout_ms`, `is_enabled`, `description`)
|
||||
SELECT UUID(), 'dify_default', 'Dify 默认服务商', 'dify', 'http://49.232.138.53/v1', 'app-MqQOx09gCu9zzlKMpeLqHQHv',
|
||||
@@ -189,6 +217,12 @@ WHERE NOT EXISTS (
|
||||
SELECT 1 FROM `t_ai_endpoint_config` e WHERE e.`endpoint_code` = seed.endpoint_code AND e.`is_deleted` = 0
|
||||
);
|
||||
|
||||
UPDATE `t_ai_endpoint_config` e
|
||||
JOIN `t_ai_provider` p ON p.`provider_code` COLLATE utf8mb4_unicode_ci = CONCAT('coze_', REPLACE(e.`endpoint_code`, '.', '_')) COLLATE utf8mb4_unicode_ci AND p.`is_deleted` = 0
|
||||
SET e.`provider_id` = p.`id`
|
||||
WHERE e.`is_deleted` = 0
|
||||
AND e.`endpoint_code` LIKE 'coze.%';
|
||||
|
||||
UPDATE `t_ai_scene_binding` s
|
||||
JOIN `t_ai_endpoint_config` e ON e.`endpoint_code` = 'coze.chat.default' AND e.`is_deleted` = 0
|
||||
SET s.`endpoint_id` = e.`id`, s.`is_enabled` = 1, s.`required_stream` = 1, s.`description` = '已绑定现有 Coze 聊天工作流'
|
||||
@@ -230,3 +264,39 @@ UPDATE `t_ai_scene_binding` s
|
||||
JOIN `t_ai_endpoint_config` e ON e.`endpoint_code` = 'coze.user.dairy.summary' AND e.`is_deleted` = 0
|
||||
SET s.`endpoint_id` = e.`id`, s.`is_enabled` = 1, s.`required_stream` = 1, s.`description` = '已绑定现有 Coze 人生事件疗愈工作流'
|
||||
WHERE s.`scene_code` = 'life_healing' AND s.`is_deleted` = 0;
|
||||
|
||||
UPDATE `t_ai_endpoint_config`
|
||||
SET `default_inputs` = '{"input":{"_meta":{"label":"输入内容","type":"textarea","required":true},"value":"你好,请用一句中文回复:AI 接口测试成功。"},"user_id":{"_meta":{"label":"用户标识","type":"string","required":true},"value":"admin-test-user"}}'
|
||||
WHERE `endpoint_code` = 'coze.chat.default'
|
||||
AND `is_deleted` = 0
|
||||
AND (`default_inputs` IS NULL OR `default_inputs` = '' OR `default_inputs` = '{}');
|
||||
|
||||
UPDATE `t_ai_endpoint_config`
|
||||
SET `default_inputs` = '{"input":{"_meta":{"label":"剧本需求","type":"textarea","required":true},"value":"请生成一个关于普通人重新找回生活热情的短剧本,要求结构清晰、中文输出。"},"user_id":{"_meta":{"label":"用户标识","type":"string","required":true},"value":"admin-test-user"}}'
|
||||
WHERE `endpoint_code` = 'coze.course.life.generate'
|
||||
AND `is_deleted` = 0
|
||||
AND (`default_inputs` IS NULL OR `default_inputs` = '' OR `default_inputs` = '{}');
|
||||
|
||||
UPDATE `t_ai_endpoint_config`
|
||||
SET `default_inputs` = '{"input":{"_meta":{"label":"短篇小说主题","type":"textarea","required":true},"value":"请生成一篇 300 字以内的治愈短篇小说,主题是雨后的新开始。"},"user_id":{"_meta":{"label":"用户标识","type":"string","required":true},"value":"admin-test-user"}}'
|
||||
WHERE `endpoint_code` = 'coze.user.chose.story'
|
||||
AND `is_deleted` = 0
|
||||
AND (`default_inputs` IS NULL OR `default_inputs` = '' OR `default_inputs` = '{}');
|
||||
|
||||
UPDATE `t_ai_endpoint_config`
|
||||
SET `default_inputs` = '{"query":{"_meta":{"label":"用户问题","type":"textarea","required":true},"value":"请生成一个关于普通人重新找回生活热情的短剧本,要求结构清晰、中文输出。"},"inputs":{"_meta":{"label":"Dify 变量","type":"json","required":false},"value":{"input":"请生成一个关于普通人重新找回生活热情的短剧本,要求结构清晰、中文输出。","user_id":"admin-test-user"}},"response_mode":{"_meta":{"label":"响应模式","type":"string","required":true},"value":"streaming"},"conversation_id":{"_meta":{"label":"会话 ID","type":"string","required":false},"value":""},"user":{"_meta":{"label":"用户标识","type":"string","required":true},"value":"admin-test-user"},"user_id":{"_meta":{"label":"Dify 变量用户标识","type":"string","required":true},"value":"admin-test-user"}}'
|
||||
WHERE `endpoint_code` = 'dify.script_generate.chat_messages'
|
||||
AND `is_deleted` = 0
|
||||
AND (`default_inputs` IS NULL OR `default_inputs` = '' OR `default_inputs` = '{}' OR `default_inputs` NOT LIKE '%"user_id"%');
|
||||
|
||||
UPDATE `t_ai_endpoint_config`
|
||||
SET `default_inputs` = '{"query":{"_meta":{"label":"用户问题","type":"textarea","required":true},"value":"请生成一篇 300 字以内的治愈短篇小说,主题是雨后的新开始。"},"inputs":{"_meta":{"label":"Dify 变量","type":"json","required":false},"value":{"input":"请生成一篇 300 字以内的治愈短篇小说,主题是雨后的新开始。","user_id":"admin-test-user"}},"response_mode":{"_meta":{"label":"响应模式","type":"string","required":true},"value":"streaming"},"conversation_id":{"_meta":{"label":"会话 ID","type":"string","required":false},"value":""},"user":{"_meta":{"label":"用户标识","type":"string","required":true},"value":"admin-test-user"},"user_id":{"_meta":{"label":"Dify 变量用户标识","type":"string","required":true},"value":"admin-test-user"}}'
|
||||
WHERE `endpoint_code` = 'dify.short_story_generate.chat_messages'
|
||||
AND `is_deleted` = 0
|
||||
AND (`default_inputs` IS NULL OR `default_inputs` = '' OR `default_inputs` = '{}' OR `default_inputs` NOT LIKE '%"user_id"%');
|
||||
|
||||
UPDATE `t_ai_endpoint_config`
|
||||
SET `default_inputs` = '{"input":{"_meta":{"label":"事件或日记内容","type":"textarea","required":true},"value":"今天工作压力很大,但傍晚散步时感觉心情慢慢平静下来,请给我一段温和的回应。"},"user_id":{"_meta":{"label":"用户标识","type":"string","required":true},"value":"admin-test-user"}}'
|
||||
WHERE `endpoint_code` IN ('coze.user.dairy.summary', 'coze.user.life.state', 'coze.user.query.polish')
|
||||
AND `is_deleted` = 0
|
||||
AND (`default_inputs` IS NULL OR `default_inputs` = '' OR `default_inputs` = '{}');
|
||||
|
||||
Reference in New Issue
Block a user