type
Post
status
Published
date
Jan 20, 2026
slug
summary
直接用 OpenAI SDK + Redis 实现“可持久化的对话记忆”,并在对话变长时自动做摘要压缩,同时支持 Function Calling(工具调用)。[1]
核心思路
• 用 Redis 存储每个
session_id 的对话消息,做到进程重启后仍能恢复上下文。
• 当消息数或粗略 token 数超过阈值时,把较早的对话生成一段摘要,摘要单独存 Redis;同时只保留最近几条原始消息,形成“摘要 + 最近消息”的结构。
主要模块
1. OpenAIRedisMemoryManager(记忆管理器)
◦ 负责:存消息、读消息、估算 token、触发摘要、保存摘要、TTL 过期、清空会话等。[1]
2. OpenAIFunctionCallingAgent(Agent 封装)
◦ 负责:加载历史(可包含摘要作为 system message)→ 追加用户输入 → 调 OpenAI Chat Completions → 若模型返回 tool_calls 则执行本地函数并把结果以 tool 角色回写 → 循环直到拿到最终回复 → 最后把消息写回 Redis(可能触发摘要)。[1]
3. 工具定义与映射
◦ 按 OpenAI Function Calling 格式声明工具(如 search_web、calculate、get_price),并提供对应的本地函数实现与映射表。[1]
文章强调的优点
• 更轻量:不依赖 LangChain。[1]
• 更可控:对消息结构、摘要策略、存储键、TTL、保留最近消息数等完全可定制。[1]
• 更易调试:流程清晰,组件边界明确。tags
人工智能
推荐
category
技术分享
icon
password
