部署您的应用程序只是持续改进流程的开始。在部署到生产环境后,您会希望通过增强提示词、语言模型、工具和架构来优化您的系统。回溯测试涉及使用历史数据评估应用程序的新版本,并将新输出与原始输出进行比较。与使用预发布数据集进行的评估相比,回溯测试能更清晰地表明应用程序的新版本是否比当前部署的版本有所改进。 以下是回溯测试的基本步骤:
  1. 从您的生产追踪项目中选择样本运行记录进行测试。
  2. 将运行输入转换为一个数据集,并将运行输出记录为针对该数据集的初始实验。
  3. 在新数据集上执行您的新系统,并比较实验的结果。
这个过程将为您提供一个包含代表性输入的新数据集,您可以对其进行版本控制,并用于回溯测试您的模型。
通常,您不会有明确的“标准答案”可用。在这种情况下,您可以手动标注输出结果,或使用不依赖参考数据的评估器。如果您的应用程序允许获取真实标签(例如,允许用户提供反馈),我们强烈建议您这样做。

设置

配置环境

安装并设置环境变量。本指南要求 langsmith>=0.2.4。
为方便起见,本教程将使用 LangChain OSS 框架,但所示的 LangSmith 功能与具体框架无关。

定义应用程序

对于此示例,让我们创建一个简单的推文写作应用程序,该程序可以访问一些互联网搜索工具:

模拟生产数据

现在让我们模拟一些生产数据:

将生产追踪记录转换为实验

第一步是基于生产输入生成一个数据集。然后复制所有追踪记录作为基线实验。

选择要进行回溯测试的运行记录

您可以使用 list_runs 的 filter 参数来选择要进行回溯测试的运行记录。filter 参数使用 LangSmith 追踪查询语法 来选择运行记录。

将运行记录转换为实验

convert_runs_to_test 是一个函数,它接受一些运行记录并执行以下操作:
  1. 输入,以及可选的输出,作为示例保存到一个数据集中。
  2. 输入和输出作为一个实验存储起来,就像您运行了 evaluate 函数并获得了这些输出一样。
此步骤完成后,您应该在 LangSmith 项目中看到一个名为“Tweet Writing Task-backtesting TODAYS DATE”的新数据集,并包含一个如下所示的实验: 基线实验

与新系统进行基准测试

现在我们可以开始将我们的生产运行记录与一个新系统进行基准测试的过程。

定义评估器

首先,让我们定义用于比较两个系统的评估器。请注意,我们没有参考输出,因此我们需要制定仅需要实际输出的评估指标。

评估基线

现在,让我们针对基线实验运行我们的评估器。

定义并评估新系统

现在,让我们定义并评估我们的新系统。在这个例子中,我们的新系统将与旧系统相同,但使用 GPT-4o 而不是 GPT-3.5。由于我们已将模型设置为可配置,我们可以只更新传递给智能体的默认配置:

比较结果

运行两个实验后,您可以在数据集中查看它们: 数据集页面 结果揭示了两个模型之间一个有趣的权衡:
  1. GPT-4o 在遵守格式规则方面表现更好,始终包含所要求数量的表情符号。
  2. 然而,GPT-4o 在基于提供的搜索结果方面不太可靠。
为了说明基于上下文的问题:在这个示例运行中,GPT-4o 包含了关于阿布·巴克尔·穆罕默德·伊本·扎卡里亚·拉齐的医学贡献的事实,而这些事实在搜索结果中并不存在。这表明它在从其内部知识中提取信息,而不是严格使用提供的信息。 这次回溯测试练习揭示,虽然 GPT-4o 通常被认为是一个更强大的模型,但简单地升级到它并不能改进我们的推文编写器。要有效地使用 GPT-4o,我们需要:
  • 优化我们的提示词,更加强调仅使用提供的信息
  • 或者修改我们的系统架构,以更好地约束模型的输出
这一见解展示了回溯测试的价值——它帮助我们在部署前识别潜在问题。 教程比较视图