Skip to content

DSPy中的评估

一旦你有了初始系统,就该收集初始开发集以便更系统地进行优化。即使只有20个任务输入示例也可能很有用,当然200个会更好。根据你的指标,你可能只需要输入而不需要标签,或者需要输入和系统的最终输出。(在DSPy中,你几乎从不需要为程序的中间步骤提供标签。)你或许可以在HuggingFace数据集或像StackExchange这样的自然来源中找到与你的任务相关的数据集。如果有许可证足够宽松的数据,我们建议你使用它们。否则,你可以手动标注一些示例,或者开始部署系统的演示版本来收集初始数据。

接下来,你应该定义你的DSPy指标。什么因素决定了你系统输出的好坏?投入时间定义指标并逐步改进它们;很难持续改进你无法定义的东西。指标是一个函数,它接收来自你的数据的示例和系统的输出,并返回一个分数。对于简单任务,这可能只是"准确率",例如简单的分类或短问答任务。对于大多数应用,你的系统会产生长格式输出,因此你的指标将是一个较小的DSPy程序,用于检查输出的多个属性。第一次就做到完美不太可能:从简单的开始,然后迭代改进。

既然你已经有了一些数据和评估指标,接下来对流水线设计进行开发评估,以理解它们的权衡取舍。查看输出结果和指标得分。这很可能让你发现任何重大问题,并为后续步骤设定一个基准线。

如果你的评估指标本身就是一个DSPy程序...

如果你的评估指标本身是一个DSPy程序,一种强大的迭代方式是优化你的评估指标本身。这通常很容易,因为评估指标的输出通常是一个简单值(例如,5分制得分),因此通过收集几个示例,评估指标的评估标准很容易定义和优化。