Scorers
File-based Agent 从自身的 scorers/ 目录发现 Scorer。本页介绍基于文件的约定;有关内置 Scorer、自定义 Scorer 和采样,请参阅 Scorer 指南。
scorers/ 下的每个文件默认导出一个 Scorer,文件名则成为其键。默认导出可以是 MastraScorer,也可以是 { scorer, sampling } 条目。
快速开始快速开始的直接链接
将文件放在 Agent 的 scorers/ 目录下,即可添加 Scorer。此示例使用自定义 Scorer:
src/mastra/agents/weather/scorers/relevance.ts
import { createScorer } from '@mastra/core/evals'
export default createScorer({
id: 'relevance',
description: 'Scores how relevant the response is',
}).generateScore(() => 1)
该 Scorer 会以 relevance 键注册到 weather Agent 上,效果与将其添加到 config.scorers 相同。
采样采样的直接链接
要控制 Scorer 的运行频率,请默认导出 { scorer, sampling } 条目,而不是直接导出 Scorer:
src/mastra/agents/weather/scorers/relevance.ts
import { createScorer } from '@mastra/core/evals'
const relevance = createScorer({
id: 'relevance',
description: 'Scores how relevant the response is',
}).generateScore(() => 1)
export default {
scorer: relevance,
sampling: { type: 'ratio', rate: 0.5 },
}
与 config 的优先级与 config 的优先级的直接链接
发现的 Scorer 会与 config.ts 中定义的 Scorer 合并。如果键冲突,config.scorers 优先,并会发出警告。如果 config.scorers 是函数,Mastra 会忽略发现的 Scorer 并发出警告,因为值为函数的 Scorer 无法进行静态合并。
键冲突时,优先级如下:
- 值为函数的
config.scorers - 值为记录对象的
config.scorers - 在
scorers/下发现的文件
Mastra 会保留键不冲突的已发现 Scorer。
有关完整的 Scorer 接口,请查看 createScorer()。