上下文管理
AI 应用程序需要支持在同一轮会话的多条消息间共享上下文,或者在不同的会话场景先共享上下文。在 ARGI Graph 中,您可以添加两种类型的内存:
添加短期内存
短期内存(会话级持久化)使智能体能够跟踪多轮对话。要添加短期内存:
添加短期内存
// 创建内存检查点器
MemorySaver checkpointer = new MemorySaver();
SaverConfig saverConfig = SaverConfig.builder()
.register(checkpointer)
.build();
// 定义状态策略
KeyStrategyFactory keyStrategyFactory = () -> {
Map<String, KeyStrategy> keyStrategyMap = new HashMap<>();
keyStrategyMap.put("messages", new AppendStrategy());
return keyStrategyMap;
};
// 构建图
StateGraph stateGraph = new StateGraph(keyStrategyFactory)
.addNode("agent", agentNode)
.addEdge(START, "agent")
.addEdge("agent", END);
// 使用检查点器编译图
CompiledGraph graph = stateGraph.compile(
CompileConfig.builder()
.saverConfig(saverConfig)
.build()
);
// 使用会话 ID 调用图
RunnableConfig config = RunnableConfig.builder()
.threadId("user-session-1")
.build();
Map<String, Object> input = Map.of(
"messages", List.of(
Map.of("role", "user", "content", "你好!我是 Bob")
)
);
graph.invoke(input, config);
生产环境使用
在生产环境中,使用由数据库支持的检查点器:
Redis 检查点器
Redis 检查点器配置
import io.github.agentic.ai.graph.checkpoint.savers.RedisSaver;
import io.github.agentic.ai.graph.checkpoint.config.SaverConfig;
import io.github.agentic.ai.graph.checkpoint.constant.SaverConstant;
// Redis 配置
String redisHost = "localhost";
int redisPort = 6379;
RedisSaver redisSaver = new RedisSaver(redisHost, redisPort);
SaverConfig saverConfig = SaverConfig.builder()
.register(SaverConstant.REDIS, redisSaver)
.build();
CompiledGraph graph = stateGraph.compile(
CompileConfig.builder()
.saverConfig(saverConfig)
.build()
);