尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
【AI大模型】如何使用 LangChain 建立一个会话式的 RAG Agent 系统,看完这一篇你就懂了!!!
前言在许多问答应用程序中我们希望允许用户进行来回对话这意味着应用程序需要记住过去问题和答案以及将这些问题和答案纳入当前思维的逻辑。在本文中我们重点介绍如何添加整合历史消息的逻辑。我们将介绍两种方法链我们始终在其中执行检索步骤Agent我们让 LLM 自行决定是否以及如何执行检索步骤或多个步骤。聊天记录聊天记录是用户与聊天模型之间对话的记录。它用于在整个对话过程中保持上下文和状态。聊天记录是一系列消息每条消息都与特定角色相关联例如“user”、“assistant”、“system”或“tool”。大多数对话都以设置对话上下文的系统消息开始。接下来是包含用户输入的用户消息然后是包含模型响应的助手消息。助手assistant可以直接响应用户或者如果配置了工具请求则调用工具来执行特定任务。因此完整的对话通常涉及两种交替消息模式的组合用户和助手代表来回对话。助手和工具消息表示的 agent 工作流其中助手正在调用工具来执行特定任务。由于聊天模型对输入大小有最大限制因此管理聊天记录并根据需要对其进行修剪以避免超出上下文窗口非常重要。在处理聊天记录时保留正确的对话结构至关重要。管理聊天记录的关键准则对话应遵循以下结构之一第一则消息是“user”消息或“system”消息后跟“user”消息然后是“assistant”消息。最后一条消息应该是“user”消息或包含工具调用结果的“tool”消息。使用工具调用时“tool”消息应仅跟在请求工具调用的“assistant”消息之后。理解正确的对话结构对于在聊天模型中正确实现记忆至关重要。原始的 RAG 系统我略过了加载文档、拆分文档和生成索引的步骤因为这和本文关系不大。添加聊天记录我们构建的 RAG 链直接使用输入查询来检索相关上下文。但在对话设置中用户查询可能需要对话上下文才能被理解。例如考虑以下的会话用户“物理学对马斯克有什么影响”AI“物理学为马斯克提供了一个理解复杂和反直觉事物的研究框架比如量子力学。它教会他使用第一性原理思考问题这是一种将事物分解到最基本实质再进行推理的方法对探索未知领域非常重要。这种方法帮助他在创新时能追溯问题的本质从而产生独创性的解决方案。”用户“马斯克对这个学科有什么看法”为了回答第二个问题我们的系统需要理解“这个学科”指的是“物理学”。针对这个问题我们需要更新现有的 RAG 链提示模板更新我们的提示模板以支持历史消息作为输入。上下文问题添加一个子链该子链接受最新的用户问题并在聊天历史的上下文中重新表述它。这可以简单地被认为是构建一个新的“历史感知”检索器retriever。而之前我们有查询 - 检索器现在我们将有查询对话历史- LLM - 重新表述的查询 - 检索器首先我们需要定义一个子链该子链接收历史消息和最新的用户问题如果问题引用了历史信息中的任何信息则重新表述该问题。我们将使用一个包含名为“chat_history”的 MessagesPlaceholder 变量的提示。这允许我们使用“chat_history”输入键将消息列表传递给提示模板这些消息将插入在系统消息之后和包含最新问题的人工消息之前。请注意我们利用辅助函数 create_history_aware_retriever 来完成此步骤该函数管理 chat_history 为空的情况否则按顺序应用 prompt | llm | StrOutputParser() | retriever。create_history_aware_retriever 构造一个链该链接受键 input 和 chat_history 作为输入并具有与检索器相同的输出模式。该链将输入查询的改写添加到我们的检索器中以便检索包含对话的上下文。现在我们可以构建完整的 QA 链。我们将使用 create_stuff_documents_chain 生成 question_answer_chain输入键为 context、chat_history 和 input——它接受检索到的上下文以及对话历史记录和查询以生成答案。更详细的解释在这里我们使用 create_retrieval_chain 构建最终的 rag_chain。此链按顺序应用 history_aware_retriever 和 question_answer_chain保留中间输出例如检索到的上下文以方便使用。它具有输入键 input 和 chat_history并在其输出中包含 input、chat_history、context 和 answer。我们来试验一下因为我们的链包含“chat_history”输入所以调用者需要管理聊天记录。我们可以通过将输入和输出消息附加到列表中来实现这一点。但是在生产中问答应用程序通常会将聊天历史记录保存到数据库中并能够适当地读取和更新它。LangGraph 实现了内置的持久层使其成为支持多轮对话的聊天应用程序的理想选择。所以现在将我们的聊天模型包装在最小的 LangGraph 应用程序中使我们能够自动保存消息历史记录从而简化多轮应用程序的开发。核心逻辑如下此应用程序开箱即用地支持多个对话线程。我们传入一个配置字典为线程指定唯一标识符以控制运行哪个线程。这使应用程序能够支持与多个用户的交互。可以通过应用程序的状态检查对话历史记录以下就是我们这个会话式 RAG 系统的架构图了引入 AgentAgent 利用 LLM 的推理能力在执行过程中做出决策。使用 Agent 可以让你在检索过程中减轻一些判断力。尽管它们的行为比链更难预测但它们在这种情况下具有一些优势Agent 直接生成检索器的输入而不一定需要我们明确构建上下文就像我们上面所做的那样Agent 可以执行多个检索步骤来处理查询或者完全不执行检索步骤例如响应用户的一般问候。Agent 可以访问工具并管理其执行。在本例中我们将把检索器转换为 LangChain 工具供 Agent 使用现在我们已经定义了工具和 LLM我们可以创建 Agent 了。我们将使用 LangGraph 来构建 Agent。目前我们使用高级接口来构建 Agent但 LangGraph 的优点在于如果你想要修改代理逻辑这个高级接口由低级、高度可控的 API 支持。注意我加入了内存检查点来存储历史记录。这就是我们构建对话式 RAG Agent 所需的全部内容。让我们观察一下它的行为。请注意如果我们输入不需要检索步骤的查询Agent 就不会执行该步骤此外如果我们输入确实需要检索步骤的查询Agent 将生成工具的输入上面的输出很长我的图只截取了其中一部分。上图中Agent 没有将我们的查询逐字逐句地插入到工具中而是删除了“什么”等不必要的单词。同样的原则允许 Agent 在必要时使用对话的上下文请注意Agent 能够推断出我们查询中的“他”指的是“马斯克”并生成了一个合理的搜索查询在本例中为“马斯克 对 物理学 的 看法”。最后的最后感谢你们的阅读和喜欢我收藏了很多技术干货可以共享给喜欢我文章的朋友们如果你肯花时间沉下心去学习它们一定能帮到你。因为这个行业不同于其他行业知识体系实在是过于庞大知识更新也非常快。作为一个普通人无法全部学完所以我们在提升技术的时候首先需要明确一个目标然后制定好完整的计划同时找到好的学习方法这样才能更快的提升自己。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】大模型知识脑图为了成为更好的 AI大模型 开发者这里为大家提供了总的路线图。它的用处就在于你可以按照上面的知识点去找对应的学习资源保证自己学得较为全面。经典书籍阅读阅读AI大模型经典书籍可以帮助读者提高技术水平开拓视野掌握核心技术提高解决问题的能力同时也可以借鉴他人的经验。对于想要深入学习AI大模型开发的读者来说阅读经典书籍是非常有必要的。实战案例光学理论是没用的要学会跟着一起敲要动手实操才能将自己的所学运用到实际当中去这时候可以搞点实战案例来学习。面试资料我们学习AI大模型必然是想找到高薪的工作下面这些面试题都是总结当前最新、最热、最高频的面试题并且每道题都有详细的答案面试前刷完这套面试题资料小小offer不在话下640套AI大模型报告合集这套包含640份报告的合集涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师还是对AI大模型感兴趣的爱好者这套报告合集都将为您提供宝贵的信息和启示。这份完整版的大模型 AI 学习资料已经上传CSDN朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】
RELATED

相关推荐

3.5英寸Skylake单板计算机:工业边缘网关实战部署全解析

3.5英寸Skylake单板计算机:工业边缘网关实战部署全解析

3.5英寸的单板计算机(SBC)配上Skylake处理器,这套组合放在今天看似乎有点“复古”,但你要是跑过几个工控项目,就会明白这类板子到现在仍然是很多方案里的主力选手。我最近刚完成一个基于3.5英寸Skylake SBC的工业边缘网…

📅 2026/10/5 6:29:04
【干货收藏】Skill Graphs:解锁大模型深度认知能力的新范式

【干货收藏】Skill Graphs:解锁大模型深度认知能力的新范式

人们普遍低估了结构化知识的力量。它能催生全新类型的应用。 现在大家写的 Skills,大多只捕捉某件事的一个侧面:一个用于总结的 Skill、一个用于代码审查的 Skill,诸如此类。通常是一个文件,只承载一种能力。 对简单任务来说这没问…

📅 2026/10/7 17:41:04
AI大模型开发岗位到底有多大需求?为何中小企业更倾向于内部转岗,而非大规模对外招聘?

AI大模型开发岗位到底有多大需求?为何中小企业更倾向于内部转岗,而非大规模对外招聘?

前言 近期,AI大模型技术在各个行业引发了广泛的关注,其强大的数据处理能力和广泛的应用前景,使得AI大模型开发成为了业界焦点。然而,细心观察会发现,尽管AI大模型的应用不断扩展,但市面上专门针对AI大模型开…

📅 2026/11/1 11:45:36
MORE NEWS

更多资讯

📰

电力公司查询电工证怕考不过白交培训费?官方报名入口和避坑经验都在这

电力公司查询电工证怕考不过白交培训费?官方报名入口和避坑经验都在这 怕考不过白交培训费?别急,我来帮你理清电力公司查询电工证的流程、报名入口和真实通过率,还有三门峡劳务班组负责人亲身经历的案例,看完你就明白该怎么做了。…

📰

常州特种工查询证怎么转异地,多久拿证才是关键

常州特种工查询证怎么转异地,多久拿证才是关键 证书过期了不知道怎么复审延期,这是很多特种作业人员遇到的难题。尤其是在常州地区,特种工证书的管理、查询、转籍、复审流程复杂,很多人一不小心就错过了关键的时间节点,导致证书失效,影响工作进度和职业…

📰

工厂高压电工证过期证在哪考能转过来

工厂高压电工证过期证在哪考能转过来 之前考的证在外省能不能转过来?这是很多在外地工作的工厂高压电工最关心的问题。尤其是一些应届毕业生,在新乡或者别的地方考的证,现在因为工作调动或者证照过期,想转到河南这边来继续使用,但流程不清楚,操作起来也…

📰

电工证允许登高多少米多少钱?别怕学历不高,这证还能带你爬高!

电工证允许登高多少米多少钱?别怕学历不高,这证还能带你爬高! 学历不高怕报不上名?别急,电工证允许登高多少米,这事儿真不难搞,关键是你得知道规则和流程。最近不少朋友问: 电工证允许登高多少米多少钱?…

📰

电工证图片题官方回应来了!实操考试心里没底怕挂科怎么办

电工证图片题官方回应来了!实操考试心里没底怕挂科怎么办 实操考试心里没底怕挂科?很多第一次报考电工证的朋友,尤其是洛阳涧西区的初学者,常常因为对【电工证图片题】这类题型不熟悉而焦虑。别担心, 官方回应…

📰

南宁电工证办理机构内部消息:别再被中介坑,电工证报名全攻略

南宁电工证办理机构内部消息:别再被中介坑,电工证报名全攻略 你是不是也这样, 不知道去哪报名怕被中介坑 ?南宁电工证办理机构五花八门,有的靠谱,有的纯属忽悠。最近我就遇到一个朋友,花了3000块报名,结果连考试都没安排上,最后还得自己掏钱重…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬