为什么选择LangChain?
langchain
Python 包和 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)
示例:检索器
在RAG和LLM应用组件的背景下,LangChain的retriever接口提供了一种标准的方式来连接到许多不同类型的数据服务或数据库(例如,向量存储或数据库)。 retriever的底层实现取决于您连接的数据存储或数据库的类型,但所有retriever都实现了runnable接口,这意味着它们可以以通用的方式调用。
documents = my_retriever.invoke("What is the meaning of life?")
编排
虽然对单个组件进行标准化是有用的,但我们越来越多地看到开发者希望将组件组合成更复杂的应用程序。 这激发了对编排的需求。 LLM应用程序有几个常见特性,这个编排层应该支持:
- 复杂的控制流: 应用程序需要复杂的模式,例如循环(例如,一个循环会重复直到满足某个条件)。
- 持久性: 应用程序需要维护短期和/或长期记忆。
- Human-in-the-loop: 应用程序需要人工交互,例如暂停、审查、编辑、批准某些步骤。
推荐用于编排复杂应用程序组件的方法是LangGraph。 LangGraph 是一个库,通过将应用程序的流程表达为一组节点和边,为开发者提供了高度的控制。 LangGraph 内置支持持久化、人在回路、记忆等功能。 它特别适合构建代理或多代理应用程序。 重要的是,单独的 LangChain 组件可以用作 LangGraph 节点,但你也可以不使用 LangChain 组件来使用 LangGraph。
看看我们的免费课程,Introduction to LangGraph,了解更多关于如何使用LangGraph构建复杂应用程序的信息。
可观察性和评估
AI应用程序开发的步伐常常受到高质量评估的限制,因为存在选择悖论。 开发人员常常想知道如何设计他们的提示,或者哪种LLM最能平衡准确性、延迟和成本。 高质量的跟踪和评估可以帮助您快速自信地回答这类问题。 LangSmith 是我们的平台,支持AI应用程序的可观察性和评估。 有关更多详细信息,请参阅我们的概念指南 评估 和 跟踪。
观看我们的视频播放列表LangSmith 跟踪和评估以获取更多详细信息。
结论
LangChain 为许多 AI 应用中的核心组件提供了标准接口,这带来了几个特定的优势:
LangGraph 使得编排复杂应用(例如,代理)成为可能,并提供诸如持久化、人在回路或记忆等功能。
LangSmith 通过提供特定于LLM的可观察性和测试评估框架,使您能够自信地迭代您的应用程序。