为什么选择 LangChain?
langchain Python软件包和LangChain公司的目标是尽可能方便开发者构建能够进行推理的应用程序。
虽然LangChain最初只是一个开源软件包,但它已经发展成为一个公司和一个完整的生态系统。
本页面将整体介绍LangChain生态系统。
LangChain生态系统中的大多数组件都可以独立使用——所以如果你对某些组件特别感兴趣,但对其他组件不感兴趣,这完全没有问题!根据你的使用场景,选择最适合你的组件即可!
特性
LangChain旨在解决以下几个主要需求:
-
标准化组件接口:人工智能应用的模型和相关组件数量不断增加,导致开发者需要学习和使用各种不同的API。 这种多样性可能使开发者在切换提供商或构建应用程序时组合组件变得困难。 LangChain为关键组件提供标准接口,使在不同提供商之间切换变得简单。
-
编排:随着应用程序变得越来越复杂,需要结合多个组件和模型,因此 迫切需要高效地将这些元素连接成控制流,以 完成各种任务。 编排 对于构建此类应用程序至关重要。
-
可观测性和评估:随着应用程序变得越来越复杂,理解其中发生的情况变得越来越困难。 此外,开发速度可能会因选择悖论而受到限制。 例如,开发者常常会思考如何设计他们的提示词,或者哪种大型语言模型在准确性、延迟和成本之间达到最佳平衡。 可观测性和评估可以帮助开发者监控其应用程序,并自信地快速回答这类问题。
标准化组件接口
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。无需 使用 LangChain 组件。
查看我们的免费课程,LangGraph入门,了解如何使用LangGraph构建复杂应用。
可观测性和评估
人工智能应用开发的速度通常受限于高质量的评估,因为存在选择过多的悖论。 开发者常常会困惑如何设计提示词,或者哪种大型语言模型能在准确性、延迟和成本之间取得最佳平衡。 高质量的追踪和评估可以帮助您自信地快速回答这类问题。 LangSmith 是我们支持人工智能应用可观测性和评估的平台。 详细了解我们的概念指南中的 评估 和 追踪。
查看我们的视频播放列表,了解有关 LangSmith 跟踪和评估 的更多详细信息。
结论
LangChain 为许多人工智能应用的核心组件提供了标准接口,这带来了几个特定的优势:
LangGraph 使得编排复杂应用(例如 代理)成为可能,并提供诸如 持久化、人机协作 或 存储 等功能。
LangSmith 通过提供针对大语言模型的可观测性和测试及评估框架,使您能够自信地迭代应用程序。