mirror of
https://gitcode.com/ageerle/ruoyi-ai.git
synced 2026-09-13 00:14:59 +00:00
feat: 新增 ChitChatAgent 闲聊兜底子 Agent 并接入 supervisor
简单任务无专业子 Agent 可用时由闲聊 Agent 兜底,避免 supervisor 空转返回空内容;通过 supervisorContext 约束仅在问候/闲聊场景路由到该 Agent。 Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,28 @@
|
||||
package org.ruoyi.agent;
|
||||
|
||||
import dev.langchain4j.agentic.Agent;
|
||||
import dev.langchain4j.service.SystemMessage;
|
||||
import dev.langchain4j.service.UserMessage;
|
||||
import dev.langchain4j.service.V;
|
||||
|
||||
/**
|
||||
* 闲聊兜底 Agent
|
||||
* 负责问候、日常闲聊和常识性问答,不挂任何工具。
|
||||
* 作为 supervisor 的默认落脚点,避免简单任务无子 Agent 可用导致输出为空。
|
||||
*
|
||||
* @author ageerle@163.com
|
||||
*/
|
||||
public interface ChitChatAgent {
|
||||
|
||||
@SystemMessage("""
|
||||
你是一个友好、自然的对话助手,负责问候、闲聊和常识性问答。
|
||||
要求:
|
||||
- 用与用户相同的语言回答,简洁自然
|
||||
- 不要编造需要实时数据或专业工具才能得到的事实
|
||||
- 如果用户的问题实际需要联网搜索、查数据库、执行技能或生成图表,直接说明这超出你的职责,
|
||||
让用户重新描述需求
|
||||
""")
|
||||
@UserMessage("{{query}}")
|
||||
@Agent("闲聊兜底助手:仅用于问候、日常闲聊和不需要联网搜索、数据库、技能或图表的通用问题")
|
||||
String chat(@V("query") String query);
|
||||
}
|
||||
@@ -34,6 +34,7 @@ import lombok.RequiredArgsConstructor;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.ruoyi.agent.ChartGenerationAgent;
|
||||
import org.ruoyi.agent.ChitChatAgent;
|
||||
import org.ruoyi.agent.EchartsAgent;
|
||||
import org.ruoyi.agent.SkillsAgent;
|
||||
import org.ruoyi.agent.SqlAgent;
|
||||
@@ -267,11 +268,18 @@ public class ChatServiceFacade implements IChatService {
|
||||
.listener(new MyAgentListener())
|
||||
.build();
|
||||
|
||||
// 构建子 Agent 6: ChitChatAgent - 简单闲聊兜底,避免无子 Agent 可用时 supervisor 空转
|
||||
ChitChatAgent chitChatAgent = AgenticServices.agentBuilder(ChitChatAgent.class)
|
||||
.chatModel(plannerModel)
|
||||
.build();
|
||||
|
||||
// 构建监督者 Agent - 管理多个子 Agent
|
||||
var supervisorBuilder = AgenticServices.supervisorBuilder()
|
||||
.chatModel(plannerModel)
|
||||
.subAgents(skillsAgent, searchAgent, sqlAgent, chartGenerationAgent, echartsAgent)
|
||||
.responseStrategy(SupervisorResponseStrategy.LAST);
|
||||
.subAgents(skillsAgent, searchAgent, sqlAgent, chartGenerationAgent, echartsAgent, chitChatAgent)
|
||||
.supervisorContext("仅当请求是问候或简单闲聊、不需要任何数据、搜索、技能或图表时,才使用 chitChatAgent;"
|
||||
+ "其余情况必须使用对应的专业 Agent")
|
||||
.responseStrategy(SupervisorResponseStrategy.SUMMARY);
|
||||
SupervisorAgent supervisor = supervisorBuilder.build();
|
||||
|
||||
// 知识库增强:智能体绑定了知识库时,对 supervisor 输入做一次 RAG 增强
|
||||
|
||||
Reference in New Issue
Block a user