跳到主要内容

为什么选择 LangChain?

Python 包 langchain 和 LangChain 公司的目标是让开发人员尽可能轻松地构建具有推理能力的应用程序。虽然 LangChain 最初只是一个开源包,但它已经发展成为一家公司和一个完整的生态系统。此页面将讨论整个 LangChain 生态系统。LangChain 生态系统中的大多数组件可以单独使用 - 因此,如果您对某些组件特别感兴趣而不是其他组件,那完全没问题!为自己的用例选择您最喜欢的组件!

功能

LangChain 旨在解决以下几个主要需求

  1. 标准化的组件接口: 越来越多的 模型用于 AI 应用程序的相关组件 导致开发人员需要学习和使用的各种不同的 API。这种多样性可能会使开发人员在构建应用程序时难以在提供商之间切换或组合组件。LangChain 为关键组件公开了一个标准接口,可以轻松地在提供商之间切换。

  2. 编排: 随着应用程序变得越来越复杂,需要组合多个组件和模型,因此将这些元素有效地连接到控制流中完成多样化任务的需求日益增长。编排对于构建此类应用程序至关重要。

  3. 可观测性和评估: 随着应用程序变得越来越复杂,理解其内部发生的事情变得越来越困难。此外,开发速度可能会受到选择悖论的限制。例如,开发人员经常想知道如何设计他们的提示,或者哪个LLM在准确性、延迟和成本之间取得了最佳平衡。可观测性和评估可以帮助开发人员监控他们的应用程序,并自信地快速回答这些类型的问题。

标准化的组件接口

LangChain为许多AI应用程序的核心组件提供了通用接口。例如,所有聊天模型都实现了BaseChatModel接口。这提供了一种与聊天模型交互的标准方式,支持重要但通常特定于提供商的功能,如工具调用结构化输出

示例:聊天模型

许多模型提供商支持工具调用,这是许多应用程序(例如,代理)的关键功能,允许开发人员请求与特定模式匹配的模型响应。每个提供商的API都不同。LangChain的聊天模型接口提供了一种通用的方法,将工具绑定到模型,以支持工具调用

# Tool creation
tools = [my_tool]
# Tool binding
model_with_tools = model.bind_tools(tools)

类似地,让模型生成结构化输出是一个非常常见的用例。提供商支持不同的方法来实现这一点,包括JSON模式或工具调用,具有不同的API。LangChain的聊天模型接口提供了一种使用with_structured_output()方法生成结构化输出的通用方法。

# Define schema
schema = ...
# Bind schema to model
model_with_structure = model.with_structured_output(schema)

示例:检索器

RAG和LLM应用程序组件的上下文中,LangChain的检索器接口提供了一种连接到多种不同类型的数据服务或数据库(例如,向量存储或数据库)的标准方法。检索器的底层实现取决于您连接的数据存储或数据库的类型,但是所有检索器都实现了可运行接口,这意味着它们可以以通用的方式调用。

documents = my_retriever.invoke("What is the meaning of life?")

编排

虽然单个组件的标准化很有用,但我们越来越看到开发人员希望将组件组合成更复杂的应用程序。这激发了对编排的需求。LLM应用程序有几个常见的特征,这个编排层应该支持:

  • 复杂的控制流: 应用程序需要复杂的模式,例如循环(例如,重复执行直到满足条件的循环)。
  • 持久性 应用程序需要维护短期和/或长期记忆
  • 人机回路 应用程序需要人工交互,例如暂停、审查、编辑、批准某些步骤。

对于复杂的应用程序,推荐的组件编排方法是LangGraph。LangGraph是一个库,它通过将应用程序的流程表示为一组节点和边,为开发人员提供了高度的控制权。LangGraph内置支持持久性人机回路记忆和其他功能。它特别适合构建代理多代理应用程序。重要的是,可以将单个LangChain组件用作LangGraph节点,但您也可以在使用LangChain组件的情况下使用LangGraph。

进一步阅读

请查看我们的免费课程LangGraph入门,以了解有关如何使用LangGraph构建复杂应用程序的更多信息。

可观测性和评估

由于存在选择悖论,高质量的评估通常会限制AI应用程序的开发速度。开发人员经常想知道如何设计他们的提示,或者哪个LLM在准确性、延迟和成本之间取得了最佳平衡。高质量的跟踪和评估可以帮助您自信地快速回答这些类型的问题。LangSmith是我们支持AI应用程序的可观测性和评估的平台。有关更多详细信息,请参阅我们关于评估跟踪的概念指南。

进一步阅读

有关更多详细信息,请参阅我们关于LangSmith跟踪和评估的视频播放列表。

结论

LangChain为许多AI应用程序的核心组件提供了标准接口,这提供了一些具体的优势:

  • 易于更换提供商: 它允许您更换不同的组件提供商,而无需更改底层代码。
  • 高级功能: 它为更高级的功能(例如流式传输工具调用)提供了通用方法。

LangGraph使编排复杂的应用程序(例如,代理)成为可能,并提供诸如包含持久性人机回路记忆等功能。

LangSmith通过提供LLM特定的可观测性和测试和评估应用程序的框架,使您能够自信地迭代您的应用程序。


此页是否对您有帮助?