本教程向您展示如何基于用户反馈来优化一个分类器。分类器非常适合进行优化,因为通常收集期望输出相对简单,这使得基于用户反馈创建少量示例变得容易。这正是我们将在本示例中要做的事情。

目标

在本示例中,我们将构建一个基于 GitHub issue 标题对其进行分类的机器人。它将接收一个标题,并将其分类为多个不同类别之一。然后,我们将开始收集用户反馈,并利用它来塑造此分类器的性能。

入门

首先,我们将进行设置,以便将所有跟踪发送到一个特定的项目。我们可以通过设置一个环境变量来实现:
然后,我们可以创建我们的初始应用程序。这将是一个非常简单的函数,它仅仅接收一个 GitHub issue 标题并尝试对其进行标注。
然后我们可以开始与之交互。在交互时,我们会提前生成 LangSmith 运行 ID,并将其传递给这个函数。这样做是为了之后能够附加反馈。 以下是我们如何调用该应用程序:
以下是我们如何在之后附加反馈。我们可以收集两种形式的反馈。 首先,我们可以收集“正面”反馈 - 这适用于模型判断正确的示例。
接下来,我们可以专注于收集对应于生成“修正”的反馈。在此示例中,模型会将其分类为错误,而我实际上希望它被分类为文档。

设置自动化

我们现在可以设置自动化,将具有某种反馈的示例移动到一个数据集中。我们将设置两个自动化,一个用于正面反馈,另一个用于负面反馈。 第一个将捕获所有具有正面反馈的运行,并自动将它们添加到一个数据集中。其背后的逻辑是,任何具有正面反馈的运行都可以在未来的迭代中用作良好示例。让我们创建一个名为 classifier-github-issues 的数据集来添加这些数据。 优化负面反馈 第二个将捕获所有具有修正的运行,并使用 Webhook 将它们添加到一个数据集中。创建此 Webhook 时,我们将选择“使用修正”选项。此选项将确保在从运行创建数据集时,不使用运行的输出作为数据点的黄金标准输出,而是使用修正值。 优化正面反馈

更新应用程序

我们现在可以更新代码,以拉取我们正在发送运行数据的数据集。一旦拉取下来,我们就可以创建一个包含示例的字符串。然后,我们可以将这个字符串作为提示的一部分!
如果现在使用与之前类似的输入运行应用程序,我们可以看到它正确地学习到,任何与文档相关的内容(即使是错误)都应该被分类为 documentation。

示例的语义搜索

我们可以做的另一件事是仅使用语义最相似的示例。当您开始积累大量示例时,这很有用。 为了做到这一点,我们可以首先定义一个函数来查找最相似的 k 个示例:
然后我们可以在应用程序中使用它