【LLM】LangChain TypeScript支持
终于到了。。。LangChain的TypeScript支持。
这是什么意思?这意味着所有您喜欢的提示、链和代理都可以在TypeScript中本地重新创建。Python版本和TypeScript版本都使用相同的可序列化格式,这意味着工件可以在语言之间无缝共享。作为使用它的一个例子,我们还使用TypeScript重新创建了ChatLangChain。
非常感谢社区的帮助。
重要链接:
【LangChain】LangChain中的异步支持
我们很高兴能够利用asyncio库在LangChain中推出最初的异步支持。Asyncio使用协程和事件循环来执行非阻塞I/O操作;这些协同程序能够在等待最终结果时“暂停”(等待),并在此期间让其他例程运行。要了解更多关于asyncio的信息,以及它与多线程和多处理的比较,请查看这个很棒的教程。
动机
由于LangChain应用程序往往是相当I/O和网络绑定的(调用LLM API并与数据存储交互),asyncio通过允许您同时运行LLM、链和代理提供了显著的优势:当一个代理正在等待LLM调用或工具完成时,另一个代理可以继续取得进展。LangChain中的异步支持还允许您将异步链和代理更无缝地集成到支持异步的框架中,例如FastAPI。
特别查看异步代理文档,看看并发执行可以在多大程度上加快速度!
用法
作为起点,我们已经实现了对以下各项的异步支持:
LLM
via agenerate
(see docs):
【LLM】用你的数据聊天挑战
ChatGPT席卷全球。数以百万计的人在使用它。但尽管它对通用知识很有帮助,但它只知道自己接受过哪些培训的信息,即2021年之前普遍可用的互联网数据。它不知道你的私人数据,也不知道最近的数据来源。
如果真的这样做了,那不是很有用吗?这就是LangChain的用武之地。
LangChain的目标是让每个人都更容易开发语言模型应用程序。我们最近在这里发布了一份关于如何通过您的数据创建自己的ChatGPT的指南。其中包括一个示例GitHub repo,用于启动和自定义。但即便如此,仍有一长串数据源需要集成和编写提示。我们在发出呼吁,看看什么是最有趣的集成,并得到了压倒性的回应后意识到了这一点。
在“Chat Your Data”挑战中,我们将发起为期一周的挑战,通过您的数据源创建ChatGPT。
动机
一如既往,这样做的动机是让每个人都更容易开发语言模型应用程序。特别是,我们认为示例对于帮助人们做到这一点至关重要。因此,我们希望为各种数据源提供尽可能多的示例(数据加载程序+提示)。
然后,我们将把数据加载逻辑放在LangChain中,把提示放在LangChainHub中,并把示例放在LangChain文档中,使其他人尽可能容易地开始。
【LLM】LangChain<>非结构化
【LLM】Langchain跟踪介绍
我们很高兴宣布在LangChain中支持原生追踪!通过在LangChain运行中启用跟踪,您将能够更有效地可视化、逐步完成和调试链和代理。
A view of a more complicated trace at a high level
动机
关于链和代理执行的推理对于故障排除和调试非常重要。然而,对于复杂的链和代理来说,这可能很困难,原因有很多:
- 可能会有大量的步骤,因此很难跟踪所有步骤
- 步骤的顺序无法固定,可能会根据用户输入而变化
- 每个阶段的输入/输出可能不长,需要进行更详细的检查
链或代理的每一步也可能涉及嵌套——例如,代理可能会调用一个工具,该工具使用LLMMathChain,它使用LLMChain,然后调用LLM。如果您注意到来自顶级代理运行的奇怪或不正确的输出,则很难确定它在执行中的确切位置。
通过跟踪,您可以清楚地看到特定链或代理运行中涉及的每个LangChain原语的输入和输出,按照它们被调用的顺序,从而解决了这一问题。
【LLM】LangChain特性存储和LLM
编者按:非常感谢Willem Pienaar(Feast)、Mike Del Balso(Tecton)和Simba Khadder(FeatureForm)对本文的评论和帮助。
LLM代表了人工智能的一种新范式。有多少对传统机器学习有用的工具和服务在这里仍然相关,这是一个悬而未决的大问题。一方面,对于这种新的范式,有非常真实的新用例和需求。另一方面,现有的工具和服务具有多年的经验、开发和功能强化。这些工具在这个新的范式中仍然有用吗?
特性存储概述
一个特别有趣的案例研究是功能商店。在传统的机器学习中,模型的输入不是原始文本或图像,而是与手头的数据点相关的一系列工程“特征”。特征库是一个特征库,是一个旨在将ML特征集中并提供给模型的系统。通常有两个好处:
一种跟踪在特定时间点存在哪些特征以用于模型训练的方法
- 进行推理时使用的实时特征管道
- 这些可能如何适用于LLM应用程序?
第一点似乎没有那么重要。大多数人使用OpenAI、Anthropic等预先训练的LLM,而不是从头开始训练自己的模型。
【LLM】langchain结构化工具
TL;DR:我们正在引入一种新的抽象,以允许使用更复杂的工具。虽然以前的工具只接受单个字符串输入,但新工具可以接受任意数量的任意类型的输入。我们还引入了一个新的代理类,它可以很好地与这些新类型的工具配合使用。
重要链接:
- 工具列表
- 新代理人
早在2022年11月,当我们首次推出LangChain时,代理和工具利用率在我们的设计中发挥了核心作用。我们建立了基于ReAct的首批链之一,这是一篇开创性的论文,将工具的使用带到了提示框架的前沿。
在早期,工具的使用过于简单。一个模型将生成两个字符串:
- 工具名称
- 所选工具的输入字符串
这种方法将代理限制为每转一个工具,并且该工具的输入限制为单个字符串。这些限制主要是由于模型的限制;模型甚至很难熟练地完成这些基本任务。可靠地执行更复杂的操作,例如选择多个工具或填充复杂的模式,将是一件愚蠢的事。
然而,更先进的语言模型(如text-davinci-003、gpt-3.5-turbo和gpt-4)的快速发展为现有模型能够可靠实现的目标奠定了基础。这促使我们重新评估LangChain代理框架中对工具使用的限制。
【LLM】LangChain入门:构建LLM驱动的应用程序入门指南
LangChain教程,用于在Python中使用大型语言模型构建任何东西
“What did the stochastic parrot say to the other?” (Image drawn by the author)
自从ChatGPT发布以来,大型语言模型(LLM)获得了很大的流行。尽管你可能没有足够的资金和计算资源在地下室从头开始训练LLM,但你仍然可以使用预先训练的LLM来构建一些很酷的东西,例如:
- 可以根据您的数据与外界互动的个人助理
- 为您的目的定制聊天机器人
- 对您的文档或代码进行分析或总结
LLM正在改变我们构建人工智能产品的方式
【LLM】LangChain的LangFlow
LangFlow是LangChain的一个GUI,可以轻松地进行LLM应用程序和提示链接的实验和原型制作。
LangFlow是一个基于LangChain的本地LLM图形开发接口。如果你以任何方式熟悉LangChain,在链、代理和提示工程方面,这个开发界面都会感觉非常直观。
在下图中,是所有可用组件分组的列表。展开后,可以看到链、提示、代理和LLM的开发可供性列表。这个列表肯定会随着兴趣的增加而增加。
以下是关于如何构建一个非常简单的LLM Chaining应用程序以及如何与该应用程序聊天的简短教程。
要构建最简单的LLM应用程序,需要选择三个组件并将其拖到设计画布上:
【LLM】langchain 和 ChatGTP 4 agents
代理
代理通过涉及LLM来确定要遵循的操作序列,从而保持一定程度的自主权。
考虑下图,在收到请求后,代理会利用LLM来决定采取哪种操作。“操作”完成后,Agent将进入“观察”步骤。从观察步骤开始,代理人分享一个想法;如果没有达到最终答案,Agent会循环返回到另一个Action,以便更接近最终答案。
LangChain代理可以使用一系列操作。
下面的代码显示了LangChain代理回答一个极其模糊和复杂的问题的完整工作示例:
Who is regarded as the father of the iPhone and what is the square root of his year of birth?
代理人可以采取一些行动:
LLM数学,
以下是SerpApi网站的截图。SerpApi使得从搜索引擎结果中提取数据变得可行。
GPT-4(GPT-4–0314)。