LangChain是什么?
无抓取AI代理和无抓取浏览器为需要当前搜索、渲染页面和结构化网页数据的代理提供与LangChain兼容的工具。
TL;DR
- LangChain是一个用于构建基于模型的应用程序和代理的开源框架。 它的抽象连接模型、工具、中间件、结构化输出和运行时行为。
- 现代LangChain代理在LangGraph上运行。 高级代理API使用持久图形运行时进行状态执行。
- 集成是一个核心设计特性。 提供程序包通过公共接口连接模型、向量存储、检索器、工具和数据源。
- LangChain的范围超出了检索增强生成。 RAG是工具调用代理、提取、路由和对话应用程序的一个用例。
- 抽象是有代价的。 团队应该了解底层提供程序API并为生产系统固定依赖关系。
LangChain定义
LangChain是一个用于构建使用语言模型、工具和外部数据的应用程序的开源框架。当前 LangChain Python概述 描述了主要包作为一个可配置的代理工具,并解释了它与LangGraph、集成和LangSmith的关系。
该框架的主要价值在于组合。开发人员可以通过共享接口表示聊天模型、工具、消息、文档、检索器和结构化输出解析器。这使得更换提供程序、附加中间件或从直接模型调用转移到代理循环变得更容易,而无需重写每个边界。
自早期专注于链的版本以来,LangChain发生了重大变化。当前的使用强调使用高级API构建的代理,并在LangGraph的状态运行时上执行。较旧的教程在搜索中仍然可以排名较高,因此开发人员在复制导入路径或类名之前,应该检查版本和官方文档。
LangChain是如何组织的
LangChain将其生态系统分为不同责任的包。主包提供更高级的代理功能。LangChain核心定义了共享接口和原始。集成包连接特定的模型提供者、向量存储和服务。LangGraph提供较低级的图形编排和持久执行,适用于长期运行的状态代理。
- 模型和消息。 标准接口表示聊天输入、输出、流和工具调用。
- 工具。 类型化函数允许代理搜索、计算、查询系统或操作浏览器。
- 代理。 模型选择工具并从观察中继续,直到产生最后结果。
- 中间件。 钩子可以改变提示、过滤数据、添加批准或控制围绕模型和工具调用的执行。
- 检索组件。 文档、分割器、嵌入、存储和检索器支持上下文增强的应用程序。
- LangGraph。 图形状态、节点、边、检查点和中断支持自定义编排。
LangChain围绕可配置的代理架构、模型和工具集成、中间件以及LangGraph运行时定位框架。这些层应该单独评估,因为应用程序可能只需要堆栈的一部分。通过MCP传输的工具遵循一个外部协议,其 模型上下文协议规范 独立于LangChain定义消息和能力协商。
LangChain构建模块
| 构建模块 | 角色 | 示例决策 |
|---|---|---|
| 聊天模型 | 生成消息和工具调用。 | 哪个提供程序和模型满足质量和延迟需求? |
| 工具 | 执行模型外的有界操作。 | 允许什么参数和权限? |
| 代理 | 运行模型工具观察循环。 | 何时应停止执行或请求批准? |
| 检索器 | 选择与查询相关的文档。 | 哪个索引和元数据过滤器控制证据? |
| 中间件 | 拦截或修改运行时行为。 | 敏感数据应该在哪里被删除? |
| 图形 | 表达有状态的节点和转换。 | 哪些分支是确定性和持久的? |
该框架不会删除架构决策。它赋予它们共同的形状。设计良好的应用程序仍然决定哪个层负责验证、状态、安全性、证据和副作用。
开发者用LangChain构建的内容
工具调用助手
代理在搜索、计算、数据库和商务工具之间选择,而运行时跟踪消息和观察。
检索应用程序
检索器从文档语料库中选择段落,模型用领域特定的上下文进行回答。
结构化提取
模型将非结构化文本映射到一个类型化的架构,后续代码进行验证。
有状态工作流
LangGraph节点结合了确定性处理、模型判断、人类批准和持久的检查点。
当应用程序受益于提供者中立接口或代理需要维护的集成时,LangChain非常有用。对于一个提示和一个响应,它可能是不必要的。该框架应减少重复的胶水代码,而不隐藏开发者需要调试的行为。
LangChain与实时网络
当答案依赖于训练后变化的信息时,模型支持的应用程序需要一个实时网络工具。LangChain可以将搜索、页面检索或浏览器操作公开为工具。Scrapeless集成提供当前搜索和渲染页面的能力,代理可以通过LangChain或MCP调用。
保持获取和推理分开。浏览器或抓取器返回一个观察;代理决定如何使用它。存储源URL和相关文本,以便最终答案可以被检查。限制目标域并要求对提交数据、改变账户或影响第三方的操作进行批准。
何时使用LangChain
当应用程序需要多个模型提供者、维护的工具生态系统、代理中间件、结构化输出、检索组件或通往LangGraph的路径时,使用LangChain。它对于希望在多个模型驱动服务中共享约定的团队也很有帮助。
当工作流短且确定时,或者提供者特定功能比可移植性更重要时,或当依赖表面必须保持最小时,较小的实现可能更好。直接提供者SDK使底层请求一目了然。只有当LangChain的抽象减少的复杂性超过其引入的复杂性时,它才有价值。
- 描述工作流并确定模型判断实际需要的位置。
- 使用高级代理API和最小的集成包进行原型设计。
- 验证每个工具架构,并将副作用操作放在批准之后。
- 在扩展工具面之前添加追踪和评估集。
- 仅在显式状态转换或持久性需要时移动到自定义LangGraph。
- 锁定软件包版本并对已保存的代理场景测试升级。
权衡和操作风险
LangChain的集成广度可能会增加依赖和迁移工作。社区示例可能使用已弃用的类,传递包可能解析为未一起测试的组合。锁定版本,阅读发布说明,并保持一个小的兼容性测试,以检验模型调用、结构化输出和每个承载工具。
抽象也可能模糊成本和控制流。单个用户请求可能触发多个模型和工具的调用。追踪应显示每一步,预算应限制执行时间、令牌和工具使用。安全性仍然由应用程序负责:验证参数,限制凭证,将不受信任的检索文本与指令分开,并在模型之外强制授权。 NIST AI风险管理框架 将此类测试与部署背景和影响联系起来。
结论
LangChain是一个为模型、工具、检索、中间件和代理设计的组合框架,基于LangGraph构建现代代理执行。它适合那些受益于共享接口和维护集成的应用程序。团队仍应将确定性逻辑保留在代码中,理解抽象下的提供者API,验证工具权限,并对真实工作流测试依赖升级。
一个合理的采用路径从一个有界的代理和一到两个明确定义的工具开始。当具体政策需要时添加中间件,并仅在理解状态转移后才进入自定义图形编排。保留每个工具的直接测试以及端到端代理场景。这种分层测试策略有助于区分提供者失败、集成不匹配、工具架构缺陷和推理错误。当软件包边界或推荐API发生变化时,它也保持应用程序可调试。为操作员记录这些边界,以便可以理解追踪,而无需阅读每个框架源文件。
准备好让LangChain访问实时网络吗?
将LangChain代理连接到具有明确、可测试的工具边界和源感知输出的受管浏览器和抓取能力。
今天注册并获取 $5 的免费信用额度 — 无需信用卡.
领取您的 $5 信用额度 →常见问题
LangChain 是一个模型吗?
不。LangChain 是一个软件框架,将模型与工具、数据、检索、中间件和工作流运行时连接起来。您仍然可以选择模型提供商并提供应用程序所需的凭据和政策。
LangChain 和 LangGraph 之间的关系是什么?
LangChain 提供更高级的代理 API 和集成,而 LangGraph 提供较低级的有状态图形运行时。目前,LangChain 代理在底层使用 LangGraph,当开发者需要自定义节点、转场、持久性或中断时,可以转向直接调用 LangGraph API。
LangChain 仅适用于 RAG 吗?
不。LangChain 支持检索应用程序,同时也支持工具调用代理、结构化提取、路由、中间件、多模态消息和有状态工作流。RAG 是更广泛框架中的一种常见模式。
LangChain 可以独立浏览网页吗?
LangChain 在没有工具或集成的情况下不会创建网页访问。应用程序必须连接搜索、HTTP 检索或浏览器功能并定义其权限。Scrapeless 可以提供由 LangChain 代理调用的托管网页和浏览器工具。
初学者应该在学习 LangChain 之前学习提供商 SDK 吗?
初学者应了解直接模型请求、消息角色、工具架构和结构化输出,然后再添加框架抽象。这个基础使得 LangChain 跟踪更易于阅读,并有助于区分框架行为与提供商行为。