为什么选择 LangChain?
目标langchainPython 包和 LangChain 公司就是为了让开发人员尽可能容易地构建应用程序。
虽然 LangChain 最初是一个开源包,但它已经发展成为一家公司和整个生态系统。
本页将讨论整个 LangChain 生态系统。
LangChain 生态系统中的大多数组件都可以单独使用 - 因此,如果你对某些组件特别感兴趣,而对其他组件没有兴趣,那完全没问题!挑选最适合您自己用例的组件!
特征
LangChain 旨在满足几个主要需求:
-
标准化组件接口:AI 应用程序的模型和相关组件数量不断增加,导致开发人员需要学习和使用各种不同的 API。 这种多样性可能使开发人员在构建应用程序时难以在提供程序之间切换或组合组件。 LangChain 为关键组件公开了标准接口,便于在提供商之间切换。
-
集成:随着应用程序变得越来越复杂,结合多个组件和模型,越来越需要将这些元素有效地连接到可以完成各种任务的控制流中。编排对于构建此类应用程序至关重要。
-
可观测性和评估:随着应用程序变得越来越复杂,了解其中发生的情况变得越来越困难。 此外,开发速度可能会受到选择悖论的限制。 例如,开发人员经常想知道如何设计他们的提示,或者哪种 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)
示例:retrievers
在 RAG 和 LLM 应用程序组件的上下文中,LangChain 的 retriever 接口提供了一种标准方式来连接到许多不同类型的数据服务或数据库(例如,向量存储或数据库)。 检索器的底层实现取决于您要连接到的数据存储或数据库的类型,但所有检索器都实现 runnable 接口,这意味着它们可以以通用方式调用。
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 的可观察性和框架来测试和评估您的应用程序,让您能够放心地迭代您的应用程序。