Compare commits

..

2 Commits

Author SHA1 Message Date
Ttt
24d01bc3e1 feat:智能体创建 2026-03-13 23:40:31 +08:00
Ttt
5dbd0b3a36 feat:智能体创建 2026-03-13 23:38:25 +08:00
6 changed files with 76 additions and 5 deletions

View File

@@ -2,6 +2,8 @@ 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.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
@@ -11,11 +13,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

@@ -7,16 +7,14 @@ import com.xiang.xservice.ai.core.assistant.Assistant;
import com.xiang.xservice.ai.core.entity.ModelConfig;
import com.xiang.xservice.ai.core.enums.ModelStrategyEnum;
import com.xiang.xservice.ai.core.enums.ModelTypeEnum;
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;
import dev.langchain4j.memory.chat.ChatMemoryProvider;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.model.chat.ChatModel;
import dev.langchain4j.model.chat.StreamingChatModel;
import dev.langchain4j.service.AiServices;
import lombok.RequiredArgsConstructor;
@@ -69,4 +67,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,31 @@
package com.xiang.xservice.ai.service;
import com.google.common.collect.Maps;
import com.xiang.xservice.ai.agent.BaseAgent;
import com.xiang.xservice.ai.pojo.enums.AgentEnums;
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;
}
}