LangChain 表达语言(LCEL)
LangChain 表达语言(LCEL) 是一种声明式方法,可以轻松组合链条。 LCEL 从第一天设计时就目的在于 支持将原型置于生产中,无需更改代码,无论是最简单的“提示+LLM”链还是最复杂的链(我们见过成功在生产中运行带有数百步骤的 LCEL 链)。以下是你可能想使用 LCEL 的几个原因的亮点:
一流的流处理支持 当你使用 LCEL 构建链时,你可以获得尽可能短的首个令牌时间(直到输出的第一个块出来的时间)。对于一些链来说,这意味着我们可以从 LLM 直接将令牌流式传输到流式输出解析器,您将以与 LLM 提供程序输出原始令牌的速率相同的速率获得解析的增量输出块。
异步支持 使用 LCEL 构建的任何链既可以使用同步 API(例如在原型设计时的 Jupyter 笔记本中)调用,也可以使用异步 API(例如在 LangServe 服务器上)调用。这使得您可以在原型和生产环境中使用相同的代码,具有良好的性能,并能够在同一个服务器上处理许多并发请求。
优化的并行执行 只要您的 LCEL 链有可以并行执行的步骤(例如,如果您从多个提取器中获取文档),我们会自动执行它,无论是同步接口还是异步接口,以获得最小的延迟。
重试和回退 (opens in a new tab) 为 LCEL 链的任何部分配置重试和回退。这是使您的链在大规模环境中更加可靠的好方法。我们目前正在添加重试/回退的流处理支持,这样您就可以在不牺牲延迟的情况下获得更高的可靠性。
访问中间结果 对于更复杂的链,访问中间步骤的结果通常非常有用,即使在最终输出产生之前。这可以用于让最终用户知道发生了什么,甚至只是用于调试链。您可以流式传输中间结果,在每个 LangServe 服务器上都可以使用。
输入和输出模式 输入和输出模式根据链的结构推断出每个 LCEL 链的 Pydantic 和 JSONSchema 模式。这可以用于验证输入和输出,并且是 LangServe 的一个重要组成部分。
无缝的 LangSmith 跟踪 随着链条变得越来越复杂,了解每个步骤发生的具体情况变得越来越重要。 在 LCEL 中,所有 步骤都自动记录到 LangSmith,以实现最大的可观察性和可调试性。
无缝的 LangServe 部署 使用 LCEL 创建的任何链都可以轻松部署使用 LangServe。