1.概述
前段时间LangChain发布了LangGraph,它引起了很多关注。LangGraph 的主要优势在于它能够实现循环工作流,这对于在 LLM 应用程序中模拟类似代理的行为至关重要。本篇博客,笔者将从介绍 LangGraph 的功能和用例,强调它与典型的有向无环图 (DAG)工作流的区别,并讨论如何构建更具交互性和迭代性的基于 LLM 的系统。换句话说,就是更好的 AI 代理实现。
2.内容
LangGraph是一个功能强大的库,用于构建基于大型语言模型(LLM)的有状态、多参与者应用程序。它旨在创建代理和多代理工作流,以实现复杂的任务和交互。
2.1 LangGraph的核心优势
LangGraph在设计上具有三个核心优势,使其成为构建代理应用程序的首选框架之一。
- 循环支持:LangGraph允许用户定义涉及循环的流程,这对于大多数代理架构来说是必不可少的。这种能力使LangGraph有别于基于有向无环图(DAG)的解决方案,后者不直接支持循环。
- 细粒度控制:作为一个非常低级的框架,LangGraph为用户提供了对应用程序的流程和状态的细粒度控制。这对于创建可靠、可预测的代理至关重要,因为代理需要在复杂的环境中做出明智的决策。
- 内置持久性:LangGraph还包括内置的持久性功能,使代理能够记住过去的交互并使用这些信息来指导未来的决策。这种持久性还支持高级的人机循环,使代理能够与人类用户进行更自然、更有效的交互。
2.2 LangGraph的灵感来源
LangGraph的灵感来自两个著名的数据处理框架:Pregel和Apache Beam。Pregel是一个用于大规模图处理的系统,它使用一种称为“Pregel模型”的编程模型,该模型基于图的遍历和消息传递。Apache Beam是一个用于构建可扩展数据处理管道的统一编程模型,它支持多种执行引擎和数据源。
LangGraph的公共接口还从NetworkX中汲取了灵感,NetworkX是一个用于复杂网络分析的Python库。NetworkX提供了一组丰富的工具和算法,用于分析和操作图数据,LangGraph的公共接口旨在提供类似的灵活性和功能。
2.3 LangGraph与LangChain的关系
LangGraph由LangChain的创建者LangChain Inc构建,但它可以独立于LangChain使用。LangChain是一个用于构建基于LLM的应用程序的框架,它提供了一组工具和服务,用于简化与LLM的交互和管理。虽然LangGraph可以与LangChain一起使用以提供额外的功能和集成,但它也可以作为独立框架使用,以利用其独特的优势和功能。
2.4 LangGraph有哪些应用场景?
LangGraph 作为一个使用 LLM 构建有状态、多参与者应用程序的库,具有广泛的应用场景。以下是一些可能的应用领域:
1. 对话代理和聊天机器人
LangGraph 可以用于构建复杂的对话代理和聊天机器人,能够处理多轮对话、上下文理解和个性化交互。通过使用循环和分支,LangGraph 使代理能够根据用户的输入和对话历史做出明智的决策。
2. 推荐系统
LangGraph 可以用于构建个性化的推荐系统,根据用户的兴趣、历史行为和上下文信息提供相关的建议。通过使用持久性,LangGraph 使推荐系统能够记住用户的偏好并随着时间的推移进行改进。
3. 游戏开发
LangGraph 可以用于构建具有智能对手和复杂游戏逻辑的视频游戏。通过使用循环和分支,LangGraph 使游戏 AI 能够做出战略性的决策,并根据游戏状态做出实时响应。
4. 自然语言处理
LangGraph 可以用于构建自然语言处理应用程序,如文本分类、实体识别和语义分析。通过使用 LLM 和持久性,LangGraph 使这些应用程序能够理解和生成自然语言,并随着时间的推移进行学习和改进。
5. 智能助理
LangGraph 可以用于构建智能助理应用程序,如日程安排、任务管理或购物助手。通过使用循环和分支,LangGraph 使智能助理能够根据用户的需求和偏好提供个性化的建议和帮助。
6. 人机交互
LangGraph 可以用于构建人机交互应用程序,如虚拟助手或客户支持聊天机器人。通过使用人在环功能,LangGraph 使这些应用程序能够与人类用户进行自然、直观的交互。
7. 数据分析
LangGraph 可以用于构建数据分析应用程序,如欺诈检测、异常检测或模式识别。通过使用流式处理支持,LangGraph 使这些应用程序能够实时处理和分析数据,并根据需要进行扩展。
3.LangGraph 中的核心概念和状态管理
LangGraph 的关键要素之一是其良好的状态管理系统。在 LangGraph 中,每次执行图都会启动一个状态,图内的节点会在处理过程中传递和修改该状态。此状态不仅仅是一组静态数据,而是由每个节点的输出动态更新的,然后影响循环内的后续操作。
为了简化实现,LangGraph 提供了预定义类,例如MessageGraph,它是为涉及聊天模型的应用程序量身定制的。此设置允许状态由聊天消息列表组成,直接利用 LangChain 聊天模型的输出来促进自然而连贯的对话。
3.1 思路链、表链和 LangGraph
LangGraph 的多功能性使其成为简单聊天机器人之外的一系列应用程序的理想选择。它能够处理非线性、循环的工作流程,非常适合需要持续反馈的场景,例如自适应学习系统、复杂的决策工具或动态模拟环境. LangGraph 允许开发人员构建应用程序,其中 LLM 可以根据新信息重新评估和修改其策略或响应,模仿更像人类的交互模式。
通过阅读论文《CHAIN-OF-TABLE: EVOLVING TABLES IN THE REASONING CHAIN FOR TABLE UNDERSTANDING》,我们可以知道该论文中介绍了一种使用一系列类似 SQL 的操作(包括选择、分组、排序等)来优化从结构不良的表格中提取数据的技术。通过将提取的数据插入到新列中,该方法显著增强了表格与 SQL、人工解释以及 LLM 处理的兼容性。
上图中的对比突出了三种使用复杂表格进行推理的方法:
- a. 通用推理在复杂表格中进行多步推理时遇到困难,因为骑车人的国籍和姓名组合在一个单元格中,无法提供正确答案。
- b. 程序辅助推理试图通过生成和执行类似 SQL 的程序来解决这个问题,但仍然无法准确地解析姓名和国籍。
- c. 链表方法迭代地应用一系列表格操作,将表格转换为更适合查询的格式,使 LLM 能够准确地得出正确答案。
3.2 持久性、人机交互和图形可视化
LangGraph 支持不同的功能,例如内置持久性、人机交互、可视化以及一项称为“时间旅行”的功能。下表提供了每个功能的高级概述。
示例代码如下所示:[ 示例入口 ]
1.持久性
LangGraph 具有内置的持久性机制,可以在图执行过程中保存和恢复状态。这对于长时间运行的应用程序或需要跨多个会话维护状态的应用程序特别有用。
要启用持久性,你可以在创建图时设置一个检查点(checkpoint)。检查点是一个保存图当前状态的点,可以在需要时恢复。以下是如何在 LangGraph 中设置检查点的示例:
import langgraph as lg
# 创建一个图
G = lg.Graph
# 添加一些节点和边
# ...
# 设置检查点
G.set_checkpoint('my_checkpoint')
一旦设置了检查点,您就可以在图执行过程中的任何时间点保存或恢复状态。例如,要保存当前状态,您可以使用以下代码:
G.save_checkpoint('my_checkpoint')
要恢复先前保存的状态,您可以使用以下代码:
G.load_checkpoint('my_checkpoint')
通过这种方式,您可以确保在发生错误或需要停止执行时不会丢失状态。
2.人机交互
LangGraph 还支持人机交互(Human-in-the-loop,HITL),允许您在图执行过程中进行人工干预。这对于需要人类输入或批准的应用程序特别有用。
要启用 HITL,您可以在图中添加一个特殊的节点,该节点将等待人类输入。以下是如何在 LangGraph 中添加 HITL 节点的示例:
import langgraph as lg
# 创建一个图
G = lg.Graph
# 添加一些节点和边
# ...
# 添加一个 HITL 节点
hitl_node = G.add_node(lg.HitlNode)
# 将 HITL 节点连接到其他节点
# ...
当图执行到达 HITL 节点时,它将暂停并等待人类输入。您可以使用以下代码提供输入:
G.provide_input(hitl_node, 'my_input')
一旦提供了输入,图将继续执行。
3.图形可视化
LangGraph 提供了一些工具来可视化图的结构。这对于调试或理解复杂图的逻辑特别有用。
要可视化图,您可以使用 LangGraph 的 draw 方法。以下是如何使用 draw 方法可视化图的示例:
import langgraph as lg
# 创建一个图
G = lg.Graph
# 添加一些节点和边
# ...
# 绘制图
G.draw('my_graph.png')
这将在名为 my_graph.png 的文件中生成图的可视化表示。您可以使用任何支持的图像格式,如 PNG、JPEG 或 SVG。
4.如何使用LangGraph来开发一个应用程序
1. 安装 LangGraph
首先,您需要在您的开发环境中安装 LangGraph。您可以使用 pip 来安装 LangGraph:
pip install langgraph
2. 定义应用程序的流程
LangGraph 允许您使用图来表示应用程序的流程。图中的每个节点表示一个操作或决策点,边表示节点之间的连接。您可以使用 Python 代码来定义图的结构。
例如,以下是一个简单的图定义,其中包含两个节点(A 和 B)和一个边(从 A 到 B):
import langgraph as lg
# 创建一个空图
G = lg.Graph
# 添加节点 A
A = G.add_node('A')
# 添加节点 B
B = G.add_node('B')
# 添加从 A 到 B 的边
G.add_edge(A, B)
3. 实现节点功能
一旦您定义了图的结构,您需要实现节点的功能。每个节点可以执行任意的 Python 代码,包括与 LLM 或其他外部服务的交互。
例如,以下是一个简单的节点实现,它使用 Hugging Face 的 transformers 库来执行文本分类任务:
from transformers import pipeline
# 加载一个预训练的文本分类器
classifier = pipeline('text-classification')
def classify_text(node, inputs):
# 对输入文本进行分类
result = classifier(inputs['text'])
# 返回分类结果
return result['label']
# 将节点功能附加到图中的节点 A
G.nodes['A'].set_function(classify_text)
4. 运行应用程序
最后,您可以运行应用程序以查看其执行情况。您可以使用 LangGraph 的 run 方法来执行图中的节点,并根据需要提供输入数据。
例如,以下是如何运行上述示例应用程序的代码:
# 提供输入数据
inputs = {'text': '我喜欢吃披萨'}
# 运行应用程序
result = G.run(inputs)
# 打印结果
print(result)
5.总结
LangGraph 为开发者提供了构建更智能化应用的工具,这些应用能够更好地反映人类思维过程和交互的动态性。随着我们不断探索和尝试 LLM(大型语言模型)的功能,LangGraph 等工具成为从静态、一次性交互转向连续、上下文感知对话和流程的理想选择。
如何系统的去学习AI大模型LLM ?
作为一名热心肠的互联网老兵,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在人工智能学习中的很多困惑,所以在工作繁忙的情况下还是坚持各种整理和分享。
但苦于知识传播途径有限,很多互联网行业朋友无法获得正确的资料得到学习提升,故此将并将重要的 AI大模型资料
包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。
所有资料 ⚡️ ,朋友们如果有需要全套 《LLM大模型入门+进阶学习资源包》,扫码获取~
一、全套AGI大模型学习路线
AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!
二、640套AI大模型报告合集
这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示。
三、AI大模型经典PDF籍
随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。
四、AI大模型商业化落地方案
阶段1:AI大模型时代的基础理解
- 目标:了解AI大模型的基本概念、发展历程和核心原理。
- 内容:
- L1.1 人工智能简述与大模型起源
- L1.2 大模型与通用人工智能
- L1.3 GPT模型的发展历程
- L1.4 模型工程
- L1.4.1 知识大模型
- L1.4.2 生产大模型
- L1.4.3 模型工程方法论
- L1.4.4 模型工程实践 - L1.5 GPT应用案例
阶段2:AI大模型API应用开发工程
- 目标:掌握AI大模型API的使用和开发,以及相关的编程技能。
- 内容:
- L2.1 API接口
- L2.1.1 OpenAI API接口
- L2.1.2 Python接口接入
- L2.1.3 BOT工具类框架
- L2.1.4 代码示例 - L2.2 Prompt框架
- L2.2.1 什么是Prompt
- L2.2.2 Prompt框架应用现状
- L2.2.3 基于GPTAS的Prompt框架
- L2.2.4 Prompt框架与Thought
- L2.2.5 Prompt框架与提示词 - L2.3 流水线工程
- L2.3.1 流水线工程的概念
- L2.3.2 流水线工程的优点
- L2.3.3 流水线工程的应用 - L2.4 总结与展望
- L2.1 API接口
阶段3:AI大模型应用架构实践
- 目标:深入理解AI大模型的应用架构,并能够进行私有化部署。
- 内容:
- L3.1 Agent模型框架
- L3.1.1 Agent模型框架的设计理念
- L3.1.2 Agent模型框架的核心组件
- L3.1.3 Agent模型框架的实现细节 - L3.2 MetaGPT
- L3.2.1 MetaGPT的基本概念
- L3.2.2 MetaGPT的工作原理
- L3.2.3 MetaGPT的应用场景 - L3.3 ChatGLM
- L3.3.1 ChatGLM的特点
- L3.3.2 ChatGLM的开发环境
- L3.3.3 ChatGLM的使用示例 - L3.4 LLAMA
- L3.4.1 LLAMA的特点
- L3.4.2 LLAMA的开发环境
- L3.4.3 LLAMA的使用示例 - L3.5 其他大模型介绍
- L3.1 Agent模型框架
阶段4:AI大模型私有化部署
- 目标:掌握多种AI大模型的私有化部署,包括多模态和特定领域模型。
- 内容:
- L4.1 模型私有化部署概述
- L4.2 模型私有化部署的关键技术
- L4.3 模型私有化部署的实施步骤
- L4.4 模型私有化部署的应用场景
学习计划:
- 阶段1:1-2个月,建立AI大模型的基础知识体系。
- 阶段2:2-3个月,专注于API应用开发能力的提升。
- 阶段3:3-4个月,深入实践AI大模型的应用架构和私有化部署。
- 阶段4:4-5个月,专注于高级模型的应用和部署。
这份完整版的所有 ⚡️ 大模型 LLM 学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费
】
全套 《LLM大模型入门+进阶学习资源包》↓↓↓ 获取~