Press "Enter" to skip to content

LangChain Templates 发布

今天,我们很高兴宣布发布✨LangChain模板✨。这是一个包含多种任务的易于部署的参考架构集合。这是一种🖌️创建,🤝分享,⏬下载和💱自定义链和代理的新方式。

我们与合作伙伴合作添加了超过40个不同的模板,涵盖了广泛的领域,包括高级 RAG、代理人、提取、开源模型等等,以帮助开发人员更快地将 AI 产品投放市场。随着时间的推移,我们将继续增加这些模板。

使用 LangChain CLI,您可以轻松启动 LangChain 应用,然后轻松下载一个包含链或代理的模板。然后,您可以轻松通过🦜🏓LangServe部署该链或代理,从而获得即可用于生产环境的端点和游乐场。这个过程与 LangSmith🦜🛠️完全集成。

重要链接

快速入门 : 请参阅此链接了解如何开始使用LangChain模板的指南。

YouTube演示 : 我们录制了一个关于如何使用LangChain模板的快速演示视频。

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

托管的LangServe : 我们即将发布一个托管版本的LangServe,用于单击部署LangChain应用程序。在这里注册

其他资源

特色模板 : 探索可用的众多模板-从高级RAG到代理。

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

贡献 : 想要贡献自己的模板吗?这很简单!这些指南会教你如何做到。

LangServe : 了解部署LangChain链和代理的最佳方式。

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

动机

我们为什么要开发LangChain模板?这些模板可以是链式的,也可以是代理的,代表了一个完整的“有上下文意识的推理应用程序”。随着时间的推移,我们注意到:

  • 开发人员希望创建许多不同类型的应用程序
  • 开发人员希望更好地理解应用程序的内部工作原理
  • 开发人员希望修改应用程序的内部工作原理
  • 开发人员希望有一种简单的部署方式来部署应用程序

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

我们最近注意到,在LangChain上添加了许多链式和代理式的应用程序。有几种不同的类型:

  • 针对特定工具的链式应用程序
  • 针对特定语言模型的链式应用程序
  • 新的架构

不同类型的链式应用程序的增多是很自然的,这也说明了当前领域的现状。

针对特定工具的链式应用程序

我们看到有很多链式/代理式的应用程序旨在更好地与特定工具进行交互。这与我们对于语言模型的认识是一致的:它们是非常出色的通用工具,因此在不同的工具中使用不同的链式/代理式应用程序是有道理的。对于一个特定的工具来说,最合适的链式/代理式应用程序可能与其他工具略有不同。

针对特定语言模型的链式应用程序

我们发现,并非所有的语言模型都可以适用于所有的任务。最明显的区别在于它们可能需要不同的提示。但它们可能还需要不同的输出解析,甚至需要提供略微不同的上下文。

新架构

我们正在看到新的架构出现,以更好地构建应用程序。我们将在未来的文章中讨论这个问题。这意味着这个领域还处于非常早期的阶段,人们正努力找出与语言模型最佳配合的方式。

这导致了越来越多的链式应用程序被贡献到LangChain中。我们一段时间前就意识到,我们无法接受所有可能的变体(否则LangChain将变得非常臃肿)。我们开始更多地使用食谱,但这些食谱不容易发现和使用。

开发人员希望更好地理解应用程序的内部工作原理

尽管将整个链式应用程序封装在一个类中很方便,但却模糊了内部究竟发生了什么。我们引入了LangSmith来帮助调试和观察,虽然它有所帮助,但并不能完全满足用户需要更容易地查看代码的需求。

开发人员希望修改应用程序的内部工作原理

我们看到很多开发人员希望修改链式应用程序的内部工作原理。这可能是改变一些协同工作方式,改变一些上下文加载方式,改变一些提示方式。这与第一点是非常相关的。

因此,我们看到很多人分叉LangChain并在内部修改代码。其中一些人会开出一个请求,其中包含一些关于提示/输出解析器的较小改动。这给我们带来了一个有趣的挑战:评估语言模型应用程序是非常困难的,因此即使这些提示/输出解析器的更改对某个人的应用程序有帮助,我们不愿意将其合并,因为它可能会影响到其他不知情的用户。

开发人员希望有一种简单的部署方式来部署链式应用程序

这里有两个推动因素。

一个推动因素:我们发现,成功的团队之一的做法是快速部署应用程序,以收集用户交互数据。这些用户交互数据在许多方面都很有用。

  • 第一:人们是否正在与之交互?如果没有,那可能意味着这个特定的产品/特性没有产品市场适配性,你可能需要调查一下。
  • 第二:人们如何使用?如果他们以意想不到的方式使用它,可能会改变一些开发的重点。
  • 第三:链式应用程序在哪些方面表现不佳?如果没有具体的数据点来显示链式应用程序的表现好坏,要确切地知道如何改进链式应用程序通常是很困难的。

因此,我们能够让团队尽快部署他们的应用程序,他们就可以更快地进行迭代。

第二个推动因素:许多组织通常没有在其基础架构中部署Python应用程序,并且正在寻找经过验证的部署方式。

什么是LangChain模板

为了应对上述问题,我们开始研发LangChain模板。LangChain模板提供了一系列易于部署的参考架构,任何人都可以使用。我们创建了一系列端到端的模板,用于创建不同类型的应用程序。这些模板采用标准格式,使它们能够很方便地与LangServe一起部署。我们还提供了一个简单的方法来创建新的项目并加载模板。

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

LangChain模板中有什么

我们最为兴奋的是,LangChain模板使我们能够更轻松地添加各种链式应用程序和代理。以下是我们特别兴奋的一些内容:

开源模型

我们听说LangChain似乎以OpenAI为中心。这不是我们的意图,但事实上,大多数链式应用程序的默认提示都是为与OpenAI兼容而设计的。通过LangChain模板,我们非常兴奋地能够为其他模型(特别是开源模型)添加最合适的模板。我们已经为RAGSQL问题回答添加了一些模板,并且我们很高兴能够添加更多模板。

高级RAG

针对高级RAG,有很多不同的方法和算法,我们很兴奋能够更好地突出它们。我们为我们在上周博客文章中查询转换中突出的所有论文都添加了模板。我们还与合作伙伴一起合作,将我们开发的一些启发式方法(如父文档检索器)应用到他们的数据库中,参见Neo4J父文档检索器模板。

特定用例的链式应用程序

我们希望这为突出更多的特定用例链式应用程序打开了门。例如,我们与Sphinx Bio合作,添加了一个模板,旨在在一个混乱的Excel文件中识别出板数据的坐标。这样的应用程序对于核心的LangChain包来说太具体了,但在这里完全合适。

LangChain模板如何解决之前的问题?

我们之前列出了一些不同的问题,我们认为LangChain模板在很大程度上解决了这些问题。

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

通过以这种格式添加链式应用程序模板,我们不再将它们放在LangChain中,这应该可以避免膨胀。这也比食谱更有组织,更容易使用。

开发人员希望更好地理解应用程序的内部工作原理

通过下载链式应用程序(而不是使用pip安装),链式应用程序和代理的源代码就在您的应用程序中。这样很容易检查它。

开发人员希望修改应用程序的内部工作原理

同样,通过下载链式应用程序(而不是使用pip安装),链式应用程序和代理的源代码就在您的应用程序中。这样很容易修改它。

开发人员希望有一种简单的部署方式来部署应用程序

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

结论

LangChain的目标是使开发人员能够尽可能轻松地构建有上下文意识的推理应用程序。我们相信这是迈出的一大步。我们非常感谢我们的合作伙伴,他们帮助提供了初始模板,并期待与社区合作添加更多内容!

特别感谢:

  • 所有为生态系统伙伴提供模板的人
  • Jason Liu建议使用这种方法添加模板
  • Rajtilak Bhattacharjee帮助我们命名langchain-cli
  • 所有帮助测试的社区成员:Greg Kamradt, Ryan Brandt, Misbah Syed, Hai, Lucas Hänke de Cansino, Hamel Husain

本文由极客智坊网页翻译服务自动翻译完成:

微信扫描体验极客翻译

原文地址:https://blog.langchain.dev/langserve-hub/

发表回复