在智能体的世界里,数据就像是它们的 “行动指南”。就好比组装婴儿车时,说明书能指导我们顺利完成组装;当我们驱动智能体执行任务时,各类数据为其提供行动参照,确保任务高质量完成。
在多智能体系统(MAS)中,我们同样希望智能体的每一次决策与行动,都能精准遵循我们的指引。
今天,我们将开启一场极具价值的实践之旅 —— 把 LangChain 的知识库接入工作流。完成接入后,智能体在决策和行动过程中,就能随时调用知识库中的信息,实现更智能、更高效的任务处理。
这是一个从 0 到 1 的完整实践内容,各个环节紧密相连,环环相扣,每一步都至关重要!
整个系列内容如下:
day1:动手 0-1 学 LangGraph 工作流,节点和边的关系是?
day2:让知识库支撑 Agent,把 RAG 接入 LangGraph,实现无缝联通!
day3:构建意图分流路由,对的人干对的事,让智能体各司其职!
day4:该记的记住!给智能体添加长期 + 短期记忆!
day5:如何管理短期记忆,让智能体记住最新且重要的事!
day6:管理长期记忆!智能体长期记住用户特性,什么名、何时生日等!
人的专注力有限,通常仅有 10 分钟左右,话不多说,现在就开启动手实践之旅!本次实践主要围绕以下三个核心部分展开:
智能体可以接入什么?有什么用?
包括 chat、tools、Message 等多种类型。
接入环境准备
涵盖代码、conda、jupyter、大模型等相关准备工作。
实战演练
边跑代码,边深入探讨细节!
第一部分:智能体可接入内容详解
智能体可接入的内容,在很大程度上取决于所选用的技术栈。在开发 RAG(检索增强生成)领域,LangChain 是当下最热门的框架之一,其次还有 llama-index。LangChain 支持的生态极为广泛,本次将以它为例进行详细演示。
如果你也使用 LangChain 进行 RAG 开发,那么可接入的内容十分丰富(包括但不限于以下类别):
1.1 交互消息接入
在 LangChain 中,消息是结构化对象,用于表示 LangGraph 中不同类型的对话交流,主要包括用户消息、AI 响应和系统级消息等。
每种消息类型在管理和组织应用程序内的聊天流方面都发挥着独特作用,以下是最常用的四种类型:
SystemMessage
专门用于传递指导性对话内容,引导对话流程走向。
HumanMessage
记录用户输入内容,确保用户反馈在对话中得以体现。
AIMessage
展示大语言模型(LLM)的响应内容,是智能体与用户互动的直接体现。
Multimodality
提供多模式内容的额外信息,增强对话的丰富性和多样性。
在系统中完成交互消息接入,代码示例如下:
1.2 工具(Tools)接入
智能体能够生成函数代码,这些代码如同智能体的 “手脚”,可用于查询数据库、调用外部 API、执行代码等操作,从而在现实世界中完成具体任务。
以慢病 MAS 为例,可通过微调 model 函数调用能力实现更多功能。工具接入同样简单,示例代码如下:
1.3 状态管理器接入
在智能体工作流中,状态管理至关重要。在上一篇内容中,我们介绍了图形状态的节点,默认情况下,上游旧节点会被覆盖,但在某些场景下,节点需要被保留,例如智能体的长期记忆,这些记忆是后续决策的重要依据,不应被轻易覆盖。
本次我们借助 LangGraph,实现有选择性地记住或延续历史图形节点,这就需要接入状态管理器,示例代码如下:
第二部分:接入环境准备
Day2 的内容相对基础且简单!具体环境要求如下:
操作系统
win11
Python 版本
3.10
环境管理
conda、jupyter
下载打包好的环境后,按以下步骤操作:
创建 conda 环境
打开 miniconda 窗口,输入指令conda create -n agent python=3.10,创建名为 “agent” 的环境,指定 Python 3.10 版本。
进入 conda 环境
执行conda activate agent,激活环境后,所有操作将仅在该环境内进行,建议养成 “1 个项目 1 个环境” 的良好习惯。激活成功后,命令行前面会显示括号圈起来的 “agent”。
进入实践代码路径
使用cd命令进入存放实践代码的目录,例如cd G:\LangGraph\day2,该目录下包含代码和依赖文件。
安装依赖
已打包好依赖,直接执行conda install --file requirements.txt即可完成安装。
进入 jupyter 实操
输入jupyter notebook指令,系统会自动打开并跳转到浏览器。在浏览器中双击 day2 文件,即可开始实操。
第三部分:实战演练,边跑边学代码细节
前面我们已详细介绍了消息、工具、状态管理器的接入方法,接下来我们将所学知识整合应用,实现模型、tools、消息等内容的综合接入,示例代码如下:
完成接入后,我们就可以基于此构建工作流:
这便是最经典的用法,基于此,未来可以进行无数种组合创新,让智能体更好地为我们服务!
领取专属 10元无门槛券
私享最新 技术干货