feat:智能体创建

This commit is contained in:
Ttt
2026-03-13 23:38:25 +08:00
parent 35dca0a435
commit 5dbd0b3a36
6 changed files with 82 additions and 2 deletions

View File

@@ -2,7 +2,10 @@ package com.xiang.xsa.xservice.ai.server;
import com.xiang.xservice.ai.agent.BaseAgent;
import com.xiang.xservice.ai.core.enums.ModelTypeEnum;
import com.xiang.xservice.ai.pojo.enums.AgentEnums;
import com.xiang.xservice.ai.service.AgentService;
import lombok.RequiredArgsConstructor;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@@ -11,11 +14,12 @@ import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
public class ChatController {
private final BaseAgent baseAgent;
private final AgentService agentService;
@GetMapping("/chat")
public String chatDemo(@RequestParam("question") String question, @RequestParam("memoryId") Long memoryId, @RequestParam("userId") Long userId) {
baseAgent.chat(ModelTypeEnum.OPEN_AI, memoryId, userId, question);
BaseAgent agent = agentService.createAgent(AgentEnums.SIMPLE_CHAT_AGENT);
agent.chat(ModelTypeEnum.OPEN_AI, memoryId, userId, question);
return "321";
}

View File

@@ -1,6 +1,7 @@
package com.xiang.xservice.ai.agent;
import com.xiang.xservice.ai.core.enums.ModelTypeEnum;
import com.xiang.xservice.ai.pojo.enums.AgentEnums;
public interface BaseAgent {
/**
@@ -11,4 +12,6 @@ public interface BaseAgent {
* @param message
*/
void chat(ModelTypeEnum modelType, Long memoryId, Long userId, String message);
AgentEnums agent();
}

View File

@@ -11,6 +11,7 @@ import com.xiang.xservice.ai.core.handler.MyStreamingHandler;
import com.xiang.xservice.ai.core.route.TaskRouter;
import com.xiang.xservice.ai.core.storage.DbPersistentStore;
import com.xiang.xservice.ai.core.storage.MemoryPersistentStore;
import com.xiang.xservice.ai.pojo.enums.AgentEnums;
import com.xiang.xservice.ai.repository.manage.IAiSimpleChatMessageManage;
import dev.langchain4j.data.message.SystemMessage;
import dev.langchain4j.data.message.UserMessage;
@@ -69,4 +70,9 @@ public class SimpleChatAgent implements BaseAgent {
.ignoreErrors()
.start();
}
@Override
public AgentEnums agent() {
return AgentEnums.SIMPLE_CHAT_AGENT;
}
}

View File

@@ -0,0 +1,18 @@
package com.xiang.xservice.ai.agent;
import com.xiang.xservice.ai.core.enums.ModelTypeEnum;
import com.xiang.xservice.ai.pojo.enums.AgentEnums;
import org.springframework.stereotype.Service;
@Service
public class StockAnalysisAgent implements BaseAgent{
@Override
public void chat(ModelTypeEnum modelType, Long memoryId, Long userId, String message) {
}
@Override
public AgentEnums agent() {
return AgentEnums.STOCK_ANALYZER_AGENT;
}
}

View File

@@ -0,0 +1,13 @@
package com.xiang.xservice.ai.pojo.enums;
import lombok.AllArgsConstructor;
import lombok.Getter;
@Getter
@AllArgsConstructor
public enum AgentEnums {
SIMPLE_CHAT_AGENT("SimpleChatAgent"),
STOCK_ANALYZER_AGENT("StockAnalysisAgent"),
;
private final String name;
}

View File

@@ -0,0 +1,36 @@
package com.xiang.xservice.ai.service;
import com.google.common.collect.Maps;
import com.xiang.xservice.ai.agent.BaseAgent;
import com.xiang.xservice.ai.agent.SimpleChatAgent;
import com.xiang.xservice.ai.agent.StockAnalysisAgent;
import com.xiang.xservice.ai.config.OpenAIBaseConfig;
import com.xiang.xservice.ai.core.route.TaskRouter;
import com.xiang.xservice.ai.pojo.enums.AgentEnums;
import com.xiang.xservice.ai.repository.manage.IAiSimpleChatMessageManage;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.stream.Collectors;
@Service
@RequiredArgsConstructor
public class AgentService {
private final static Map<AgentEnums, BaseAgent> agents = Maps.newHashMap();
public AgentService(List<BaseAgent> agentList) {
agents.putAll(agentList.stream()
.collect(Collectors.toMap(BaseAgent::agent, Function.identity())));
}
public BaseAgent createAgent(AgentEnums name) {
BaseAgent agent = agents.get(name);
if (Objects.isNull(agent)) throw new RuntimeException("Agent not found: " + name);
return agent;
}
}