支持私有云部署
AI知识库 AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


LangChain 创始人最新访谈:开源 LLM 中间件的未来与挑战
浏览次数: 1552

我在昨天的新书发布直播中谈到 LangChain 的起源,很多读者对此很感兴趣,刚好看到 LangChain 创始人 Harrison Chase 最近的一期访谈,发现 Z Potentials 公众号对访谈内容进行了翻译整理,故转载过来。在访谈中 Harrison 分享了 LangChain 是如何从一个业余项目到 AI 应用开发领域的热门工具,以及它是如何填补开源应用开发中的空白,特别是在创建与多种 API 模型兼容的提示词和提升 Agent 记忆功能方面,此外还深入讨论了个性化服务和持续学习等都是构建下一代智能应用的核心要素。无论你是 AI 技术的爱好者、开发者还是行业观察者,这篇访谈都将为你揭示开源 AI 生态系统的演变,以及 LangChain 如何在这个领域中发挥其独特的作用。这也是我一直推荐系统学习 LangChain 的原因,作为发展最早,生态最繁荣的社区,不止于掌握这款开发框架,而是掌握 AI 应用开发的新范式,带着这些设计理念去看 Dify、Llamaindex、SuperAGI、AutoGen 等其他优秀项目,理解其中变与不变的部分,学习起来也更容易。

我的新书《LangChain 编程从入门到实践》[1] 已经开售,推荐准备和正在学习 AI 应用开发的朋友购买阅读!

LangChain 简介

Sarah: 各位听众,欢迎再次加入我们的《No Priors》节目。今天,我们有幸邀请到Harrison Chase,LangChain的首席执行官兼联合创始人。LangChain是一个受欢迎的开源框架和开发者工具包,帮助人们构建LLM应用程序。我们很兴奋能与Harrison谈论AI应用开发的现状、开源生态系统及其开放性问题。欢迎你,Harrison。


Harrison: 非常感谢你们邀请我来到这里,我也很期待本次对话。


Sarah: LangChain是一个非常独特的故事,它实际上是从你的一个个人项目开始的。你能谈谈LangChain的起源吗?


Harrison: 当然可以。我对“LangChain是什么”的定义,随着时间以及整个行业的发展,已经发生了变化。LangChain这个开源项目一开始只是我的一个业余爱好项目,我的专业背景在于机器学习和ML运营。这是在2022年的秋季,那时,我正计划离开我之前的公司,但还没有决定下一步要做什么。于是,我开始频繁参加黑客马拉松和各种聚会,与很多研究LLM的人交流。在那里我看到了一些共同的抽象概念,就把它作为一个有趣的副项目放到了一个Python项目中。本以为这只是个人娱乐的项目,没想到它迎来了极好的反响,特别是在Chat GPT发布一个月后,这个项目的发展超出了我的预期。如今,LangChain公司主要推出了两款产品,一款是LangChain的开源工具包,我很愿意深入介绍这部分,另外一款是LangSmith平台,专注于测试、评估和监控等功能。随着公司的发展,LangChain的角色和意义也在不断进化。


管理开源环境


Sarah: 我们上次见面时谈到了一件事,那就是人工智能生态系统和研究领域的发展速度有多快,以及在这种情况下管理一个开源项目意味着什么。能否分享一下,在现有庞大的用户群和迅速变化的应用及技术环境下,你是如何决定哪些部分保持不变,而哪些部分需要更新或改变的?


Harrison: 这是一项有趣的工作。如果我们回到LangChain最初的版本,它在问世之初基本上是三种类似于高层次的实现。其中两种是基于研究论文的,另一种是基于Nat Friedman的NatBot类型的Agent网络爬虫。于是就有了一些高层次的抽象概念,还有一些集成。我们最初与OpenAI、Cohere和HuggingFace等公司进行了整合,这两个层面就这样保持了下来。现在我们拥有700多种不同的集成,并且开发了多种用于特定功能的高级链条和Agent。所以,我认为对于你所说的不变和变化,我们非常重视的是将这些东西连接在一起的低层次抽象和运行时。


我们很快就发现,当人们想要将所有这些不同的集成的底层位连接起来时,LLM、向量存储等组件有时会发生变化。特别是当聊天模型出现时,API 界面就发生了很大变化。因此,我们不得不为此增加新的抽象层,但在过去的几个月里,这些模型保持了相对稳定。我们在底层运行时投入了大量资金,着重于流处理、结构化输出,这些基础部分的重要性一直保持相对稳定。然而,随着时间的推移,组合这些组件的方式和构建应用的模式肯定会发生变化,从简单的链到复杂的链,再到这些类似自主Agent的东西,再到现在的复杂状态机或图之类的东西。因此,我认为我们所看到的最快速的变化就是上层,也就是将事物组合在一起的常见方式。


开发有用的AI Agent


Elad: 您认为在真正实现高性能Agents方面还缺少什么?最近成立了很多公司,它们都非常关注Agent世界,并推动某些类型的自动化向前发展。在你看来,有哪些重要的组成部分是你们所不具备的,或者是整个行业所不具备的,而这些组成部分仍然需要到位,以帮助推动这些事情向前发展?


Harrison: 这个问题问的很好。我认为有几个关键点,首先,我觉得为这些技术找到合适的用户体验(UX)仍是一个挑战。这不一定是我们能够解决的问题。应用程序需要做大量的探索,以找出如何向终端用户传达这些Agent的长处和短处,并揭示如何让他们纠正错误并了解发生了什么。我们尽力强调了中间步骤的可观测性和可纠正性,但关于用户体验,还需要进行大量的试验。


另一个重点是底层LLM的规划能力,并且我认为这可能是我们现在看到人们在构建工作Agent时最大的问题。当人们构建有效的Agent时,他们通常需要将任务分解成许多小部件,并将自己对信息流动方式的理解融入其中,因为LLM 本身还无法完全推理出信息应该如何流动。


我们在学术领域看到了大量关于此的研究。具体来说,有两种类型的关于Agents的研究论文。一些论文集中于Agents的规划步骤。另一些论文则集中于Agents行动后的反思:这个行动是否正确?如何进行改进?


这两种方法都在试图解决LLM的局限性,即从理论上讲,这些都应该是自动完成的。比如,你不应该需要告诉LLM去规划或反思其行动是否正确,它应该能够自动进行这些过程。但我们目前还看到了很多不足。因此,增强LLM的计划能力是一个大挑战,但随着时间的推进,这方面会有所改善。


最后一点可能比较模糊,但作为构建者,我们还在探索制作这些技术的最佳方法。比如,如何在不同节点间正确地流动信息,使这些通常是LLM调用的节点能够工作?你是选择少量提示,还是选择微调模型,还是仅仅致力于改进指令和提示?因此,如何测试这些节点也是一个重大问题。你如何对你的LLM系统和Agents建立信心?围绕这一点,还有很多工作流程需要探索和明确。


Elad: 关于Agents的记忆功能,这个议题一直是讨论的焦点。我很想知道你如何看待实现记忆功能以及它应该是什么样子的。因为人们似乎提出了一些不同的概念,我觉得这些讨论非常有趣。所以,我很好奇你的看法。


Harrison: 我也认为这个话题非常有趣。我的想法是可能有两种类型的记忆,它们虽然相关,但我会区分系统级程序记忆和个性化记忆。所谓的系统级程序记忆,我指的更像是使用工具的正确方法是什么?实现这一目标的正确方法是什么,而不考虑这个人到底是谁,比如我和Sarah有什么不同之类的。在个性化记忆方面,我认为它更像是,“Harrison喜欢足球和篮球。” 当我提出问题时,它应该记得这些个人喜好。所以我认为在处理这两种记忆时,我们看到团队采取了略有不同的方法。


在程序记忆方面,我们认为有效的方法包括使用少量提示和微调来指导如何使用工具,因为这是问题的关键所在。使用工具的正确方法是什么?计划的正确方法是什么?在这方面,我们看到了一些非常有影响力的实例。因此,我认为这就是一个非常有趣的数据飞轮,比如监控你的应用程序、收集好的示例,然后以少量示例的形式将这些数据反馈到你的应用程序中。这也是我们目前在LangSmith上大力推广的一种非常有趣的方法。

另一方面是个性化记忆。这里有几种不同的方法可以实现。例如,OpenAI在他们的Chat GPT中实施了一种方法,通过调用函数来“记住”或“删除”某个事实,这在实现上是一种非常有趣的主动循环,agent会明确决定它想要记住什么或忘记什么。我还看好的一件事是一种更像是被动的后台程序,它可以查看对话并提取洞察力。然后,你就可以在未来的对话中使用这些见解。我认为每种方法都有其优点和缺点,这也体现了对记忆功能的探讨。总体来说,我觉得这是一个非常新兴的领域。事实上,我对这个领域的发展速度感到惊讶,但到目前为止还没有一个明显的最佳解决方案。
人工智能应用开发的复杂性和局限性

Sarah: 在过去的几个月里,你是否注意到人们利用 LangChain 或生态系统构建的应用程序的复杂程度是否发生了显著的变化?我认为,正如 Elad 所提到的,人们正在构建更加高效的Agent应用程序,还有更复杂的多步骤RAG系统。这是否与你所观察到的趋势相匹配?或者,有什么是你觉得最激动人心、最有用的?


Harrison: 这确实与我们的观察相匹配。LangChain从一开始就专注于这类应用。不仅仅是开源项目,LangSmith平台也是如此。我们在测试和可观察性上的重点确实是针对这些多步骤的应用,这一直是我们的关注点。可能市场上普遍的趋势是更倾向于多步骤。但从我们的角度来看,我们一直专注于这些方面。因此,我认为这种趋势并没有那么明显。


我认为这其中也出现了一些有趣的东西。比如在RAG领域,我们已经看到非常有趣的高级查询分析开始发挥作用。这不仅仅是将用户问题直接传递给嵌入模型,而是可能会对问题进行分析,以确定应该将其发送给哪个检索器,或者应该搜索哪个部分?是否有一个明确的元数据过滤器?因此,现在的检索就像是一个多步骤的过程,而且更多的是围绕查询分析进行的。我认为,少量提示和整个数据飞轮开始发挥更大的作用。


在Agent方面,我之前有所提及,但我认为我们考虑事情的方式就像链条一样,是有顺序的步骤,你要做这个,然后你要做这个、最后再做这个,按照确切的顺序做。然后,去年三四月份的时候,Auto GPT出现了,就像是我们真的只是在一个for loop中运行它。这将是一个自主Agent。我认为我们看到进入生产并且影响了laying graph开发的东西是介于两者之间,就像这样一个受控的状态机类型的东西。所以我们最近看到了很多这样的东西出现。因此,我可能会说这就是我们在过去几个月中真正更新了很多我们的观点的一件事。


Sarah: 是的,我认为这与树状搜索以及在每一步都努力提高采样效率相结合,最近已经展示了很多非常有趣、有效的应用。我认为认知技术就是一个令人惊讶的例子,你认为Agent应用还会在哪里开始发挥作用?


Harrison: 我认为在客户支持方面,这是一个很明显的应用场景。Sierra在这个领域做得很好。Cognition的演示也非常令人印象深刻,他们在许多方面都做得很对。他们真正实现了一个有趣的用户体验,这可能是我最兴奋的一个方面,但是我不完全清楚他们底层是怎么实现的。但总体而言我们看到很多人都在解决这类编码问题。我认为,只要执行代码,看看它是否有效,就能得到一个非常好的反馈回路。而且你也知道,构建它的人都是开发人员,所以他们可以测试它。编码、客户支持,还有一些有趣的东西,比如推荐、聊天机器人。因此,我将客户支持与聊天机器人区分开来,前者可能是要明确地解决一个问题。而后者则更注重用户的偏好和他们喜欢的东西。我认为我们已经看到了这两个领域的一些突破。Klarna 也是如此,你知道,他们发布了一个相当不错的版本。


在模型 API 之间切换


Sarah: 我注意到一个趋势,但不确定它是否会持续,那就是公司是否能够在不同的大型语言模型(LLM)之间轻松切换,不管是自我托管的、专门的推理实例,还是实际的 API 提供商,但对于任何给定的应用,都可以根据提示从 "Anthropic "模式切换到 "MLM "模式、Anthropic到Mistral,再到OpenAI等。实际操作中,应用程序的响应方式很可能会对这些 LLM 以不同的方式进行预测这一事实很敏感。你对此有何看法?你认为他们可以轻松切换模型吗?这是一个真正的模式吗?


Harrison: 事实上,这个过程并没有想象中那么简单。关键问题在于,不同模型仍然需要不同的提示语。我相信随着模型逐渐变得更加智能,不同模型之间的提示语可能会逐渐趋同,这样模型的小差异就不再那么重要了。随着越来越多的模型提供商开始支持相同的特性,这种切换会变得更加容易。例如,很多为OpenAI设计的提示语都包含了函数调用,而直到不久前,其他模型还不支持这一特性,这就使得这些提示语无法在其他模型上使用。但现在,Mistral和Google也支持了函数调用,这使得提示语在不同模型间的可转移性有所提高。


Sarah: 还有什么呢?我知道有函数调用,有视觉输入,还有其他什么能让这些模型 API 与众不同?


Harrison: 除了函数调用和视觉输入外,上下文窗口也是一个重要因素。因此,我认为这就涉及如果上下文变得更长,如果它发生变化,那么其他东西就会发生变化。但这并不意味着改变了你应用程序的整体架构。其他考虑因素包括不同的模式、为了安全性进行的提示注入等,我认为这些都是企业级真正关心的问题。虽然许多Agent还在探索如何有效工作,但就像切换模型一样,我认为我们确实看到了这种愿望,尤其是当你开始扩大规模时。例如,一开始你可能使用GPT-4来实现某些功能,但随着项目的推广,继续使用GPT-4可能成本过高,你可能会考虑使用GPT-3.5或进行微调。因此,我认为就是在这个过渡期,我们真正开始看到人们考虑切换模型。在一开始确实有一些模型切换,比如如果你只是想玩玩不同的模型,看看它们的能力。但我认为最迫切需要切换模型的时刻是当你从原型转向扩大规模时。成本和延迟也会是区分因素。


上下文窗口、微调和功能


Elad: 你提到的上下文窗口问题非常有意思,尤其Gemini推出的上下文窗口支持高达一百万个tokens。我只是好奇,你是如何看待上下文窗口、RAG以及模型的其他方面是如何相互关联和作用的。而且当上下文窗口扩展到数千万tokens时,这是否会根本改变现状?或者它会如何改变功能呢?既然你已经考虑过这些东西是如何组合在一起的,我很好奇你是如何看待这些不同因素及其含义的。


Harrison: 这是个好问题,而且很多比我聪明的人都在思考这个问题。我有一些看法。我认为更长的上下文窗口让一些单次处理任务变得更加可行,比如一次性处理长PDF文档中的元素提取。RAG能够处理单个或多个长PDF文档的任务,这一切都可以一步到位。当然,有些任务规模太大,无法适应单一的上下文窗口。还有些任务需要迭代处理,需要决策、与环境互动并获取反馈。因此,我不喜欢链式反应和Agent的概念,这与上下文窗口的关系不大,更多的是与环境互动并获得反馈。所以我不认为这会有什么发展。


特别是对于RAG,经常有人问,“这是不是意味着RAG的终结?”实际上,就在今天,我们团队的一名成员Lance Martin提出了一个观点,即现在每个人都在尝试解决“大海捞针”的问题,而所有模型似乎都在这方面取得了突破。但我认为这并不完全反映了RAG的实际使用场景,因为“大海捞针”更多的是在长文本中寻找单一信息点,而RAG的强项往往在于处理和推理多个信息点。因此,我认为他发布的基准正是如此。就像你增加针的数量,性能就会下降,这是你可能预料到的。当你要求它进行推理而不仅仅是检索时,性能也会下降。因此,这一领域还有待进一步探索。


另一个考虑点是RAG的数据摄取和索引过程。很多人都在关注文本分割和分块等问题,但我不知道具体会有什么变化。我们在LangChain中引入了父文档检索器的概念,它为每个文档创建多个向量。或许这就是解决方法。也许你可以将文本分割成更大的块,然后检索这些大块。也许可以使用传统的搜索引擎,比如Elasticsearch。我不确定,这可能是我最没信心的地方。


Elad: 这是微调,在某种程度上,这是因为微调会失去通用性。因此,人们开始把注意力集中在提示工程或其他方法上,以便在不进行实际微调的情况下有效地获得相同的性能。这是一个经常被提及且讨论的复杂问题。鉴于你接触了如此多样的客户,你可能有独到的视角。你是否发现微调在实际应用中广泛进行?如果是,有没有什么具体的常见应用或用例?


Harrison: 我们看到人们在尝试微调,但真正进行微调的主要是那些达到临界规模的应用,尽管我认为至今为止这样的应用并不多。微调面临诸多挑战,比如数据集的收集等。我们在LangSmith中提供的功能解决了这些问题,比如数据集的收集和策划,以及微调模型的评估。评估和测试是我们正在努力解决的一个大难题。第三个问题是,由于人们仍在迅速试验,改变微调模型比修改提示语或改变少量示例要困难得多。因此,我们看到越来越多的人使用寥寥几例的例子,而不是大量转向微调,这主要是因为迅速迭代要难得多。


人工智能开源环境的演变


Sarah: 就技术领域的其他重大变化而言,这是重要的一年。LangChain的首次投入是在 22 年 10 月,也就是我推出 Conviction基金的时候。那时,我们还没有 LLM2,没有 Mistral,也没有那么多开源模型,人们认为它们的推理能力更有用。从你看到的应用开发者使用 LangChain所做的事情来看,这种情况是否有所改变?


Elad: 别忘了Gemini。


Sarah: 对,还有Gemini。


Harrison: 这个故事很有趣。我们与 OpenAI 一起推出的原始模型实际上在一个月前就已经被弃用了。所以你无法运行最初的 LangChain,因为这些模型已经不存在了。但是,我觉得我们对开源的兴趣日益增加,但目前看来,其推理能力还是落后于Cloud 3或GPT-4。对于很多应用来说,这可能取决于你正在构建的应用类型。但是LangChain专注于推理方面的很多应用都非常关键。我不认为我们看到了超级引人注目的东西。我也不认为我们在开源模型中看到了超强的推理能力。可能这是我个人的一个见解,但对于许多LangChain应用而言,开源模型似乎还没有达到Twitter上的那种热议或期待,至少目前是这样。


Sarah: 展望未来,从你的宏观视角出发,你认为有哪些东西是当前没有人研究的,但实际上能够带来更好的应用?


Harrison: 目前,我认为最令人兴奋的是应用程序和用户体验层面。我不确定这是否更倾向于能力方面,但像记忆,特别是个性化的长期记忆是非常有趣的。我不知道这是否需要建立更多的工具,因为它就像用户体验中的一个应用程序,真正专注于此。如果我现在不是在做LangChain而是要开始一家公司,我会选择从应用层着手,而且可能会是真正利用长期记忆等优势的东西。

下一个重大突破


Elad: 在更广泛的层面上,有没有什么重大预测,或者明年会发生什么变化,而目前并未受到足够的关注?


Harrison: 我们非常关注记忆功能,并希望在这一领域实现一些突破。我认为,很多关于从交互中学习的方法,都能在用户层面上得到应用。同样,我认为这种更像系统层面的记忆也非常有趣,而且正在逐步形成持续学习的理念。也就是说,你能从你的交互经历中学到东西,而且你可以通过多种方式达到这一点。这可能只是我们在生态系统中所处的位置,但有一种方式令人兴奋,而且可能未被充分讨论。这就是建立一些示例数据集并真正使用这些数据集的想法。我认为这比微调模型要快得多,也便宜得多。这也比试图以某种方式程序化地改变提示更容易。因此,是的,利用少量实例进行持续学习也许是一个非常有趣的领域,我们对此感到非常兴奋。


Sarah: 你能否帮助我们的听众更具体地想象一下,什么样的应用体验才能实现?是消费者应用还是企业应用?


Harrison: 当然。从高层次来看,这将使应用程序随时间的推移自动变得更优好。它能变得更好的意义在于它更加准确。比方说,它一开始可能会犯错误,但是你告诉它哪里错了,它就会自动把错误作为一个例子或更新到提示中,然后从它的错误和成功中学习。有一个非常酷的项目叫做DSPy,来自斯坦福,我认为这实际上是在处理,这和LangChain、LangSmith有很多相似之处。我认为它们都是围绕优化的思想,你有输入和输出,然后有你的应用程序,同样被看作是由多个步骤组成。基本上,你可以通过各种不同的方式来优化你的应用。其中最主要的一种方式,我想说的可能是很少的实例,不过我们可能会和奥马尔一起做一个网络研讨会,如果我说错了,他可以纠正我。而持续学习的思想,本质上就是在进行这种优化,不过是以在线的方式。你可能没有确切的真相,但能从环境中得到反馈,以判断事情是否顺利进行。因此,无论是离线还是在线,这种优化循环都非常激动人心。你也可以把个性化想成是最终用户和面向消费者的应用程序的样子。从一个为每个人提供相同服务的通用应用开始,但之后它可能学会以不同的方式为我和Elad搜索网页。因此,这就是它可能的具体表现形式。


Elad: 非常感谢你能来,很荣幸你能来参加。


Harrison: 谢谢你们。


推荐新闻
RAG系列04:使用ReRank进行重排序
本文介绍了重排序的原理和两种主流的重排序方法:基于重排模型和基于 LLM。文章指出,重排序是对检索到的上下文进行再次筛选的过程,类似于排序过程中的粗排和精排。在检索增强生成中,精排的术语就叫重排序。文章还介绍了使用 Cohere 提供的在线模型、bge-reranker-base 和 bge-reranker-large 等开源模型以及 LLM 实现重排序的方法。最后,文章得出结论:使用重排模型的方法轻量级、开销较小;而使用 LLM 的方法在多个基准测试上表现良好,但成本较高,且只有在使用 ChatGPT 和 GPT-4 时表现良好,如使用其他开源模型,如 FLAN-T5 和 Vicuna-13B 时,其性能就不那么理想。因此,在实际项目中,需要做出特定的权衡。
LangGPT论文:面向大语言模型的自然语言编程框架(中文版)
大语言模型 (Large Language Models, LLMs) 在不同领域都表现出了优异的性能。然而,对于非AI专家来说,制定高质量的提示来引导 LLMs 是目前AI应用领域的一项重要挑战。
第三篇:要真正入门AI,OpenAI的官方Prompt工程指南肯定还不够,您必须了解的强大方法论和框架!!!
自从ChatGPT(全名:Chat Generative Pre-trained Transformer)于2022年11月30日发布以来,一个新兴的行业突然兴起,那就是提示工程(Prompt engineering),可谓如日冲天。从简单的文章扩写,到RAG,ChatGPT展现了前所未有的惊人能力。
(三)12个RAG痛点及其解决方案
痛点9:结构化数据QA 痛点10:从复杂 PDF 中提取数据 痛点11:后备模型 痛点12:LLM安全
(二)12个RAG痛点及其解决方案
痛点5:格式错误 痛点6:不正确的特异性 痛点7:不完整 痛点8:数据摄取可扩展性

联系我们

售前咨询
186 6662 7370
产品演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询