hazelcast langchain4j 持久化

hazelcast langchain4j 持久化

java 复制代码
hazelcast langchain4j 持久化

package org.folio.rest.util;

import dev.langchain4j.data.message.ChatMessage;
import dev.langchain4j.data.message.ChatMessageDeserializer;
import dev.langchain4j.data.message.ChatMessageSerializer;
import dev.langchain4j.memory.chat.ChatMemoryProvider;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.store.memory.chat.ChatMemoryStore;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;

import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

public class HazelcastChatMemoryStore implements ChatMemoryStore {

private final IMap<Object, String> memoryMap;
private final ConcurrentMap<Object, Object> locks = new ConcurrentHashMap<>();

public HazelcastChatMemoryStore(HazelcastInstance hazelcastInstance) {
this.memoryMap = hazelcastInstance.getMap("chat-memories");
}

@Override
public List<ChatMessage> getMessages(Object memoryId) {
String value = memoryMap.get(memoryId);
return ChatMessageDeserializer.messagesFromJson(value);
// return value != null ? ChatMessageDeserializer.messagesFromJson(value) : null;
}

@Override
public void updateMessages(Object memoryId, List<ChatMessage> messages) {
memoryMap.set(memoryId, ChatMessageSerializer.messagesToJson(messages));
}

@Override
public void deleteMessages(Object memoryId) {
memoryMap.delete(memoryId);
locks.remove(memoryId);
}

// 获取锁,用于并发控制
public Object getLock(Object memoryId) {
return locks.computeIfAbsent(memoryId, k -> new Object());
}
}

package org.folio.rest.util;

import dev.langchain4j.data.message.ChatMessage;
import dev.langchain4j.data.message.ChatMessageDeserializer;
import dev.langchain4j.data.message.ChatMessageSerializer;
import dev.langchain4j.memory.chat.ChatMemoryProvider;
import dev.langchain4j.memory.chat.MessageWindowChatMemory;
import dev.langchain4j.store.memory.chat.ChatMemoryStore;
import com.hazelcast.core.HazelcastInstance;
import com.hazelcast.map.IMap;

import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;

public class HazelcastChatMemoryStore implements ChatMemoryStore {

private final IMap<Object, String> memoryMap;
private final ConcurrentMap<Object, Object> locks = new ConcurrentHashMap<>();

public HazelcastChatMemoryStore(HazelcastInstance hazelcastInstance) {
this.memoryMap = hazelcastInstance.getMap("chat-memories");
}

@Override
public List<ChatMessage> getMessages(Object memoryId) {
String value = memoryMap.get(memoryId);
return ChatMessageDeserializer.messagesFromJson(value);
// return value != null ? ChatMessageDeserializer.messagesFromJson(value) : null;
}

@Override
public void updateMessages(Object memoryId, List<ChatMessage> messages) {
memoryMap.set(memoryId, ChatMessageSerializer.messagesToJson(messages));
}

@Override
public void deleteMessages(Object memoryId) {
memoryMap.delete(memoryId);
locks.remove(memoryId);
}

// 获取锁,用于并发控制
public Object getLock(Object memoryId) {
return locks.computeIfAbsent(memoryId, k -> new Object());
}
}

hazlcast记录上下文

相关推荐
天天有money1 小时前
Claude 中转站用于报告生成:会议纪要、周报和项目复盘怎么提效
gpt·ai·chatgpt
liulilittle1 小时前
反量化:反量化Q8零(q8_0)
人工智能·算法·机器学习·ai·llm
doubt。2 小时前
RAG与Agent智能体项目实战教程跟练与解析(前置准备与OpenAI库基础使用)
python·ai·pip
TechEdu20260612 小时前
[人工智能]TensorFlow深度学习框架工程实践概览
人工智能·深度学习·ai·tensorflow
秃了也弱了。14 小时前
AI-anent:2026火热的agent:Hermes Agent
ai
Tbisnic15 小时前
LangChain的 六大核心组件与 RAG 知识库构建
人工智能·python·ai·langchain·rag·langgraph
俊哥V18 小时前
每日 AI 研究简报 · 2026-08-07
人工智能·ai
赵大仁19 小时前
浏览器端 RAG:Transformers.js + WebGPU 本地检索入门
前端·ai·react·webgpu·rag