为什么选择 LangChain?
langchain
包和 LangChain 公司的目标是让开发者尽可能轻松地构建能够推理的应用。虽然 LangChain 最初只是一个开源包,但它已经发展成为一家公司和一个完整的生态系统。本页将讨论 LangChain 生态系统的整体情况。LangChain 生态系统中的大多数组件都可以单独使用 - 因此,如果您对某些组件特别感兴趣,而对其他组件则不然,那完全没问题!选择您最喜欢的组件即可。
特性
LangChain 旨在解决以下几个主要需求
标准化的组件接口: 人工智能应用的 模型 和 相关组件 数量不断增长,导致开发者需要学习和使用的各种不同的 API。这种多样性使得开发者在构建应用时难以在提供商之间切换或组合组件。LangChain 为关键组件公开了一个标准接口,使得在提供商之间切换变得容易。
编排: 随着应用变得越来越复杂,需要组合多个组件和模型,越来越需要有效地将这些元素连接到控制流中,以便 完成各种任务。编排 对于构建此类应用至关重要。
可观测性和评估: 随着应用变得越来越复杂,理解应用内部发生的事情变得越来越困难。此外,开发速度可能会受到 选择悖论 的限制:例如,开发者经常想知道如何设计他们的提示,或者哪个 LLM 能够在准确性、延迟和成本之间取得最佳平衡。可观测性 和评估可以帮助开发者监控他们的应用,并快速自信地回答这些类型的问题。
标准化的组件接口
LangChain 为许多人工智能应用的核心组件提供了通用接口。例如,所有 聊天模型 都实现了 BaseChatModel 接口。这提供了一种与聊天模型交互的标准方法,支持重要但通常是提供商特定的功能,例如 工具调用 和 结构化输出。
示例:聊天模型
许多 模型提供商 支持 工具调用,这是许多应用(例如,智能体)的关键功能,允许开发者请求与特定模式匹配的模型响应。每个提供商的 API 各不相同。LangChain 的 聊天模型 接口提供了一种通用方法,可以将 工具 绑定到模型,以支持 工具调用
// Tool creation
const tools = [myTool];
// Tool binding
const modelWithTools = model.bindTools(tools);
同样,让模型生成 结构化输出 也是一个非常常见的用例。提供商对此支持不同的方法,包括 JSON 模式或工具调用,但 API 各不相同。LangChain 的 聊天模型 接口提供了一种通用方法,可以使用 withStructuredOutput()
方法生成结构化输出
// Define tool as a Zod schema
const schema = z.object({ ... });
// Bind schema to model
const modelWithStructure = model.withStructuredOutput(schema)
示例:检索器
在 RAG 和 LLM 应用组件的上下文中,LangChain 的 检索器 接口提供了一种连接到许多不同类型的数据服务或数据库(例如,向量存储 或数据库)的标准方法。检索器的底层实现取决于您连接的数据存储或数据库的类型,但所有检索器都实现了 runnable 接口,这意味着它们可以以通用的方式被调用。
const documents = await myRetriever.invoke("What is the meaning of life?");
[
Document({
pageContent: "The meaning of life is 42.",
metadata: { ... },
}),
Document({
pageContent: "The meaning of life is to use LangChain.",
metadata: { ... },
}),
...
]
编排
虽然单个组件的标准化很有用,但我们越来越看到开发者希望将组件组合成更复杂的应用。这促使人们需要 编排。LLM 应用有几个常见的特性,这个编排层应该支持
对于这些复杂的应用,推荐的编排方式是 LangGraph。LangGraph 是一个库,通过将应用的流程表示为一组节点和边,为开发者提供了高度的控制权。LangGraph 内置了对 持久化、人机环路、记忆 和其他功能的支持。它特别适合构建 智能体 或 多智能体 应用。重要的是,单个 LangChain 组件可以在 LangGraph 节点中使用,但您也可以在不使用 LangChain 组件的情况下使用 LangGraph。
看看我们的免费课程 LangGraph 入门,以了解更多关于如何使用 LangGraph 构建复杂应用的信息。
可观测性和评估
人工智能应用的开发速度通常会受到高质量评估的限制,因为存在选择悖论。开发者经常想知道如何设计他们的提示,或者哪个 LLM 能够在准确性、延迟和成本之间取得最佳平衡。高质量的追踪和评估可以帮助您快速自信地回答这些类型的问题。LangSmith 是我们的平台,支持人工智能应用的可观测性和评估。请参阅我们的概念指南,了解更多关于 评估 和 追踪 的详细信息。
观看我们的视频播放列表 LangSmith 追踪和评估,了解更多详情。
结论
LangChain 为许多人工智能应用的核心组件提供了标准接口,这提供了一些具体的优势
LangGraph 使编排复杂应用(例如,智能体)成为可能,并提供诸如包括 持久化、人机环路 或 记忆 等功能。
LangSmith 通过提供特定于 LLM 的可观测性和用于测试和评估您的应用的框架,使您可以自信地迭代您的应用。