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