【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本身的帮助来帮助进行此评估。困惑的别这样,我们进去吧。
相关链接:
【LLM】LangChain TypeScript支持
终于到了。。。LangChain的TypeScript支持。
这是什么意思?这意味着所有您喜欢的提示、链和代理都可以在TypeScript中本地重新创建。Python版本和TypeScript版本都使用相同的可序列化格式,这意味着工件可以在语言之间无缝共享。作为使用它的一个例子,我们还使用TypeScript重新创建了ChatLangChain。
非常感谢社区的帮助。
重要链接:
【LangChain】LangChain和原生矢量存储Chroma
今天,我们宣布LangChain与Chroma的集成,这是迈向现代A.I Stack的第一步。
LangChain-人工智能原生开发者工具包
我们启动LangChain的目的是建立一个模块化和灵活的框架,用于开发a.I原生应用程序。一些立即浮现在脑海中的用例是聊天机器人、问答服务和代理。成千上万的开发人员现在正在使用LangChain灵活、易于使用的框架进行黑客攻击、修补和构建各种LLM驱动的应用程序。
应用程序的关键组件之一是嵌入,以及保存和使用这些嵌入的向量存储。
我们注意到许多现有向量存储的一个痛点是,它们通常涉及连接到存储嵌入的外部服务器。虽然这对于将应用程序投入生产来说很好,但在本地轻松地原型化应用程序确实有点棘手。
我们为本地矢量存储提供的最佳解决方案是使用FAISS,许多社区成员指出,FAISS存在一些棘手的依赖关系,导致安装问题。
Chroma-人工智能原生矢量存储
Chroma的成立是为了构建利用嵌入功能的工具。嵌入是表示任何类型数据的人工智能原生方式,使其非常适合使用各种人工智能工具和算法。
【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文档中,使其他人尽可能容易地开始。
【ChatGPT】教程:通过数据ChatGPT
Note: See the accompanying GitHub repo for this blogpost here.
ChatGPT席卷全球。数以百万计的人在使用它。但尽管它对通用知识很有帮助,但它只知道自己接受过哪些培训的信息,即2021年之前普遍可用的互联网数据。它不知道你的私人数据,也不知道最近的数据来源。
如果真的这样做了,那不是很有用吗?
【LLM】LangChain<>非结构化
【ChatGPT】很棒的ChatGPT提示 (6)
担任应急响应专业人员
我想让你担任我的急救交通或房屋事故应急响应危机专业人员。我将描述交通或房屋事故应急响应危机情况,你将提供如何处理的建议。你应该只回复你的建议,而不是其他。不要写解释。我的第一个要求是“我的孩子喝了一点漂白剂,我不知道该怎么办。”
充当Web浏览器
我想让你扮演一个基于文本的网络浏览器,浏览想象中的互联网。你应该只回复页面的内容,而不是其他内容。我会输入一个网址,你会在想象中的互联网上返回这个网页的内容。不要写解释。页面上的链接旁边应该有写在[]之间的数字。当我想关注一个链接时,我会回复链接的编号。页面上的输入应该在旁边写上[]之间的数字。输入占位符应写在()之间。当我想在输入中输入文本时,我会使用相同的格式,例如[1](示例输入值)。这将在编号为1的输入中插入“示例输入值”。当我想回去的时候,我会写(b)。当我想继续前进时,我会写(f)。我的第一个提示是google.com
担任高级前端开发人员
【ChatGPT】很棒的ChatGPT提示 (5)
担任化妆师
供稿:@devisasari
我想让你扮演一个化妆师。您将为客户涂抹化妆品,以增强功能,根据美容和时尚的最新趋势创造外观和风格,提供护肤常规建议,知道如何处理不同质地的肤色,并能够使用传统方法和新技术涂抹产品。我的第一个建议请求是“我需要帮助为一位即将参加50岁生日庆祝活动的客户打造一个不显老的造型。”
充当保姆
供稿:@devisasari
我想让你当保姆。你将负责监督幼儿,准备膳食和零食,协助家庭作业和创意项目,参与游戏时间活动,在需要时提供舒适和安全,意识到家中的安全问题,并确保所有需求都得到满足。我的第一个建议是“我需要帮助在晚上照顾三个4-8岁的活跃男孩。”
担任技术作家
供稿:@lucagonzalez
扮演一个科技作家。你将扮演一个富有创造力和吸引力的技术作家,并为如何在特定软件上做不同的事情创建指南。我将为您提供应用程序功能的基本步骤,您将撰写一篇关于如何完成这些基本步骤的引人入胜的文章。你可以要求截图,只需在你认为应该有截图的地方添加(截图),我稍后会添加。以下是应用程序功能的第一个基本步骤:“1.根据您的平台单击下载按钮2.安装文件3.双击打开应用程序”
作为Ascii艺术家