LLM大模型应用开发框架:LangChain和LangGrap

LangChain概述

LangChain 是一种通过在链中执行一系列功能来构建利用 LLM 的应用程序的方法。处理是按顺序执行的,类似于单向道路。

链(Chain)的理解

例如,构建如下的一个应用程序:

  1. 检索数据(Retrieve)
  2. 解释(总结)数据(Summarize)
  3. 用户提问的解答(Answer)

LangChain工作流程详情

数据检索组件(Retrieve Component)

  • 文档加载器(Document loader)

从数据源获取并导入内容

  • 文本分割器(Text splitter)

将文本分割成有意义的块

总结组件(Summarize Component)

  • 链(Chain):解释过程的控制
  • 提示词准备(Prompt Preparation):准备向LLM下达指令
  • LLM交互(LLM/SLM Interaction):执行与模型的交互

     

回答组件(Answer Component)

  • 链(Chain):答案生成过程的控制
  • 记忆(Memory):参考并保存对话历史记录和上下文
  • 提示词准备(Prompt Preparation):准备生成答案
  • LLM对话(LLM/SLM Interaction):与模型执行交互(可以选择不同的模型)

LangChain Agent

LangChain有“Agent”的概念,即:

从一组定义的工具中选择并使用适当的工具

  • 创建任务执行计划
  • 在一系列处理流程中做出决策
  • 基本上不保留状态(如有必要,使用内存组件)

LangGraph概述

LangGraph 是一个独立的库,作为 LangChain 的扩展而开发。它旨在构建一个系统,多个具有独立角色的AI进程(代理)可以通过共享状态进行协作,并根据情况灵活响应。

主要特点

状态保持功能:

  • 维护整个系统的状态
  • 对话历史记录保留
  • 跟踪任务进度
  • 记住用户选择历史

     

多代理系统:

  • 多个独立的AI流程协作
  • 每个都有特定的角色
  • 通过共享状态交换信息
  • 动态处理分布

     

非线性工作流程:

  • 根据情况灵活选择加工方式
  • 如有必要,返回上一步
  • 执行并行处理

LangGraph的构成要素

节点(Node):

  • 代表各个处理代理
  • 具有独立的功能
  • 示例:输入处理、任务添加、任务完成、状态确认等。

边缘(Edge):

  • 节点之间的连接
  • 定义数据和控制流
  • 表示处理方向

状态管理(State):

  • 维护整个系统的状态
  • 代理之间的信息共享
  • 维护上下文

LangChain和LangGraph的比较

目的:

  • LangChain:通过链接LLM操作进行抽象
  • LangGraph:实现执行复杂协作操作的多智能体系统

结构:

  • LangChain:使用DAG(有向无环图)的单向处理
  • LangGraph:共享状态并允许双向处理的图结构

状态管理:

  • LangChain:有限(由内存组件管理)
  • LangGraph:强大的系统范围状态管理

使用案例:

LangChain:

  • 文档摘要系统
  • 简单的问题回答
  • 数据转换管道

LangGraph:

  • 任务管理助理
  • 复杂的对话系统
  • 项目管理系统

哪些场景需要选择LangChain:

  • 工艺流程清晰有序
  • 简单的输入到输出转换
  • 对状态管理的需求不高

哪些场景需要选择LangGraph:

  • 需要复杂的交互和状态管理
  • 需根据情况灵活处理
  • 需要协调多个人工智能流程

实施视角:

  • LangChain:简单实现即可上手
  • LangGraph:更复杂但更灵活

理想情况下,可以根据项目要求适当地将两者结合起来,创建一个高效、灵活的系统。

来源:Py-Ai-Hu

THE END