filterRun()
透過宣告式選項建立 prepareRun 函式。將結果傳遞至 createScorer(),即可篩選訊息及限制上下文大小。此函式亦會在評分器管線執行前移除不必要的欄位。
如需宣告式篩選,請使用 filterRun()。如需要 filterRun() 未涵蓋的命令式邏輯,請直接編寫自訂 prepareRun 函式。詳情請參閱自訂評分器:輸入篩選。
使用範例使用範例 的直接連結
以下範例建立一個評分器,只會接收 Tool 調用及文字訊息,並將上下文限制為最近 20 則訊息:
src/mastra/scorers/tool-scorer.ts
import { createScorer, filterRun } from '@mastra/core/evals'
const toolScorer = createScorer({
id: 'tool-usage',
description: 'Evaluates tool usage patterns',
type: 'agent',
prepareRun: filterRun({
partTypes: ['tool-invocation', 'text'],
maxRememberedMessages: 20,
}),
}).generateScore(({ run }) => {
// run.input.rememberedMessages contains only tool and text messages
// run.output contains only tool and text messages
return 1
})
按 Tool 名稱篩選按 Tool 名稱篩選 的直接連結
只保留涉及指定 Tool 的訊息:
import { createScorer, filterRun } from '@mastra/core/evals'
const fileEditScorer = createScorer({
id: 'file-edit-quality',
description: 'Evaluates file editing patterns',
type: 'agent',
prepareRun: filterRun({
toolNames: ['write_file', 'string_replace_lsp', 'view'],
}),
}).generateScore(({ run }) => {
// Only messages with these tool calls remain
return 1
})
移除欄位移除欄位 的直接連結
移除評分器不需要的欄位:
import { createScorer, filterRun } from '@mastra/core/evals'
const simpleScorer = createScorer({
id: 'response-length',
description: 'Checks response length',
type: 'agent',
prepareRun: filterRun({
dropRequestContext: true,
dropExpectedTrajectory: true,
dropGroundTruth: true,
maxOutputMessages: 5,
}),
}).generateScore(({ run }) => {
return run.output.length > 0 ? 1 : 0
})
參數參數 的直接連結
options:
FilterRunOptions
控制評分器接收哪些資料的設定物件。
object
partTypes?:
MastraPartType[]
只保留組件符合這些類型的訊息。每個項目會以訊息組件的類型作前綴比對。除非明確排除,否則純文字訊息(不含 Tool 調用)一律保留。系統訊息及帶標籤的系統訊息絕不會被篩選。
toolNames?:
string[]
只保留這些指定 Tool 的 Tool 調用訊息。每個項目會以 Tool 名稱作前綴比對。不含 Tool 的訊息(文字、資料)不受影響。
maxRememberedMessages?:
number
在記憶訊息(上下文)中保留的訊息數目上限。從末端(最近的訊息)開始選取。在類型及 Tool 篩選後套用。
maxOutputMessages?:
number
在輸出中保留的訊息數目上限。從末端開始選取。在類型及 Tool 篩選後套用。
dropRequestContext?:
boolean
從執行中完全移除請求上下文。
dropExpectedTrajectory?:
boolean
從執行中移除預期軌跡。
dropGroundTruth?:
boolean
從執行中移除標準答案。
傳回值: (run: ScorerRun) => ScorerRun。適用於 createScorer() 的 prepareRun 選項的函式。
組件類型組件類型 的直接連結
partTypes 選項接受 MastraPartType 值。每個值都會作前綴比對,因此 'data-' 會符合所有資料組件類型。
| 類型 | 說明 |
|---|---|
'text' | 文字內容組件 |
'tool-invocation' | Tool 調用及結果組件 |
'reasoning' | 思維鏈推理組件 |
'step-start' | 步驟標記組件 |
'image' | 圖像組件 |
'file' | 檔案組件 |
'source' | 來源參考組件 |
'source-document' | 來源文件組件 |
'data-' | 所有資料組件(符合任何 data-* 前綴) |
'data-om-' | 觀察記憶資料組件 |
'data-workspace-' | Workspace 資料組件 |
'data-sandbox-' | Sandbox 資料組件 |
'data-tool-' | Tool 相關資料組件 |
篩選行為篩選行為 的直接連結
- 當
input.rememberedMessages及output包含 Agent 訊息陣列時,組件類型篩選會套用至兩者。 - Tool 名稱篩選只會影響包含 Tool 調用的訊息。純文字訊息會直接通過。
- 無論
partTypes或toolNames為何,系統訊息(systemMessages、taggedSystemMessages)絕不會被篩選。 - 訊息限制(
maxRememberedMessages、maxOutputMessages)會在類型及 Tool 篩選後套用,並選取最近的訊息。 - 同時設定
partTypes及toolNames時,訊息必須符合兩項篩選條件才會保留。