openai-agents-python Session会话记忆指南:3步搞定多轮对话不失忆
发布时间:2026/9/3 11:10:12 作者:尧图编辑部 阅读量:1,286

openai-agents-python Session会话记忆指南3步搞定多轮对话不失忆【免费下载链接】openai-agents-pythonA lightweight, powerful framework for multi-agent workflows项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-python做一个聊天机器人最容易挨骂的就是失忆用户刚说完那个项目进度怎么样了机器人反问一句哪个项目。根源在于每次调用模型都是独立的上一轮聊了什么并没有带过去。openai-agents-pythonOpenAI Agents SDK里的 Session 会话记忆系统就是干这件事的按 session_id 自动存取对话历史让智能体跨轮次保持上下文不用你手动拼对话列表。5分钟配好会话记忆最小可运行示例整个用法就两件事建一个 session把它传给Runner.run。from agents import Agent, Runner, SQLiteSession agent Agent(nameAssistant, instructionsReply very concisely.) session SQLiteSession(conversation_123) # 内存模式进程退出即清空 result await Runner.run(agent, What city is the Golden Gate Bridge in?, sessionsession) print(result.final_output) # San Francisco result await Runner.run(agent, What state is it in?, sessionsession) print(result.final_output) # California —— 它自己记得上文第二轮只问了它所在的州模型却能回答 California因为历史已经自动带进去了。完整可运行版本见 examples/memory/sqlite_session_example.py官方说明见 docs/sessions.md。它到底怎么工作Runner 替你做的 3 件事 不用.to_input_list()之类的手工操作自动化逻辑在 src/agents/run.py 的 Runner 内部流程是运行前Runner 调用session.get_items(...)取出该会话的历史拼到本次输入前面运行后本轮产生的新内容用户输入、助手回复、工具调用等自动写回 session下一轮重复第 1、2 步上下文链就续上了。每次运行拉多少历史也可以控制recent await session.get_items(limit2) # 只取最近 2 条 full await session.get_items() # 取全部另外四个基础操作get_items/add_items/pop_item/clear_session定义在 src/agents/memory/session.py 的Session协议里想直接增删查改历史都可以。存储方案怎么选生产环境该接哪个后端SQLiteSession只是起步。按你当前的部署形态挑一个就行全部内置实现见 docs/sessions.md你现在的处境建议起点一句话理由本地开发、临时验证SQLiteSession(session_id)内存模式零配置进程结束即丢不留垃圾数据单机应用、要长期留存SQLiteSession(session_id, conversations.db)文件模式一个 db 文件搞定不用维护服务多进程/多实例共享同一份历史RedisSession低延迟多个 worker 都能读写生产环境已有数据库SQLAlchemySession接 PostgreSQL、MySQL 等源码见 src/agents/extensions/memory/sqlalchemy_session.py深度绑定 OpenAI 生态OpenAIConversationsSession历史存服务端conversation_idconv_123可恢复旧对话本地零存储敏感数据、有合规要求EncryptedSession包装任意后端Fernet 加密ttl600到点自动过期几个落地细节多智能体可以共用一个 session——support 和 billing 两个 Agent 先后Runner.run(..., sessionsession)后者会看到前者留下的完整历史适合多角色协作场景。敏感场景的标准写法是先建底层会话再套加密层EncryptedSession(session_iduser_123, underlying_sessionunderlying_session, encryption_keyyour-encryption-key, ttl600)。session id 建议用有业务含义的字符串user_12345按用户、thread_abc123按会话线程、support_ticket_456按工单排障时一眼能对上数据。常见坑与 FAQ ⚠️回复错了怎么撤销连调两次pop_item()就能把最后一轮的用户问题和助手回复依次弹出再用修正后的问题重新 runawait session.pop_item() # 弹出助手回复 await session.pop_item() # 弹出用户问题 result await Runner.run(agent, Whats 2 3?, sessionsession)交互式产品里这是很实用的反悔入口。历史越攒越长token 扛不住怎么办get_items(limit2)只是取的时候限运行时可以用RunConfig(session_settingsSessionSettings(limit50))控制每轮拉取的条数更灵活的裁剪、重排可以用RunConfig.session_input_callback回调收到history和new_input两个列表返回合并后的最终输入即可。session 和 conversation_id 能一起用吗不能。同一次 run 里session 不能与conversation_id、previous_response_id、auto_previous_response_id混用——它们都是继续对话的机制选一种就行。想接自己的存储后端不用继承什么基类只要实现Session协议的四个方法get_items、add_items、pop_item、clear_session并带session_id属性直接传给Runner.run(..., session...)就能跑。协议定义在 src/agents/memory/session.py照着填 Redis、MongoDB 或内部存储的实现即可。会话记忆是 openai-agents-python 里改动量最小、收益最明显的一块能力一个参数接入多轮对话立刻有了长期记忆。从内存 SQLite 起步等规模上来再换后端代码基本不用动。【免费下载链接】openai-agents-pythonA lightweight, powerful framework for multi-agent workflows项目地址: https://gitcode.com/GitHub_Trending/op/openai-agents-python创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考