跳转到主要内容

【LangChain】LangChain Retrieval

TL;DR:我们正在调整我们的抽象,以便在LangChain中使用除LangChain VectorDB对象之外的其他检索方法。这样做的目的是(1)允许在LangChain中更容易地使用在其他地方构建的检索器,(2)鼓励对替代检索方法(如混合搜索)进行更多实验。这是向后兼容的,所以所有现有的链都应该像以前一样继续工作。然而,我们建议尽快从VectorDB链更新到新的Retrieval链,因为这些链将是未来最受支持的链。

【LLM】LangChain+Zapier自然语言动作(NLA)

我们非常高兴能与Zapier合作,并将其新的Zapier-NLA API集成到LangChain中,您现在可以将其用于您的代理和链。通过这种集成,您可以通过自然语言API接口访问Zapier平台上的5k+应用程序和20k+操作。这是非常强大的,并为您的LangChain代理提供了看似无限的可能性。向Mike Knoop和Zapier团队的其他成员大声疾呼,感谢他们帮助实现了这一集成。您可以在上面共享的链接中请求访问。你将建造什么?

Zapier NLA

NLA支持Gmail、Salesforce、Trello、Slack、Asana、HubSpot、Google Sheets、Microsoft Teams等应用程序,以及成千上万的应用程序:https://zapier.com/apps

Zapier NLA处理所有底层API身份验证和自然语言翻译->底层API调用->返回LLM的简化输出。关键思想是通过类似oauth的设置窗口公开一组操作,然后可以通过REST API查询和执行这些操作。

NLA提供API密钥和OAuth,用于对NLA API请求进行签名。

【LangChain】语言模型评估

评估语言模型,以及在语言模型之上构建的扩展应用程序,是很困难的。随着最近的模型发布(OpenAI、Anthropic、Google),评估正成为一个越来越大的问题。人们开始尝试解决这个问题,OpenAI发布了OpenAI/evals,专注于评估OpenAI模型。相应地,我们很高兴地宣布,我们对评估链和代理的方式进行了一些补充和改进。

问题

评估LangChain链和代理可能非常困难。这主要有两个原因:

#1:缺乏数据

在开始一个项目之前,你通常没有大量的数据来评估你的链/代理。这通常是因为大型语言模型(大多数链/代理的核心)是非常棒的少试和零试学习者,这意味着你几乎总是能够在没有大量示例数据集的情况下开始执行特定任务(文本到SQL、问答等)。这与传统的机器学习形成了鲜明的对比,在传统机器学习中,甚至在开始使用模型之前,都必须先收集一堆数据点。

#2:缺乏指标

大多数链/代理执行的任务没有很好的指标来评估性能。例如,最常见的用例之一是生成某种形式的文本。评估生成的文本比评估分类预测或数字预测要复杂得多。

【LLM】LLMs 和 SQL

Francisco Ingham和Jon Luo是领导SQL集成变革的两名社区成员。我们真的很高兴能写这篇博客文章,让他们复习他们学到的所有技巧和窍门。我们更高兴地宣布,我们将与他们进行一个小时的网络研讨会,讨论这些知识并提出其他相关问题。本次网络研讨会将于3月22日举行-请在以下链接注册:

LangChain库有多个SQL链,甚至还有一个SQL代理,旨在使与存储在SQL中的数据的交互尽可能简单。以下是一些相关链接:

【LLM】LangChain和 Origin Web浏览器

Origin Web Browser

[编者按]:这是众多客串帖子中的第二篇。我们打算重点介绍构建在LangChain之上的新型应用程序。如果您有兴趣与我们合作,请联系harrison@langchain.dev.

作者:Parth Asawa(pgasawa@)、Ayushi Batwara(Ayushi.Batwara@)、Jason Ding(jasonding@)、Arvind Rajaraman(Arvind.Rajaraman@)[@berkeley.edu]

链接到原始博客文章

问题

你的浏览器以前是这样的吗?

【LLM】LangChain提示选择器

我们听到的一个常见抱怨是,默认的提示模板并不能同样适用于所有型号。上周OpenAI发布了ChatGPT API,这一点变得尤为明显。这个新的API有一个全新的界面(需要新的抽象),因此许多用户注意到旧提示的问题不再有效。尽管我们很快添加了对该模型的支持,但许多用户注意到,适用于GPT-3的提示模板在聊天设置中效果不佳。

所有链都公开了自定义这些提示模板的方法,因此总是可以选择让用户传递更有效的提示。但我们想做得更好。具有默认提示模板的链的一个目标是提供开箱即用的“Just Works”功能。如果不同的模型期望不同类型的提示,则会出现故障。

我们的解决方案是引入PromptSelector的概念。与其为每个链定义默认的PromptTemplate,不如为每个链创建PromptSelector。如果用户未指定提示,则PromptSelector将根据传入的模型选择要使用的PromptTemplate。

有关此操作的示例,请查看以下示例:

【LLM】LangChain聊天模型

上周,OpenAI发布了一个ChatGPT端点。它在上市时有几个大的改进,最显著的是便宜了10倍,速度也快了很多。但它也附带了一个全新的API端点。我们能够快速为这个端点编写一个包装器,让用户像使用LangChain中的任何普通LLM一样使用它,但这并没有充分利用新的基于消息的API。在这篇博客文章中,我们介绍了新的API模式,以及我们如何调整LangChain以适应ChatGPT以及所有未来基于聊天的模型。

关键环节:

为什么是新的抽象概念?

所以OpenAI发布了一个新的API——有什么大不了的?为什么甚至需要新的抽象?

【Langchain】Langchain 代理工具包

今天,我们宣布了代理工具包,这是一种新的抽象,允许开发人员创建为特定用例设计的代理(例如,与关系数据库交互或与OpenAPI规范交互)。我们希望继续开发不同的工具包,使特工能够做出惊人的壮举。Python和TypeScript都支持工具包。

代理

快速复习:我们所说的代理是什么意思?为什么要使用它们?

我们所说的代理是指一个使用LLM来决定以重复的方式采取什么行动的系统,其中未来的决定是基于对先前行动结果的观察。这种方法有几个好处。首先,它允许将LLM与外部知识或计算来源(工具本身)相结合。其次,它允许迭代规划和采取行动,这对于有一系列事情要做的更复杂的任务很有用。最后,它允许以一种稳健的方式进行错误处理,因为代理可以观察某个操作是否引发了错误并尝试纠正它。这些好处在下面的示例中显而易见。

工具程序

工具包允许您对共享特定资源(如数据库连接或json对象)的一组工具进行逻辑分组和初始化。它们可以用于为特定的用例构建代理。以下是使用它们创建的工具包和代理的一些示例:

SQL数据库代理

该代理基于SQLDatabaseChain构建,能够回答有关数据库的一般问题,在执行查询之前仔细检查查询,并从错误中恢复。

【LangChain】LangChain中的流支持

我们很高兴宣布在LangChain中提供流媒体支持。有很多关于LLM应用程序最佳用户体验的讨论,我们相信流媒体是其核心。我们还更新了chat langchain repo,以包括流和异步执行。我们希望这个回购可以作为开发人员构建一流聊天和问答应用程序的模板。

动机

开发人员在尝试构建有用的LLM应用程序时讨论的最大痛点之一是延迟;这些应用程序经常对LLM API进行多次调用,每次调用需要几秒钟的时间。盯着一个加载微调器看几秒钟以上可能会让用户感到非常沮丧。

流式处理通过逐个令牌而不是一次性返回LLM令牌的输出,有助于减少这种感知的延迟。在聊天应用程序的上下文中,当LLM生成令牌时,它可以立即提供给用户。虽然这不会改变从问题提交到完全响应的端到端执行时间,但它通过向用户显示LLM正在取得进展,大大减少了感知到的延迟。ChatGPT是利用LLM流的应用程序的一个很好的例子。我们构建了一个示例聊天机器人应用程序,该应用程序与ChatGPT一样使用流媒体(更多详细信息如下):

https://www.loom.com/share/a64b1def314a4884ab0526bf77d9fa65

【ChatGPT】使用ChatGPT API评估ChatGPT API

OpenAI昨天发布了一个新的ChatGPT API。很多人都很兴奋尝试它。但它与现有的API相比究竟如何?要有一个明确的答案还需要一段时间,但这里有一些初步的想法。因为我很懒,我还注册了ChatGPT API本身的帮助来帮助进行此评估。困惑的别这样,我们进去吧。

相关链接: