11-1 LangChain框架简介

前言

本章,我们开始介绍LangChain框架。

LangChain是一个由大型语言模型 (LLM) 驱动的应用程序开发框架。可以说,目前在整个行业的地位应该数一数二。

当然难度也有点高。

知识点

  • LangChain框架构成

基础知识

LangChain免费且开源,Apache License模式。你可以简单的认为LangChain是一套开发LLM

官方网站:https://www.langchain.com/

LangChain 简化了 LLM 应用程序生命周期的每个阶段:

  • 开发:使用 LangChain 的开源构建块和组件构建您的应用程序。使用第三方集成和模板快速开始运行。
  • 生产化:使用LangSmith检查、监控和评估您的链,以便您可以不断优化和自信地部署。
  • 部署:使用LangServe将任何链转变为 API 。

以下是整体产品布局图

11-1 LangChain框架简介

具体来说,该框架由以下开源库组成:

  • langchain-core:基础抽象和LangChain表达语言。
  • langchain-community:第三方集成。
    • 合作伙伴包(例如langchain-openailangchain-anthropic等):一些集成被进一步拆分成自己的仅依赖于的轻量级包langchain-core
  • langchain:构成应用程序认知架构的链、代理和检索策略。
  • langgraph:通过将步骤建模为图中的边和节点,使用 LLM 构建健壮且有状态的多参与者应用程序。
  • langserve:将 LangChain 链部署为 REST API。
  • LangSmith:一个开发人员平台,可让您调试、测试、评估和监控 LLM 应用程序

Official release官方版本安装

要安装 LangChain,请运行:

pip install langchain

这将安装 LangChain 的最低要求。LangChain 的很多价值在于将其与各种模型提供程序、数据存储等集成。默认情况下,不会安装执行此操作所需的依赖项。您需要单独安装特定集成的依赖项。

from source

如果您想从源代码安装,您可以通过克隆 repo 来实现,并确保目录正在PATH/TO/REPO/langchain/libs/langchain运行:

pip install -e .

LangChain Core

langchain-core软件包包含 LangChain 生态系统其余部分使用的抽象基类以及 LangChain 表达语言。它由 自动安装langchain,但也可以单独使用。使用以下方式安装:

pip install langchain-core

LangChain Community

langchain-community软件包包含第三方集成。安装时使用:

pip install langchain-community

LangChain experimental

langchain-experimental软件包包含实验性的 LangChain 代码,旨在用于研究和实验用途。安装:

pip install langchain-experimental

LangGraph

langgraph是一个使用 LLM 构建有状态、多参与者应用程序的库,它建立在 LangChain 之上(并计划与其一起使用)。使用以下方式安装:

pip install langgraph

LangServe

LangServe 帮助开发人员将 LangChain 可运行对象和链部署为 REST API。LangServe 由 LangChain CLI 自动安装。如果不使用 LangChain CLI,请使用以下命令安装:

pip install “langserve[all]”

适用于客户端和服务器依赖项。或者pip install "langserve[client]"适用于客户端代码和pip install "langserve[server]"服务器代码。

LangChain CLI

LangChain CLI 适用于处理 LangChain 模板和其他 LangServe 项目。安装方式:

pip install langchain-cli

LangSmith SDK

LangSmith SDK 由 LangChain 自动安装。如果不使用 LangChain,请使用以下命令安装:

pip install langsmith

LCEL介绍

LangChain 表达式语言 (LangChain Expression Language, or LCEL) 是一种声明式的链接 LangChain 组件的方法。

LCEL 从第一天开始就被设计为支持将原型投入生产,无需更改代码,从最简单的“prompt + LLM”链到最复杂的链(我们已经看到人们在生产中成功运行了包含 100 多个步骤的 LCEL 链)。以下是您可能想要使用 LCEL 的几个原因:

一流的流式支持 当您使用 LCEL 构建链时,您将获得最佳的第一个令牌时间(直到第一个输出块出现为止所经过的时间)。对于某些链,这意味着例如我们将令牌直接从 LLM 流式传输到流式输出解析器,然后您会以与 LLM 提供程序输出原始令牌相同的速率获得解析后的增量输出块。

异步支持 使用 LCEL 构建的任何链都可以使用同步 API(例如在原型设计时在 Jupyter 笔记本中)以及异步 API(例如在LangServe服务器中)调用。这使得原型和生产中使用相同的代码成为可能,具有出色的性能,并且能够在同一服务器中处理许多并发请求。

优化并行执行 每当您的 LCEL 链具有可以并行执行的步骤时(例如,如果您从多个检索器获取文档),我们都会在同步和异步接口中自动执行此操作,以尽可能减少延迟。

重试和回退 为 LCEL 链的任何部分配置重试和回退。这是让您的链在规模上更可靠的好方法。我们目前正在努力添加对重试/回退的流式支持,这样您就可以获得额外的可靠性而无需任何延迟成本。

访问中间结果 对于更复杂的链,在产生最终输出之前访问中间步骤的结果通常非常有用。这可用于让最终用户知道正在发生的事情,甚至只是调试您的链。您可以流式传输中间结果,并且它在每个LangServe服务器上都可用。

输入和输出模式 输入和输出模式为每个 LCEL 链提供从链结构推断出的 Pydantic 和 JSONSchema 模式。这可用于验证输入和输出,是 LangServe 不可或缺的一部分。

无缝 LangSmith 跟踪 随着您的链条变得越来越复杂,了解每一步究竟发生了什么变得越来越重要。使用 LCEL,所有步骤都会自动记录到LangSmith,以实现最大的可观察性和可调试性。

无缝 LangServe 部署 使用 LCEL 创建的任何链都可以使用LangServe轻松部署。

可运行接口

为了尽可能轻松地创建自定义链,我们实现了“Runnable”协议。许多 LangChain 组件都实现了该Runnable协议,包括聊天模型、LLM、输出解析器、检索器、提示模板等。还有几个用于处理 Runnable 的有用原语,您可以在下面阅读。

这是一个标准接口,可以轻松定义自定义链并以标准方式调用它们。标准接口包括:

  • stream:流回响应块
  • invoke:在输入上调用链
  • batch:在输入列表上调用链

它们还具有相应的异步方法,应与asyncio await语法一起使用以实现并发:

  • astream:异步流回响应块
  • ainvoke:在输入异步时调用链
  • abatch:异步调用输入列表上的链
  • astream_log:除了最终响应之外,还流回中间步骤的发生
  • astream_events:链中发生的betalangchain-core流事件(在0.1.14 中引入)

输入类型输出类型因组件而异:

ComponentInput TypeOutput Type
PromptDictionaryPromptValue
ChatModelSingle string, list of chat messages or a PromptValueChatMessage
LLMSingle string, list of chat messages or a PromptValueString
OutputParserThe output of an LLM or ChatModelDepends on the parser
RetrieverSingle stringList of Documents
ToolSingle string or dictionary, depending on the toolDepends on the tool

所有可运行对象都公开输入和输出模式以检查输入和输出:

  • input_schema:从 Runnable 结构自动生成的输入 Pydantic 模型
  • output_schema:从 Runnable 结构自动生成的输出 Pydantic 模型

组件

LangChain 为各种组件提供标准、可扩展的接口和外部集成,这些组件可用于使用 LLM 进行构建。有些组件是 LangChain 实现的,有些组件我们依赖第三方集成,还有一些则是混合的。

RA/SD 衍生者AI训练营。发布者:chris,转载请注明出处:https://www.shxcj.com/archives/6754

Like (0)
Previous 2024-10-10 1:59 下午
Next 2024-10-22

相关推荐

发表回复

Please Login to Comment
本文授权以下站点有原版访问授权 https://www.shxcj.com https://www.2img.ai https://www.2video.cn