mirror of
https://github.com/tencentmusic/supersonic.git
synced 2025-12-24 10:27:28 +08:00
[feature][headless-chat]Introduce ChatApp to support more flexible chat model config.#1739
This commit is contained in:
@@ -16,9 +16,11 @@ import com.tencent.supersonic.chat.server.plugin.PluginParseConfig;
|
||||
import com.tencent.supersonic.chat.server.plugin.build.WebBase;
|
||||
import com.tencent.supersonic.chat.server.plugin.build.webpage.WebPageQuery;
|
||||
import com.tencent.supersonic.chat.server.plugin.build.webservice.WebServiceQuery;
|
||||
import com.tencent.supersonic.common.pojo.ChatApp;
|
||||
import com.tencent.supersonic.common.pojo.JoinCondition;
|
||||
import com.tencent.supersonic.common.pojo.ModelRela;
|
||||
import com.tencent.supersonic.common.pojo.enums.*;
|
||||
import com.tencent.supersonic.common.util.ChatAppManager;
|
||||
import com.tencent.supersonic.common.util.JsonUtil;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetDetail;
|
||||
import com.tencent.supersonic.headless.api.pojo.DataSetModelConfig;
|
||||
@@ -148,6 +150,7 @@ public class S2VisitsDemo extends S2BaseDemo {
|
||||
agent.setEnableSearch(1);
|
||||
agent.setExamples(Lists.newArrayList("近15天超音数访问次数汇总", "按部门统计超音数的访问人数", "对比alice和lucy的停留时长",
|
||||
"过去30天访问次数最高的部门top3", "近1个月总访问次数超过100次的部门有几个", "过去半个月每个核心用户的总停留时长"));
|
||||
|
||||
// configure tools
|
||||
ToolConfig toolConfig = new ToolConfig();
|
||||
DatasetTool datasetTool = new DatasetTool();
|
||||
@@ -157,16 +160,10 @@ public class S2VisitsDemo extends S2BaseDemo {
|
||||
toolConfig.getTools().add(datasetTool);
|
||||
|
||||
agent.setToolConfig(JSONObject.toJSONString(toolConfig));
|
||||
// configure chat models
|
||||
Map<ChatModelType, Integer> chatModelConfig = Maps.newHashMap();
|
||||
chatModelConfig.put(ChatModelType.TEXT_TO_SQL, demoChatModel.getId());
|
||||
chatModelConfig.put(ChatModelType.MEMORY_REVIEW, demoChatModel.getId());
|
||||
chatModelConfig.put(ChatModelType.RESPONSE_GENERATE, demoChatModel.getId());
|
||||
chatModelConfig.put(ChatModelType.MULTI_TURN_REWRITE, demoChatModel.getId());
|
||||
agent.setChatModelConfig(chatModelConfig);
|
||||
|
||||
MultiTurnConfig multiTurnConfig = new MultiTurnConfig(true);
|
||||
agent.setMultiTurnConfig(multiTurnConfig);
|
||||
// configure chat apps
|
||||
Map<String, ChatApp> chatAppConfig = Maps.newHashMap(ChatAppManager.getAllApps());
|
||||
chatAppConfig.values().forEach(app -> app.setChatModelId(demoChatModel.getId()));
|
||||
agent.setChatAppConfig(chatAppConfig);
|
||||
Agent agentCreated = agentService.createAgent(agent, defaultUser);
|
||||
return agentCreated.getId();
|
||||
}
|
||||
|
||||
@@ -26,10 +26,6 @@ public class SmallTalkDemo extends S2BaseDemo {
|
||||
ToolConfig toolConfig = new ToolConfig();
|
||||
agent.setToolConfig(JSONObject.toJSONString(toolConfig));
|
||||
agent.setExamples(Lists.newArrayList("如何才能变帅", "如何才能赚更多钱", "如何才能世界和平"));
|
||||
MultiTurnConfig multiTurnConfig = new MultiTurnConfig();
|
||||
multiTurnConfig.setEnableMultiTurn(true);
|
||||
agent.setMultiTurnConfig(multiTurnConfig);
|
||||
|
||||
agentService.createAgent(agent, defaultUser);
|
||||
}
|
||||
|
||||
|
||||
@@ -387,3 +387,8 @@ CREATE TABLE IF NOT EXISTS `s2_chat_model` (
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='对话大模型实例表';
|
||||
ALTER TABLE s2_agent RENAME COLUMN config TO tool_config;
|
||||
ALTER TABLE s2_agent RENAME COLUMN model_config TO chat_model_config;
|
||||
|
||||
--20241011
|
||||
ALTER TABLE s2_agent DROP COLUMN prompt_config;
|
||||
ALTER TABLE s2_agent DROP COLUMN multi_turn_config;
|
||||
ALTER TABLE s2_agent DROP COLUMN enable_memory_review;
|
||||
|
||||
@@ -391,15 +391,12 @@ CREATE TABLE IF NOT EXISTS s2_agent
|
||||
tool_config varchar(2000) null,
|
||||
llm_config varchar(2000) null,
|
||||
chat_model_config varchar(6000) null,
|
||||
prompt_config varchar(5000) null,
|
||||
multi_turn_config varchar(2000) null,
|
||||
visual_config varchar(2000) null,
|
||||
created_by varchar(100) null,
|
||||
created_at TIMESTAMP null,
|
||||
updated_by varchar(100) null,
|
||||
updated_at TIMESTAMP null,
|
||||
enable_search int null,
|
||||
enable_memory_review int null,
|
||||
PRIMARY KEY (`id`)
|
||||
); COMMENT ON TABLE s2_agent IS 'agent information table';
|
||||
|
||||
|
||||
@@ -73,11 +73,8 @@ CREATE TABLE IF NOT EXISTS `s2_agent` (
|
||||
`tool_config` varchar(6000) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||
`llm_config` varchar(2000) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||
`chat_model_config` text COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||
`prompt_config` text COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||
`multi_turn_config` varchar(2000) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||
`visual_config` varchar(2000) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||
`enable_search` tinyint DEFAULT 1,
|
||||
`enable_memory_review` tinyint DEFAULT 0,
|
||||
`created_by` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||
`created_at` datetime DEFAULT NULL,
|
||||
`updated_by` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
|
||||
|
||||
@@ -8,7 +8,9 @@ import com.tencent.supersonic.chat.BaseTest;
|
||||
import com.tencent.supersonic.chat.api.pojo.response.QueryResult;
|
||||
import com.tencent.supersonic.chat.server.agent.*;
|
||||
import com.tencent.supersonic.chat.server.pojo.ChatModel;
|
||||
import com.tencent.supersonic.common.pojo.enums.ChatModelType;
|
||||
import com.tencent.supersonic.common.pojo.ChatApp;
|
||||
import com.tencent.supersonic.common.util.ChatAppManager;
|
||||
import com.tencent.supersonic.headless.chat.corrector.LLMSqlCorrector;
|
||||
import com.tencent.supersonic.util.DataUtils;
|
||||
import com.tencent.supersonic.util.LLMConfigUtils;
|
||||
import org.junit.jupiter.api.*;
|
||||
@@ -135,22 +137,22 @@ public class Text2SQLEval extends BaseTest {
|
||||
Agent agent = new Agent();
|
||||
agent.setName("Agent for Test");
|
||||
ToolConfig toolConfig = new ToolConfig();
|
||||
toolConfig.getTools().add(getLLMQueryTool());
|
||||
toolConfig.getTools().add(getDatasetTool());
|
||||
agent.setToolConfig(JSONObject.toJSONString(toolConfig));
|
||||
ChatModel chatModel = new ChatModel();
|
||||
chatModel.setName("Text2SQL LLM");
|
||||
chatModel.setConfig(LLMConfigUtils.getLLMConfig(LLMConfigUtils.LLMType.OLLAMA_LLAMA3));
|
||||
chatModel = chatModelService.createChatModel(chatModel, User.getDefaultUser());
|
||||
Map<ChatModelType, Integer> chatModelConfig = Maps.newHashMap();
|
||||
chatModelConfig.put(ChatModelType.TEXT_TO_SQL, chatModel.getId());
|
||||
agent.setChatModelConfig(chatModelConfig);
|
||||
MultiTurnConfig multiTurnConfig = new MultiTurnConfig();
|
||||
multiTurnConfig.setEnableMultiTurn(enableMultiturn);
|
||||
agent.setMultiTurnConfig(multiTurnConfig);
|
||||
Integer chatModelId = chatModel.getId();
|
||||
// configure chat apps
|
||||
Map<String, ChatApp> chatAppConfig = Maps.newHashMap(ChatAppManager.getAllApps());
|
||||
chatAppConfig.values().forEach(app -> app.setChatModelId(chatModelId));
|
||||
chatAppConfig.get(LLMSqlCorrector.APP_KEY).setEnable(true);
|
||||
agent.setChatAppConfig(chatAppConfig);
|
||||
return agent;
|
||||
}
|
||||
|
||||
private static DatasetTool getLLMQueryTool() {
|
||||
private static DatasetTool getDatasetTool() {
|
||||
DatasetTool datasetTool = new DatasetTool();
|
||||
datasetTool.setType(AgentToolType.DATASET);
|
||||
datasetTool.setDataSetIds(Lists.newArrayList(-1L));
|
||||
|
||||
@@ -391,15 +391,12 @@ CREATE TABLE IF NOT EXISTS s2_agent
|
||||
tool_config varchar(2000) null,
|
||||
llm_config varchar(2000) null,
|
||||
chat_model_config varchar(6000) null,
|
||||
prompt_config varchar(5000) null,
|
||||
multi_turn_config varchar(2000) null,
|
||||
visual_config varchar(2000) null,
|
||||
created_by varchar(100) null,
|
||||
created_at TIMESTAMP null,
|
||||
updated_by varchar(100) null,
|
||||
updated_at TIMESTAMP null,
|
||||
enable_search int null,
|
||||
enable_memory_review int null,
|
||||
PRIMARY KEY (`id`)
|
||||
); COMMENT ON TABLE s2_agent IS 'agent information table';
|
||||
|
||||
|
||||
Reference in New Issue
Block a user