Compare commits
2 Commits
35dca0a435
...
24d01bc3e1
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
24d01bc3e1 | ||
|
|
5dbd0b3a36 |
@@ -2,6 +2,8 @@ package com.xiang.xsa.xservice.ai.server;
|
|||||||
|
|
||||||
import com.xiang.xservice.ai.agent.BaseAgent;
|
import com.xiang.xservice.ai.agent.BaseAgent;
|
||||||
import com.xiang.xservice.ai.core.enums.ModelTypeEnum;
|
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 lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
import org.springframework.web.bind.annotation.GetMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
@@ -11,11 +13,12 @@ import org.springframework.web.bind.annotation.RestController;
|
|||||||
@RequiredArgsConstructor
|
@RequiredArgsConstructor
|
||||||
public class ChatController {
|
public class ChatController {
|
||||||
|
|
||||||
private final BaseAgent baseAgent;
|
private final AgentService agentService;
|
||||||
|
|
||||||
@GetMapping("/chat")
|
@GetMapping("/chat")
|
||||||
public String chatDemo(@RequestParam("question") String question, @RequestParam("memoryId") Long memoryId, @RequestParam("userId") Long userId) {
|
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";
|
return "321";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package com.xiang.xservice.ai.agent;
|
package com.xiang.xservice.ai.agent;
|
||||||
|
|
||||||
import com.xiang.xservice.ai.core.enums.ModelTypeEnum;
|
import com.xiang.xservice.ai.core.enums.ModelTypeEnum;
|
||||||
|
import com.xiang.xservice.ai.pojo.enums.AgentEnums;
|
||||||
|
|
||||||
public interface BaseAgent {
|
public interface BaseAgent {
|
||||||
/**
|
/**
|
||||||
@@ -11,4 +12,6 @@ public interface BaseAgent {
|
|||||||
* @param message
|
* @param message
|
||||||
*/
|
*/
|
||||||
void chat(ModelTypeEnum modelType, Long memoryId, Long userId, String message);
|
void chat(ModelTypeEnum modelType, Long memoryId, Long userId, String message);
|
||||||
|
|
||||||
|
AgentEnums agent();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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.entity.ModelConfig;
|
||||||
import com.xiang.xservice.ai.core.enums.ModelStrategyEnum;
|
import com.xiang.xservice.ai.core.enums.ModelStrategyEnum;
|
||||||
import com.xiang.xservice.ai.core.enums.ModelTypeEnum;
|
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.route.TaskRouter;
|
||||||
import com.xiang.xservice.ai.core.storage.DbPersistentStore;
|
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 com.xiang.xservice.ai.repository.manage.IAiSimpleChatMessageManage;
|
||||||
import dev.langchain4j.data.message.SystemMessage;
|
import dev.langchain4j.data.message.SystemMessage;
|
||||||
import dev.langchain4j.data.message.UserMessage;
|
import dev.langchain4j.data.message.UserMessage;
|
||||||
import dev.langchain4j.memory.chat.ChatMemoryProvider;
|
import dev.langchain4j.memory.chat.ChatMemoryProvider;
|
||||||
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
|
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
|
||||||
import dev.langchain4j.model.chat.ChatModel;
|
|
||||||
import dev.langchain4j.model.chat.StreamingChatModel;
|
import dev.langchain4j.model.chat.StreamingChatModel;
|
||||||
import dev.langchain4j.service.AiServices;
|
import dev.langchain4j.service.AiServices;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
@@ -69,4 +67,9 @@ public class SimpleChatAgent implements BaseAgent {
|
|||||||
.ignoreErrors()
|
.ignoreErrors()
|
||||||
.start();
|
.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AgentEnums agent() {
|
||||||
|
return AgentEnums.SIMPLE_CHAT_AGENT;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
@@ -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;
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user