本文经翻译并二次整理自Using Feedback to Improve Your Application: Self Learning GPTs一文。讲述了基于反馈的GPT自学进化的基础理念,以及基于LangSmith的实践与实操。本系列合集,点击链接查看

基于反馈的GPT自学进化-应用实战_应用程序

我们打造了一个名为Self Learning GPTs 的演示应用,展示了如何通过用户反馈让应用程序不断学习和进步。这个应用利用 LangSmith 技术来搜集用户的点赞或点踩等反馈,并将这些反馈自动转化为改进措施,通过生成少量的示例来优化聊天机器人的对话流程。

关键链接:

  • 您可以通过这里体验这个应用。
  • 想要深入了解其工作原理,可以观看这个 YouTube 视频
  • 我们即将举办一场关于“LLM 系统优化”的网络研讨会,由 DSPy 的 Omar Khattab 主讲,点击这里报名参加。
  • 如果您对“LangSmith Automations”这项技术感兴趣,想要提前体验,请点击这里

从反馈中学习

基于反馈的GPT自学进化-应用实战_Self_02

从反馈中学习是构建 LLM 系统的核心环节。例如,风靡全球的 ChatGPT 就是通过人类反馈的强化学习(RLHF)(RLHF) 来调整模型,使其成为一个通用的聊天机器人。Midjourney 之所以能够不断进步,很大程度上也是得益于它所建立的反馈循环机制。

从反馈中学习的基本原理很直观。如果你能够收集到关于模型预测表现的反馈,无论是什么形式,你就可以根据这些反馈来优化模型,使其产生更多类似的、更好的结果。如果你能够持续地进行这一过程,你的模型就能够随着时间的推移不断地学习和提升。虽然完全自动化的持续学习可能还未完全实现,但大多数专家都认同收集反馈的重要性。

LangSmith 中的反馈应用

基于反馈的GPT自学进化-应用实战_Self_03

自 LangSmith 发布以来,我们一直致力于简化收集和追踪反馈的过程。我们提供了程序化的方式,让用户可以轻松地将反馈(如点赞或点踩)附加到运行记录上。我们还增加了人工注释队列,让审核者可以手动为运行结果添加反馈。此外,我们还引入了过滤功能,使用户能够筛选出具有特定反馈的运行结果,并提供了监控功能,以便用户能够轻松地跟踪随时间累积的反馈情况。

尽管如此,到目前为止,我们还没有提供太多工具或资源,帮助用户将这些反馈重新整合到应用程序中。我们正在添加一些新功能(目前仍处于测试阶段,将持续数周),这些功能将为 Self Learning GPTs 提供支持,并实现这一目标。

Self Learning GPTs 的工作原理

Self Learning GPTs 的工作机制相对简单,它结合了 LangSmith 的多种功能。

首先,我们使用 LangSmith 来追踪所有的运行过程。这样我们就可以获得聊天机器人对话回合的完整记录。重要的是,这不仅仅是记录 LLM 的调用,而是整个对话的完整追踪。我们将在后续详细讨论这一点的重要性。在此过程中,我们记录了生成该运行的助手的 UUID。

其次,我们捕获了以点赞/点踩形式的反馈,并将其记录到 LangSmith 中。我们将其与相应的追踪记录关联起来。

第三,我们利用 LangSmith 的新功能,自动将追踪中的数据移动到专门为该助手创建的数据集中。这个过程包括:

  • 创建一个过滤器。我们希望获取所有获得正面反馈(点赞)的运行记录。
  • 选择一个数据集。我们在追踪中记录了助手的 UUID,因此我们可以根据这个 UUID 将数据移动到专门为该助手创建的数据集中。这样做很重要,因为每个助手都可以建立自己的数据集,我们期望它们能够学习特定的东西。

最后,我们使用 LangSmith SDK 在运行时下载这个数据集,并在提示中使用这些示例作为少量示例。

LangSmith 自动化

这个新功能的核心是自动化,它允许你根据特定的过滤器和采样率自动将运行结果(转移到数据集或注释队列)。我们将在几周内向所有用户推出这项功能。如果您对提前体验感兴趣,请点击这里进行注册。

重要性

我们展示这一功能的原因有两个。

首先,这是一个可靠的方法,可以自动构建优秀示例的数据集。在与开发 LLM 应用程序的团队交流时,我们发现他们通常缺乏好的输入/输出对的数据集。他们通常是在收集反馈后,再手动转移到数据集中。这个过程的自动化使得任何人都能够轻松完成这一任务。

其次,将这些反馈作为少量示例纳入应用程序,是一种经济实惠且实用的方式来利用反馈来改进你的应用程序。以前,我们收集反馈主要是为了帮助我们发现需要关注的数据点。而现在,我们可以通过这种方式更具体地应用这些反馈。

请注意,这并不是使用这些数据点的唯一方法。您还可以将它们用作测试集来进行回归测试,或者用来微调模型。您还可以进行少量示例的动态选择,或者以类似 DSPy 的方式使用这些示例来优化您的 LLM 系统。

LLM 系统的优化

DSPy 是一个用于算法优化 LLM 提示和权重的框架。我们与 Omar 深入讨论了 LLM 系统的优化,并与他们进行了初步集成。我们从 DSPy 中的许多想法中汲取灵感,创建了这个示例。

基于反馈的GPT自学进化-应用实战_应用程序_04

实际上,DSPy 和 LangChain 之间有很多相似之处。两者都处理 LLM 系统的优化,而不仅仅是单个 LLM 调用。这方面的一个关键组成部分是 跟踪,这是 DSPy 和 LangChain 都强调的一个概念。跟踪支持 DSPy 所做的许多优化,而在 LangSmith 中,我们也强调了这一点。

跟踪整个系统尤其重要,因为你通常会在系统级别收集反馈,但系统内部可能有许多不同的 LLM 调用,你想要优化它们。因此,你需要一种方法将高级反馈与低级 LLM 调用关联起来。这就是为什么需要优秀的跟踪 - 这是我们一直在 LangChain 和 LangSmith 中强调的。

当前的 Self Optimizing GPTs 没有达到 DSPy 的水平。我们只是策划了一个少量示例数据集,我们并没有尝试优化选择哪些示例是最好的。这很容易成为下一步。我们之所以止步于此,仅仅是因为我们相信创建这个数据集本身就已经非常有帮助了,而大多数公司甚至都在努力做到这一点。

我们非常兴奋地探索未来的更高级优化理念。我们将在几周后与 Omar 一起举办有关“LLM 系统优化”的网络研讨会 - 应该会很有趣。在这里注册