写点什么

LangChain:2023 年最潮大语言模型 Web 开发框架

  • 2023-06-20
    北京
  • 本文字数:2195 字

    阅读完需:约 7 分钟

LangChain:2023年最潮大语言模型Web开发框架

LangChain 是一个帮助在应用程序中使用大型语言模型(LLM)的编程框架。与生成式 AI 中的所有东西一样,这个项目的发展也非常迅速。2022 年 10 月,它先是作为一款 Python 工具,然后在今年 2 月增加了对 TypeScript 的支持。到今年 4 月,它支持多种 JavaScript 环境,包括 Node.js、浏览器、Cloudflare Workers、Vercel/Next.js、Deno 和 Supabase Edge Functions。

 

那么,对于 JavaScript 开发者来说,他们需要了解有关 LangChain 的哪些方面以及如何使用 LLM?在本文中,我们将通过分析 LangChain 作者 Harrison Chase 最近的两次演讲来回答这个问题。

 

LangChain 最初是一个开源项目,在 GitHub 上获得大量关注之后迅速转变为一家初创公司。2017 年,Harrison Chase 还在哈佛上大学,如今已是硅谷的一家热门初创公司的 CEO,这对他来说是一次重大而迅速的跃迁。早些时候,微软首席技术官 Kevin Scott 在他的 Build 主题演讲中对 Chase 大加赞赏。

 

Chat App 的风靡

 

不出所料,LangChain 目前的主要应用是在 LLM(尤其是 ChatGPT)之上构建基于聊天的应用程序。正如 Tyler McGinnis 在 bytes.dev 上对 LangChain 调侃的那样:“聊天接口再多都不为过。”

 

在今年早些时候的一次采访中,Chase 说目前 LangChain 最好的一个应用场景是“基于文档的聊天”。LangChain 也提供了其他功能来增强聊天体验,比如流——也就是可以逐个返回 LLM 输出的单词,而不是一次返回所有内容。

 

不过 Chase 也指出,其他类型的接口也在迅速发展。

 

“从长远来看,可能会有比聊天应用更好的体验。但我认为,就目前而言,这是我们不需要做很多额外工作就能够迅速起步的一种方式。我们能说聊天应用在这半年内就一定是最好的体验吗?可能不能,但我认为目前能够带来价值的东西很可能就是聊天应用。”

 

毕竟基于 LLM 开发应用程序是一项新技术,这个领域的初创公司(比如 LangChain)一直都在努力推出一些工具来帮助了解与 LLM 相关的问题。以提示词工程为例,它仍然主要依赖开发者的直觉来判断哪个提示词会更好。不过,LangChain 今年引入了“追踪”等功能来帮助解决这个问题。

 

代理

 

LangChain 最近引入的一个特性是“定制代理”,Chase 在今年 4 月于旧金山举行的 LLM 训练营上提到了这个。他将代理定义为一种“使用语言模型作为推理引擎”来确定如何根据用户输入与外部世界发生交互的方式。



Harrison Chase 在 LLM 训练营上

 

他举了一个与 SQL 数据库发生交互的例子。他说,通常我们会使用自然语言查询和将其转换为 SQL 查询的语言模型。我们执行查询,并将结果传给语言模型,要求它根据原始问题对其进行综合,最终得到 Chase 所说的“基于 SQL 数据库的自然语言包装器”。

 

代理的作用是处理 Chase 所说的“边缘情况”,也就是 LLM 在上述示例中任何时候都可能出现的模糊输出。

 

他说:“你可以通过代理来选择要使用的工具和针对工具的输入。然后你执行它,得到结果,再把结果反馈到语言模型中。然后继续这样做,直到满足停止条件。”



实现代理

 

我们把代理称为“ReAct”,这与 JavaScript 框架 React 没有任何关系,“ReAct”是指“Reason + Act”。Chase 表示,与其他形式的提示词工程相比,这种方法能产生“更高质量、更可靠的结果”。



ReAct(并非 React)

 

Chase 承认,代理也存在“很多挑战”,而且“大多数代理目前还没有做好生产就绪的准备。”

 

记忆问题

 

他列出的一些问题似乎都是基础的计算机问题,但在 LLM 中,它们更具挑战性。例如,LLM 通常没有长期记忆。正如 Pinecone 教程中所指出的,“默认情况下,LLM 是无状态的——这意味着每一个查询的处理都是独立于其他查询进行的。”

 

LangChain 在这方面为开发者提供了帮助,它将记忆等组件添加到 LLM 的处理过程中。实际上,对于 JavaScript 和 TypeScript,LangChain 提供了两个与记忆相关的方法:loadMemoryVariables 和 saveContext。第一个方法“用于从内存中检索数据(也可使用当前输入值),第二个方法用于在内存中保存数据”。

 

Chase 提到的另一种形式的代理是 Auto-GPT,一种可以配置和部署自主 AI 代理的程序。

 

他说:“Auto-GPT 为代理和工具之间的交互提供了长期记忆,并使用检索向量作为存储(向量数据库)。”

 

新的 LAMP 技术栈?

 

显然,构建基于 LLM 的应用程序还有很多事情要做。在 Build 主题演讲中,微软将 LangChain 作为其“Copilot 技术栈”的“编排”层的一部分。在微软的系统中,编排包括提示词工程和所谓的“元提示词(Meta Prompt)”。

 

微软推出了自己的工具 Semantic Kernel,功能与 LangChain 类似。微软还发布了一个叫作 Prompt Flow 的工具,微软首席技术官 Kevin Scott 称其为“另一种整合了 LangChain 和 Semantic Kernel 的编排机制”。

 

需要注意的是,LangChain 中的“Chain”表明它可以与其他工具互操作——不仅是各种 LLM,还有其他开发框架。今年 5 月,Cloudflare 宣布其 Workers 框架支持 LangChain。

 

甚至还出现了一个关于 LangChain 的缩略词:OPL,即 OpenAI、Pinecone 和 LangChain。它的灵感可能来自 LAMP(Linux、Apache、MySQL、PHP/Perl/Python),20 世纪 90 年代的一个关键技术栈,Web 2.0 的推动器。我们不知道 OPL 会不会成为一个技术术语——当然,它的组件并不都是开源的——但无论如何,这是一个好迹象,表明 LangChain 已经成为许多开发者个人技术栈的重要组成部分。

 

原文链接:


https://thenewstack.io/langchain-the-trendiest-web-framework-of-2023-thanks-to-ai/


相关阅读:


Web3当下,最佳投资就是投资自己

Web3的反思,不要抱怨

给Web3创业者的28个原则

和我一起学习Web3

2023-06-20 15:138057

评论

发布
暂无评论
发现更多内容

不完满的选择,要不要放弃

zhoo299

随笔杂谈

领导发表的报告,你真的读懂了吗?

罗小龙

工作经验

糖果不需要意义

zhoo299

随笔杂谈 电影

带着面试题学习红黑树操作原理,解析什么时候染色、怎么进行旋转、与2-3树有什么关联

小傅哥

Java 数据结构 小傅哥 红黑树 2-3树

MySQL下的DB Link

Simon

MySQL

MySQL中几种常见的日志

Simon

MySQL 日志

学习笔记2

Qx

学习

安全系列之——RSA的公钥私钥有多少人能分的清楚?RSA的签名验签与加密解密如何使用公私钥?

诸葛小猿

加密解密 非对称加密 rsa 签名验签

Docker入门与简单使用

Simon

Docker Linux

学习源码的第八个月,我成了Spring的开源贡献者

程序员DMZ

spring 开源

云上攻击太多怎么办?不妨试试这些工具

华为云开发者联盟

黑客 云服务 数据安全 华为云 企业上云

图解JavaScript——进阶篇(执行上下文、变量对象、作用域、作用域链、闭包、this、原型及原型链、事件循环等一把梭)

执鸢者

Java 大前端 函数执行 事件循环

Apache Pulsar 在 BIGO 的性能调优实战(上)

Apache Pulsar

Flink任务执行-3

小知识点

大数据 flink

SecureBoost算法

soolaugust

学习 同态加密 secureboost

疫情按下快进键,电商抢占市场红利需可靠的助力

华为云开发者联盟

高并发 电商 华为云 流量 云服务器

CDN百科11 | 担心纸质病例被洪水淹没?ECS+CDN+OSS如何助力医疗上云

阿里云Edge Plus

CDN 存储 云服务器

我与游戏相伴【自我访谈】

叶阳夏烟

系列 游戏 游戏观 访谈录

LeetCode题解:11. 盛最多水的容器,while循环双指针,JavaScript,详细注释

Lee Chen

大前端 LeetCode

[High Performance TIDB] Leeson 01:TIDB整体架构---作业

远鹏

高性能 #TiDB

力扣题 - 29 解析大佬题解

Geek_663541

Java算法

LeetCode152-乘积最大子数组-medium

书旅

LeetCode 动态规划

Docker从入门到放弃---基础篇

书旅

Docker 容器

MySQL容器化详细教程

Simon

MySQL Docker 容器

Docker 架构及工作原理

哈喽沃德先生

Docker 容器 微服务

GrowingIO 数据采集 iOS SDK 测试实践

GrowingIO技术专栏

ios 数据采集 sdk

常用SQL语句分享

Simon

MySQL sql

CSS属性整理

kidd

不说再见

太以

疫情 毕业季 遗憾 大学

ARTS打卡第一周(200511-200517)

老胡爱分享

ARTS 打卡计划 ARTS活动

TypeScript 设计模式之发布-订阅模式

Geek_z9ygea

typescript 大前端 设计模式

LangChain:2023年最潮大语言模型Web开发框架_框架_Richard MacManus_InfoQ精选文章