LangChain Templates

LangChain 模板

6 分钟阅读

今天我们很高兴地宣布 LangChain 模板的发布。LangChain 模板提供了一系列易于部署的参考架构,任何人都可以使用。我们与一些合作伙伴合作创建了一组易于使用的模板,以帮助开发人员更快地投入生产。我们将随着时间的推移继续添加内容。这是一种创建、共享、维护、下载和自定义 chains 和 agents 的新方法。它们都采用标准格式,允许使用 LangServe 轻松部署,让您可以轻松获得生产就绪的 API 和免费的 playground。

快速开始:请访问此处获取有关如何开始使用 LangChain 模板的指南。

YouTube 演示:我们拍摄了一个关于如何使用 LangChain 模板的快速演示。

LangSmith:LangChain 模板与 LangSmith(我们的日志记录和调试工具)无缝集成。 在此注册

托管 LangServe:我们将发布 LangServe 的托管版本,用于一键部署 LangChain 应用程序。 在此注册

其他资源

特色模板:探索许多可用的模板 - 从高级 RAG 到 agents。

所有模板:探索所有可用的模板。

贡献:想贡献你自己的模板吗?这非常容易!这些说明将引导你完成操作步骤。

LangServe:了解有关部署 LangChain chains 和 agents 的最佳方式的更多信息。

LangServe 网络研讨会:我们将在本周四举办一个网络研讨会,以讨论有关 LangServe 和 LangChain 模板的更多信息。 在此注册

动机

我们推出 LangChain 模板的动机是什么?这些模板可以是 chains 或 agents,代表了全功能的上下文感知推理应用。随着时间的推移,我们已经看到

  • 开发人员想要创建许多不同类型的应用程序
  • 开发人员想要更好地理解应用程序的内部结构
  • 开发人员想要修改应用程序的内部结构
  • 开发人员想要一种简单的方式来部署应用程序

开发人员想要创建许多不同类型的应用程序

我们最近看到添加到 LangChain 的 chains 和 agents 数量激增。有几种不同的类型

  • 工具特定的 chains
  • 语言模型特定的 chains
  • 新架构

所有这些类型的 chains 被添加是自然的,并且说明了该领域的当前状态。

工具特定的 Chains

我们看到许多 chains/agents 旨在最好地与特定工具交互。这与我们对语言模型的了解一致:它们是非常棒的通才,因此我们当然希望将它们与不同的工具一起使用是有道理的。对于一个特定工具最有意义的 exact chain/agent 实际上可能与其他工具略有不同

语言模型特定的 Chains

我们看到并非所有语言模型都可互换用于所有任务。在最明显的层面上,它们可能需要不同的提示。但它们也可能需要不同的输出解析,甚至可能需要提供略有不同的上下文。

新架构

我们正在看到构建应用程序的最佳新架构的出现。我们将在未来的文章中讨论这一点。这意味着该领域仍处于非常早期的阶段,人们正在试图弄清楚如何最好地使用语言模型。

这导致了大量 chains 和 agents 被贡献给 LangChain。我们很久以前就意识到我们无法接受每一种可能的变体(否则 LangChain 将变得非常臃肿)。我们开始越来越多地转向示例集,但这些示例集的可发现性或可用性都不如理想。

开发人员想要理解应用程序的内部结构

虽然将整个 chain 包装在一个类中很方便,但这确实模糊了内部到底发生了什么。我们引入了 LangSmith 来帮助进行调试和可观察性,虽然这有所帮助,但这与能够轻松查看代码不同。

开发人员想要修改应用程序的内部结构

我们已经看到许多开发人员想要修改 chains 的内部结构。这可能包括更改一些编排、更改一些上下文加载、更改一些提示。这与第一点非常相关。

因此,我们已经看到很多人 fork LangChain 并从内部修改代码。他们中的一些人针对提示/输出解析器进行了较小的更改,并打开了 PR。但这给我们带来了一个有趣的挑战:评估语言模型应用程序非常困难,因此即使这些提示/输出解析器更改可能对某人的应用程序有帮助,我们也hesitate to merge these in for fear that it may affect some other unsuspecting user.

开发人员想要一种简单的方式来部署 chains

这里有两个驱动因素。

一个驱动因素:我们看到成功团队所做的事情之一是快速部署应用程序,以收集用户交互数据。此用户交互数据对于许多目的都很有用。

  • 首先:人们甚至在与之互动吗?如果没有,那么这可能意味着这个特定的产品/功能没有产品市场契合度,你需要调查一下。
  • 其次:人们是如何使用的?如果他们以意想不到的方式使用它,那可能会改变一些开发重点。
  • 第三:chain 在哪里表现不佳?通常很难知道如何在不看到 chain 在哪里表现良好的具体数据点的情况下准确改进 chain。

因此,我们越快让团队部署他们的应用程序,他们就可以越快地迭代。

第二个驱动因素:许多组织通常没有在其基础设施中部署 Python 应用程序,并且正在寻找一种经过实战检验的方法来做到这一点。

什么是 LangChain 模板

为了响应上述情况,我们开始开发 LangChain 模板。LangChain 模板提供了一系列易于部署的参考架构,任何人都可以使用。我们创建了一系列端到端模板,用于创建不同类型的应用程序。这些模板采用标准格式,使其易于使用 LangServe 部署。我们还公开了一种创建新项目和加载模板的简便方法。

你如何使用这些模块?你可以首先创建一个项目,其中包含 chains 的文件夹。然后,你可以轻松地将模块下载到该应用程序项目中。你可以轻松地检查和修改 chain(因为它是被下载的,而不是通过 pip 安装的)。然后,你可以使用 langserve 部署整个项目。

LangChain 模板包含什么

我们对 LangChain 模板最兴奋的事情之一是,它使我们能够更轻松地添加各种 chains 和 agents。我们特别兴奋的一些是

OSS 模型

我们听到了很多关于 LangChain 似乎以 OpenAI 为中心的说法。这不是我们的本意,但大多数 chains 的默认提示确实旨在与 OpenAI 配合使用。借助 LangChain 模板,我们非常高兴能够添加最适合其他模型(尤其是开源模型)的模板。我们已经为 RAGSQL 问答 添加了一些,我们很高兴添加更多。

高级 RAG

高级 RAG 有很多不同的方法和算法,我们很高兴能够更恰当地突出显示它们。我们为上周在关于 查询转换 的博客文章中强调的所有论文添加了模板。我们还与合作伙伴合作,采用我们开发的一些启发式方法(例如 父文档检索器),并使它们与他们的数据库一起工作 - 请参阅 Neo4J 父文档检索器 模板。

用例特定的 Chains

我们希望这能为突出显示越来越多的用例特定 chains 开辟道路。例如,我们与 Sphinx Bio 合作添加了一个 模板,旨在识别杂乱的 Excel 文件中板数据的坐标。像这样的东西太具体了,无法包含在核心 LangChain 包中,但在这里非常合适。

LangChain 模板如何解决早期的问题?

上面我们列出了一些我们观察到的不同问题。我们认为 LangChain 模板在解决这些问题方面取得了长足的进步。

开发人员想要创建许多不同类型的应用程序

通过以这种格式为 chains 和 agents 添加模板,我们不再将它们放在 LangChain 中,这应该可以防止臃肿。这比示例集也更有条理,更易于使用。

开发人员想要更好地理解应用程序的内部结构

通过下载 chains(而不是通过 pip 安装),chains 和 agents 的源代码就在你的应用程序中。这使得检查它变得容易。

开发人员想要修改应用程序的内部结构

同样,通过下载 chains(而不是通过 pip 安装),chains 和 agents 的源代码就在你的应用程序中。这使得修改它变得容易。

开发人员想要一种简单的方式来部署应用程序

所有模板都采用标准格式,这使得使用 LangServe 部署它们变得容易。

结论

LangChain 的目标是使开发人员尽可能轻松地构建上下文感知推理应用程序。我们相信这是朝着这个方向迈出的重要一步。我们非常感谢帮助提供初始模板的合作伙伴,并且我们期待与社区合作添加更多模板!

衷心感谢

  • 所有贡献了模板的生态系统合作伙伴
  • Jason Liu 提出了这种添加模板的方法
  • Rajtilak Bhattacharjee 帮助我们确定了 langchain-cli 包名
  • 所有帮助测试的社区成员:Greg Kamradt, Ryan Brandt, Misbah Syed, Hai, Lucas Hänke de Cansino, Hamel Husain