DSPy 中的评估
一旦您有了初始系统,就该收集一个初始开发集,以便更系统地对其进行改进。即使是 20 个任务输入示例也很有用,而 200 个则非常有帮助。取决于您的*指标*,您可能只需要输入而完全不需要标签,或者您需要输入和系统的*最终*输出。(在 DSPy 中,您几乎从不需要程序中间步骤的标签。)您可以在 HuggingFace 数据集或 StackExchange 等自然产生的来源中找到与您的任务相邻的数据集。如果数据的许可足够宽松,我们建议您使用它们。否则,您可以手动标记几个示例,或者开始部署您的系统演示版并以这种方式收集初始数据。
接下来,您应该定义您的 DSPy 指标。是什么让您系统的输出是好的还是坏的?投入精力定义指标并随着时间推移逐步改进它们;很难持续改进您无法定义的东西。指标是一个函数,它接受您的数据示例和系统的输出,并返回一个分数。对于简单的任务,这可能只是“准确率”,例如简单的分类或短格式问答任务。对于大多数应用程序,您的系统会生成长格式输出,因此您的指标将是一个更小的 DSPy 程序,用于检查输出的多个属性。第一次就做到这一点不太可能:从简单的东西开始,然后迭代改进。
现在您已经有了一些数据和指标,请对您的管道设计进行开发评估,以了解它们的权衡取舍。查看输出和指标得分。这可能会让您发现任何主要问题,并为您将来的步骤设定基线。
如果您的指标本身就是一个 DSPy 程序...
如果您的指标本身就是一个 DSPy 程序,一个强大的迭代方法是优化您自己的指标。这通常很容易,因为指标的输出通常是一个简单的值(例如,满分 5 分中的得分),因此通过收集几个示例可以轻松定义和优化指标的指标。