2026/5/21 16:05:50
网站建设
项目流程
网站建设解决方案好处,新网站怎么快速收录必做,合肥外贸网站建设公司价格,校园网站建设计划本文详细介绍了agno框架中的Session和Memory机制#xff0c;用于解决大模型调用无状态问题。Session实现会话级别记忆#xff0c;可通过session_id区分不同对话#xff1b;Memory实现用户级别记忆#xff0c;记录用户信息和偏好。两者均通过db存储实现数据持久化。文章通过…本文详细介绍了agno框架中的Session和Memory机制用于解决大模型调用无状态问题。Session实现会话级别记忆可通过session_id区分不同对话Memory实现用户级别记忆记录用户信息和偏好。两者均通过db存储实现数据持久化。文章通过代码示例展示了Session的创建、使用和管理以及会话缓存机制的应用帮助开发者实现AI Agent的连续对话功能。编程不只是写代码更是避坑和积累。这里记录我一路踩过的坑、解决的难题和实用的方法希望能帮你少踩点雷多点灵感。关注我一起写出更靠谱的代码 相关概念大模型的调用是无状态的每次调用Agent.run()时它会创建一个单一的、无状态的交互。代理会响应你的消息之后代理就“忘记” 这次对话了再次调用 run 方法时只会用这次新的消息作为上下文和模型进行对话。但大多数实际应用需要的是对话而不仅仅是一次性的交互。这就是会话的作用所在。agno 为了解决 agent 记忆问题使用 Session 和 Memory 机制。本文聚焦在 Session 的使用上。Session 会话session 是会话级别同一个用户和 agent 进行对话比如一开始聊财经相关的内容聊了很久以后想换个话题聊点体育相关的内容为了不让之前关于财经的内容影响之后聊体育的对话内容这时可以新建一个会话相当于强制忘掉之前财经内容。Session 对应于 langgraph 中的短时记忆(short-term memory)。每个会话都有自己的 session_id如果不提供的话agno 会自己生成一个。Memory 记忆Memory 记忆是针对用户级别的是帮助 agent 更好的了解用户当对话中出现相关信息例如用户的姓名、偏好或习惯时具备记忆功能的智能体会自动将其存储在数据库中。之后当这些信息再次变得相关时智能体会自动检索并将其自然地运用到对话中。这样智能体就能在与用户的互动中有效地学习每个用户的信息。当对话中涉及到用户信息相关的内容这时就需要 agent 记住默认的 Memory instruction 是以下内容(翻译以后的)记忆功能应记录与当前对话相关的用户个人信息例如- 个人信息姓名、年龄、职业、所在地、兴趣爱好和偏好- 观点和偏好用户喜欢、不喜欢、享受或感到沮丧的事物- 用户分享的重要人生事件或经历- 与用户当前状况、挑战或目标相关的重要背景信息- 任何其他能够深入了解用户个性、观点或需求的信息当然也可以自定义 Memory instruction让 agent 记住我们想让它记住的内容。这块内容以后再详细介绍。db无论是 Session 会话还是 Memory 记忆都需要将内容进行存储而 db 则为会话和以及提供了底层的存储。如果不设置 db即使有 session_id 和 user_idagent(以及之后要介绍的 Teams 和 workflow) 也是无法实现记忆的因为根本就没有将数据存储下来agno 官方提供了很多常见的存储实现如 postgresql, mongodb, mysql, redis, sqlite 等等本地测试过程中通常使用 sqlite 或者 InMemoryDb(内存)生产环境需要使用高可用的存储。Session 实践agno_agent Agent( nameAgno Agent, modelOpenAILike( api_keyos.getenv(OPENAI_API_KEY), idqwen-max ), add_history_to_contextTrue, dbSqliteDb(db_fileagno.db), debug_modeTrue, debug_level2, markdownTrue, ) resp agno_agent.run(你好我叫 yyx 你是谁 ) print(resp.content) resp agno_agent.run(我叫什么名字) print(resp.content)这里定义 Agent 时需要使用add_history_to_contextTrue, 这样 agent 在每次交互过程中才会去获取历史消息并添加到本次任务消息中。上面代码得到的结果是(第一次调用)DEBUG user DEBUG 你好我叫 yyx 你是谁DEBUG assistant DEBUG 你好yyx我是通义千问是阿里云开发的人工智能助手。很高兴认识你有什么我可以帮助你的吗(第二次调用)DEBUG user DEBUG 你好我叫 yyx 你是谁 DEBUG assistant DEBUG 你好yyx我是通义千问是阿里云开发的人工智能助手。很高兴认识你有什么我可以帮助你的吗DEBUG user DEBUG 我叫什么名字DEBUG assistant DEBUG 你刚刚告诉我你的名字叫 yyx。第二次调用时已经将第一次调用的消息带了上去。所以第二次的消息agent 可以说出我的名字。session_id 如何产生的上面的代码并没有传如 session_id agent 在调用 run 方法的时候会使用 uuid 生成一个 session_id 在本次脚本运行过程中会使用相同的 session_id。但是更加推荐的方式是客户端传入 session_id这样使用 agno 搭建一个 agent 后端服务用户的会话就由客户端来控制了在使用 agentOS 进行 agent 对话时也是由前端生成 session_id 传给后端。agno_agent Agent( nameAgno Agent, modelOpenAILike( api_keyos.getenv(OPENAI_API_KEY), idqwen-max ), dbSqliteDb(db_fileagno.db), add_history_to_contextTrue, debug_modeTrue, debug_level2, markdownTrue, )resp agno_agent.run(你好我叫 yyx 你是谁 , session_idconversion_123) print(resp.content) resp agno_agent.run(我叫什么名字, session_idconversion_123) print(resp.content)# 停止脚本注释掉# resp agno_agent.run(你好我叫 yyx 你是谁 )resp agno_agent.run(我叫什么名字session_idconversion_123)这里调用 agent.run 方法时传入了 session_id 参数当第一次调用结束以后注释掉介绍自己的代码直接问我的名字此时 agent 可以获取到历史消息。Session 管理agent 可以对 session 数据进行管理包括消息获取写入总结等等agno_agent Agent( nameAgno Agent, modelOpenAILike( api_keyos.getenv(OPENAI_API_KEY), idqwen-max ), dbSqliteDb(db_fileagno.db), add_history_to_contextTrue, debug_modeTrue, debug_level2, markdownTrue, ) session agno_agent.get_session(conversion_123) messages session.get_messages() for message in messages: print(message.content)使用agent.get_session()可以获得会话中所有运行的所有消息包括工具调用和系统消息additional_information- Use markdown to format your answers./additional_information你好我叫 yyx 你是谁 你好yyx我是Qwen由阿里云开发的超大规模语言模。很高兴认识你我可以帮助回答问题、提供信息、进行对话等。请问有什么我可以帮到你的吗我叫什么名字你刚才告诉我你的名字是 yyx。如果你有其他昵称或者想用不同的名字称呼你请告诉我我叫什么名字你叫 yyx。如果你有其他名字或者昵称也可以告诉我如果要获取仅包含用户和助手消息的更简单的列表可以使用get_chat_history方法:messages agno_agent.get_chat_history(session_idconversion_123, last_n_runs5) for message in messages: print(message.content, |, message.role)get_chat_history 可以传 last_n_runs 来控制获取最近的多少轮会话。Session Caching 会话缓存会话缓存会将会话对象存储在内存中以提高性能。cache_sessionTrue会在首次数据库读取后将已填充的会话对象保留在内存中从而避免后续运行进行额外的查询。from agno.agent import Agentfrom agno.models.openai import OpenAIChatagno_agent Agent( nameAgno Agent, modelOpenAILike( api_keyos.getenv(OPENAI_API_KEY), idqwen-max ), dbSqliteDb(db_fileagno.db), add_history_to_contextTrue, cache_sessionTrue markdownTrue, )# First run loads from database and cachesagent.run(First message)# Subsequent runs use cached session (faster)agent.run(Second message)总结agno 中通过 session 和 memory 来实现短时记忆和用户信息记忆session 是会话级别的memory 是用户级别的。底层都是通过 db 来实现数据的存储。AI时代未来的就业机会在哪里答案就藏在大模型的浪潮里。从ChatGPT、DeepSeek等日常工具到自然语言处理、计算机视觉、多模态等核心领域技术普惠化、应用垂直化与生态开源化正催生Prompt工程师、自然语言处理、计算机视觉工程师、大模型算法工程师、AI应用产品经理等AI岗位。掌握大模型技能就是把握高薪未来。那么普通人如何抓住大模型风口AI技术的普及对个人能力提出了新的要求在AI时代持续学习和适应新技术变得尤为重要。无论是企业还是个人都需要不断更新知识体系提升与AI协作的能力以适应不断变化的工作环境。因此这里给大家整理了一份《2026最新大模型全套学习资源》包括2026最新大模型学习路线、大模型书籍、视频教程、项目实战、最新行业报告、面试题、AI产品经理入门到精通等带你从零基础入门到精通快速掌握大模型技术由于篇幅有限有需要的小伙伴可以扫码获取1. 成长路线图学习规划要学习一门新的技术作为新手一定要先学习成长路线图方向不对努力白费。这里我们为新手和想要进一步提升的专业人士准备了一份详细的学习成长路线图和规划。2. 大模型经典PDF书籍书籍和学习文档资料是学习大模型过程中必不可少的我们精选了一系列深入探讨大模型技术的书籍和学习文档它们由领域内的顶尖专家撰写内容全面、深入、详尽为你学习大模型提供坚实的理论基础。书籍含电子版PDF3. 大模型视频教程对于很多自学或者没有基础的同学来说书籍这些纯文字类的学习教材会觉得比较晦涩难以理解因此我们提供了丰富的大模型视频教程以动态、形象的方式展示技术概念帮助你更快、更轻松地掌握核心知识。4. 大模型项目实战学以致用当你的理论知识积累到一定程度就需要通过项目实战在实际操作中检验和巩固你所学到的知识同时为你找工作和职业发展打下坚实的基础。5. 大模型行业报告行业分析主要包括对不同行业的现状、趋势、问题、机会等进行系统地调研和评估以了解哪些行业更适合引入大模型的技术和应用以及在哪些方面可以发挥大模型的优势。6. 大模型面试题面试不仅是技术的较量更需要充分的准备。在你已经掌握了大模型技术之后就需要开始准备面试我们将提供精心整理的大模型面试题库涵盖当前面试中可能遇到的各种技术问题让你在面试中游刃有余。为什么大家都在学AI大模型随着AI技术的发展企业对人才的需求从“单一技术”转向 “AI行业”双背景。企业对人才的需求从“单一技术”转向 “AI行业”双背景。金融AI、制造AI、医疗AI等跨界岗位薪资涨幅达30%-50%。同时很多人面临优化裁员近期科技巨头英特尔裁员2万人传统岗位不断缩减因此转行AI势在必行这些资料有用吗这份资料由我们和鲁为民博士(北京清华大学学士和美国加州理工学院博士)共同整理现任上海殷泊信息科技CEO其创立的MoPaaS云平台获Forrester全球’强劲表现者’认证服务航天科工、国家电网等1000企业以第一作者在IEEE Transactions发表论文50篇获NASA JPL火星探测系统强化学习专利等35项中美专利。本套AI大模型课程由清华大学-加州理工双料博士、吴文俊人工智能奖得主鲁为民教授领衔研发。资料内容涵盖了从入门到进阶的各类视频教程和实战项目无论你是小白还是有些技术基础的技术人员这份资料都绝对能帮助你提升薪资待遇转行大模型岗位。大模型全套学习资料已整理打包有需要的小伙伴可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】