🚀 PIG AI 新版来袭:AI能力全面升级! 点击了解一下?
ChatMemory chatMemory = MessageWindowChatMemory.withMaxMessages(10);
ChatMemory chatMemory = TokenWindowChatMemory.withMaxTokens(1000, new OpenAiTokenCountEstimator(GPT_3_5_TURBO);
public interface ChatAssistant { /** * 聊天 * * @param message 消息 * @return {@link String } */ String chat(String message); /** * 聊天 * * @param userId 用户 ID (根据ID隔离记忆) * @param message 消息 * @return {@link String } */ String chat(@MemoryId Long userId, @UserMessage String message); }
ChatMemory chatMemory = MessageWindowChatMemory.withMaxMessages(10); ChatAssistant assistant = AiServices.builder(ChatAssistant.class) .chatModel(chatModel) .chatMemory(chatMemory) .build(); String answer1 = assistant.chat("你好!我的名字是冷冷."); String answer2 = assistant.chat("我的名字是什么?");
ChatAssistant assistant = AiServices.builder(ChatAssistant.class) .chatModel(chatModel) // 注意每个memoryId对应创建一个ChatMemory .chatMemoryProvider(memoryId -> MessageWindowChatMemory.withMaxMessages(10)) .build(); assistant.chat(1L, "你好!我的名字是冷冷1."); assistant.chat(2L, "你好!我的名字是冷冷2."); String chat = assistant.chat(1L, "我的名字是什么"); System.out.println(chat); chat = assistant.chat(2L, "我的名字是什么"); System.out.println(chat);
public class PersistentChatMemoryStore implements ChatMemoryStore { private final DB db = DBMaker.fileDB("./chat-memory.db").transactionEnable().make(); private final Map<Integer, String> map = db.hashMap("messages", INTEGER, STRING).createOrOpen(); @Override public List<ChatMessage> getMessages(Object memoryId) { String json = map.get((int) memoryId); return messagesFromJson(json); } @Override public void updateMessages(Object memoryId, List<ChatMessage> messages) { String json = messagesToJson(messages); map.put((int) memoryId, json); db.commit(); } @Override public void deleteMessages(Object memoryId) { map.remove((int) memoryId); db.commit(); } }