跳到主要内容

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 无法进行静态合并。

键冲突时,优先级如下:

  1. 值为函数的 config.scorers
  2. 值为记录对象的 config.scorers
  3. scorers/ 下发现的文件

Mastra 会保留键不冲突的已发现 Scorer。

有关完整的 Scorer 接口,请查看 createScorer()