LangChain 初探

1、什么是LangChain?

        LangChain 是一个由大型语言模型(LLM)驱动的应用程序开发框架。提供模块化组件用以连接LLM、外部数据源和工具

        LangChain 简化了LLM应用程序生命周期的每个阶段:

                开发:使用LangChain 的开源组件和第三方集成构建应用程序。使用LangGraph构建具有一流流媒体和人机加护支持的状态代理;

                生产化:使用LangSmith检查、监控和评估应用程序,以便于持续优化和部署;

                部署:使用LangGraph平台将LangGraph应用程序转变为可用于生产的API和助手;

2、LangChain、LangGraph、LangSmith的功能与区别?

        LangChain的核心功能:

                LLM 集成:支持多种 LLM(如 OpenAI、Hugging Face)。

                提示管理:动态创建和管理提示模板(Prompt Templates)。

                链(Chains):将 LLM 调用、API 请求、数据处理等任务链接成工作流。

                代理(Agents):支持 LLM 与外部工具(如搜索、数据库)交互,动态决策。

                记忆(Memory):维护对话历史或上下文。

                检索增强生成(RAG):结合向量数据库(如 FAISS、Chroma)实现文档检索。

        LangChain的主要作用:

                快速构建LLM应用原型,如聊天机器人、问答系统。

                提供标准化的开发接口,简化复杂工作流。

        LangChain的框架组成:

                

主要由以下部分组成:

  • LangChain库:Python和JavaScript库。包含接口和集成多种组件的运行时基础,以及现成的链和代理的实现。
  • LangChain模板:Langchain官方提供的一些AI任务模板。
  • LangServe:基于FastAPI可以将Langchain定义的链(Chain),发布成为REST API。
  • LangSmith:开发平台,是个云服务,支持Langchain debug、任务监控。

LangChain库本身由几个不同的包组成。

  • langchain-core:基础抽象和LangChain表达语言。
  • langchain-community:第三方集成,主要包括langchain集成的第三方组件。
  • langchain:主要包括链(chain)、代理(agent)和检索策略。

langchain任务处理流程

        

如上图,langChain提供一套提示词模板(prompt template)管理工具负责处理提示词,然后传递给大模型处理,最后处理大模型返回的结果,

LangChain对大模型的封装主要包括LLM和Chat Model两种类型。

  • LLM - 问答模型,模型接收一个文本输入,然后返回一个文本结果。
  • Chat Model - 对话模型,接收一组对话消息,然后返回对话消息,类似聊天消息一样。

        示例场景:

                开发一个客服机器人,结合企业知识库回答用户问题。

        LangGraph:

                LangChain的拓展模块,专注于构建复杂的、有状态的、多代理工作流,通过图结构实现循环和条件逻辑。

        LangGraph核心功能:

                图结构工作流:使用节点(Nodes)和边(Edges)定义任务依赖,支持循环(Cyclical Graphs)。

                状态管理:维护跨节点的共享状态(如对话历史、任务进度)。

                多代理协作:支持多个 AI 代理协同工作(如路由器代理分配任务给专家代理)。

                持久化:支持工作流暂停、恢复和错误恢复。

                人机交互:支持人机协同(Human-in-the-Loop)。

        LangGraph的主要作用:

                解决LangChain Chains的局限性,适合复杂、动态的工作流。

                用于多代理系统、自动化任务编排、循环决策场景。

        示例场景:

                构建一个股票分析平台,多个代理分别处理新闻检索、财务数据分析和报告生成,动态调整策略。

        LangSmith:

                LangSmith是一个统一的观测与评估平台,用于调试、测试和监控LLM应用性能,适用于LangChan、LangGraph或其他框架。

        LangSmith的核心功能:

                追踪(Tracing):记录应用的每一步输入输出,分析代理行为。

                评估(Evaluation):运行自动化评估(如 LLM-as-Judge)或收集人工反馈。

                调试:可视化复杂代理的执行路径,定位性能瓶颈。

                提示优化:通过 Playground 比较不同提示的效果。

                性能监控:跟踪生产环境的延迟、成本、错误率等指标。

        LangSmith的主要作用:

                提升LLM应用的透明度和可靠性。

                加速从原型到生产部署的迭代过程。

        示例场景:

                监控一个客服代理,分析响应延迟和错误模式,优化提示以提高回答质量。

三者的关系:

LangChain、LangGraph 和 LangSmith 是 LangChain 生态系统的三个互补组件,各自专注于开发、编排和监控,共同支持 LLM 应用的整个生命周期:

  • LangChain 是基础

    • 提供核心组件(如 Chains、Agents、Memory),用于快速构建 LLM 应用。

    • 适合简单的线性工作流或 RAG 场景。

    • 例如,LangChain 可用于构建一个基于 OpenStack 文档的问答系统,结合 Java 调用 OpenStack API 获取虚拟机信息。

  • LangGraph 扩展 LangChain

    • 在 LangChain 基础上引入图结构,解决复杂、循环或多代理场景。

    • 完全兼容 LangChain 的组件(如 Prompt Templates、Tools)。

    • 例如,LangGraph 可用于管理一个多代理系统,动态调用 Java 开发的 OpenStack 虚拟机创建服务。

  • LangSmith 增强观测

    • 为 LangChain 和 LangGraph 提供调试和监控支持,也可独立用于非 LangChain 应用。

    • 通过 API(如 Python SDK、OpenTelemetry)记录执行轨迹,集成到 LangGraph 工作流。

    • 例如,LangSmith 可监控 Java 应用中 LangChain 代理的性能,分析 OpenStack API 调用的延迟。

类比

  • LangChain 像工具箱,提供螺丝刀、锤子等基本工具。

  • LangGraph 像流水线,组织工具形成复杂生产线。

  • LangSmith 像监控仪表,检查生产线效率并优化。

具体作用与应用场景

工具

主要作用

典型应用场景

LangChain

提供模块化组件,简化 LLM 应用开发,适合线性任务和 RAG。

聊天机器人、文档问答、API 集成(如 Java 调用 OpenStack)。

LangGraph

构建复杂、有状态、多代理工作流,支持循环逻辑和人机协同。

多代理协作(如股票分析平台)、自动化任务编排(如虚拟机管理)。

LangSmith

调试、评估和监控 LLM 应用,提升生产环境可靠性。

性能监控(分析 Java 应用延迟)、提示优化、错误追踪。

                

                3、构建LangChain Agent 应用时的模块及作用

                1)提示模版

                                提示模板负责将用户输入格式化为可以传递给语言模型的格式。主要用于解决以下问题:

                                        如何使用少量示例?

                                        如何在聊天模型中使用少量示例?

                                        如何部分格式化提示模版?

                                        如何组合提示?

                2)示例选择器

                                示例选择器负责选择正确的少量示例以传递给提示。主要解决以下问题:

                                        如何使用示例选择器?

                                        如何按长度选择示例?

                                        如何按语义相似性选择示例?

                                       如何按语义n-gram重叠选择示例?

                                       如何按最大边际相关性选择示例?

              3)聊天模型

                                聊天模型是较新的语言模型形式,接收消息并输出消息。主要有以下功能:

                                        函数/工具调用

                                        使模型返回结构化输出

                                        缓存模型响应

                                        获取日志概率

                                        创建自定义聊天模型类

                                        流式返回响应

                                        跟踪令牌使用情况

                                        跨供应商跟踪响应元数据

                                        让最终用户选择他们的模型

              4)LLMS

                              LangChain所称的LLM是较旧的语言模型形式,接收字符串输入并输出字符串。主要有以下功能:

                                        缓存模型响应

                                        创建自定义LLM类

                                        流式返回响应

                                        跟踪令牌使用情况

                                        使用本地LLMs

           5)输出解释器

                                输出解析器负责将LLM的输出解析为更结构化的格式。主要解决以下问题:

                                        使用输出解析器将LLM响应解析为结构化格式

                                        解析JSON输出

                                        解析XML输出

                                        解析YAML输出

                                        在输出解析错误时重试

                                        尝试修复输出解析中的错误

                                        编写自定义输出解析器类

         6)文档加载器

                              文档加载器负责从各种来源加载文档。主要有以下功能:

                                        加载CSV数据
                                        从目录加载数据
                                        加载HTML数据
                                        加载JSON数据
                                        加载Markdown数据
                                        加载Microsoft Office数据
                                        加载PDF文件
                                        编写自定义文档加载器

        7)文本拆分器

                           文本拆分器将文档拆分为可用于检索的块。主要有以下功能:

                                递归拆分文本
                                按HTML标题拆分
                                按HTML部分拆分
                                按字符拆分
                                拆分代码
                                按Markdown标题拆分
                                递归拆分JSON
                                将文本拆分为语义块
                                按令牌拆分

        8)嵌入模型

                        嵌入模型将一段文本转换为数值表示:

                                嵌入文本数据

                                缓存嵌入结果

        9)向量存储

                        向量存储是可以有效存储和检索嵌入的数据库。

                                使用向量存储检索数据

          10)检索器

                        检索器负责接收查询并返回相关文档。主要包含以下功能:

                                使用向量存储检索数据
                                生成多个查询以检索数据
                                使用上下文压缩来压缩检索到的数据
                                编写自定义检索器类
                                向检索结果添加相似度分数
                                结合多个检索器的结果
                                重新排序检索到的结果以减轻“中间丢失”效应
                                为文档生成多个嵌入
                                为块检索整个文档
                                生成元数据过滤器
                                创建时间加权检索器
                                使用混合向量和关键词检索

        11)索引

                        索引是使向量存储与基础数据源保持同步的过程。

       12)工具

                        LangChain工具包含工具的描述(传递给语言模型)以及要调用的函数的实现。主要包含以下功能:

                        创建自定义工具
                        使用内置工具和内置工具包
                        使用聊天模型调用工具
                        向LLMs和聊天模型添加临时工具调用功能
                        将运行时值传递给工具
                        向工具使用添加人类参与
                        处理调用工具时的错误

      13)多模态

                        将多模态数据直接传递给模型

                        使用多模态提示

      14)代理

                        使用传统LangChain代理

                        从传统LangChain代理迁移到LangGraph

        15)回调

                        回调允许你在LLM应用程序的各个阶段进行挂钩。主要有以下功能:

                                在运行时传递回调
                                将回调附加到模块
                                在模块构造函数中传递回调
                                创建自定义回调处理程序
                                在异步环境中使用回调

          16)自定义

                        所有LangChain组件都可以轻松扩展以支持你自己的版本。

                                创建自定义聊天模型类
                                创建自定义LLM类
                                编写自定义检索器类
                                编写自定义文档加载器
                                编写自定义输出解析器类
                                创建自定义回调处理程序
                                定义自定义工具

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值