为什么选择LangChain?
Python 包 langchain
和公司 LangChain 的目标是尽可能让开发者轻松构建具备推理能力的应用程序。虽然 LangChain 最初只是一个单一的开源包,但它已发展成为一家公司和一个完整的生态系统。本页将介绍 LangChain 的整个生态系统。LangChain 生态系统中的大多数组件都可以单独使用——所以如果你特别喜欢某些组件而不喜欢其他组件,那完全没问题!为你的用例挑选你最喜欢的组件!
功能
LangChain 旨在解决以下几个主要需求:
-
标准化组件接口: 用于 AI 应用程序的模型和相关组件数量日益增多,导致开发者需要学习和使用各种不同的 API。这种多样性使得开发者在构建应用程序时难以切换提供商或组合组件。LangChain 为关键组件提供标准接口,使其易于在不同提供商之间切换。
-
编排: 随着应用程序变得越来越复杂,需要结合多个组件和模型,越来越需要高效地将这些元素连接成控制流,以完成多样化的任务。编排对于构建此类应用程序至关重要。
-
可观测性和评估: 随着应用程序变得越来越复杂,越来越难以理解其中发生的一切。此外,开发速度可能会受到选择悖论的限制。例如,开发者经常想知道如何设计他们的提示,或者哪个 LLM 能够最好地平衡准确性、延迟和成本。可观测性和评估可以帮助开发者监控他们的应用程序,并自信地快速回答这些类型的问题。
标准化组件接口
LangChain 为许多 AI 应用程序的核心组件提供通用接口。例如,所有聊天模型都实现了 BaseChatModel 接口。这提供了一种与聊天模型交互的标准方式,支持重要的但通常是提供商特定的功能,如工具调用和结构化输出。
示例:聊天模型
许多模型提供商都支持工具调用,这是许多应用程序(例如代理)的关键功能,它允许开发者请求与特定 schema 匹配的模型响应。每个提供商的 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 特定的可观测性以及用于测试和评估应用程序的框架,使你能够自信地迭代你的应用程序。