メインコンテンツへ移動

filterRun()

宣言的なオプションから prepareRun 関数を作成します。結果を createScorer() に渡すことで、メッセージをフィルタリングし、コンテキストサイズを制限できます。また、スコアラーのパイプラインを実行する前に不要なフィールドを削除します。

宣言的なフィルタリングには filterRun() を使用します。カスタム prepareRun 関数は、filterRun() では対応できない命令的なロジックが必要な場合に直接記述してください。詳しくはカスタムスコアラー:入力のフィルタリングを参照してください。

使用例
使用例への直接リンク

次の例では、ツール呼び出しとテキストメッセージだけを参照し、直近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
})

ツール名でフィルタリング
ツール名でフィルタリングへの直接リンク

特定のツールに関係するメッセージだけを残します。

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[]
パートがこれらの型に一致するメッセージだけを残します。各項目はメッセージパートの型に対して前方一致します。プレーンテキストメッセージ(ツール呼び出しなし)は、明示的に除外されない限り常に残ります。システムメッセージとタグ付きシステムメッセージはフィルタリングされません。

toolNames?:

string[]
指定したツールのツール呼び出しメッセージだけを残します。各項目はツール名に対して前方一致します。ツール以外のメッセージ(テキスト、データ)には影響しません。

maxRememberedMessages?:

number
記憶されたメッセージ(コンテキスト)に残すメッセージの最大数。末尾(最新)から取得します。型とツールによるフィルタリング後に適用されます。

maxOutputMessages?:

number
出力に残すメッセージの最大数。末尾から取得します。型とツールによるフィルタリング後に適用されます。

dropRequestContext?:

boolean
run からリクエストコンテキストを完全に削除します。

dropExpectedTrajectory?:

boolean
run から期待される軌跡を削除します。

dropGroundTruth?:

boolean
run から正解データを削除します。

戻り値: (run: ScorerRun) => ScorerRunprepareRun オプションとして createScorer() に渡せる関数です。

パートの型
パートの型への直接リンク

partTypes オプションは MastraPartType の値を受け取ります。各値は前方一致するため、'data-' はすべてのデータパート型に一致します。

説明
'text'テキストコンテンツのパート
'tool-invocation'ツール呼び出しと結果のパート
'reasoning'思考過程の推論パート
'step-start'ステップマーカーのパート
'image'画像パート
'file'ファイルパート
'source'ソース参照パート
'source-document'ソースドキュメントのパート
'data-'すべてのデータパート(任意の data-* プレフィックスに一致)
'data-om-'Observational Memory のデータパート
'data-workspace-'Workspace のデータパート
'data-sandbox-'Sandbox のデータパート
'data-tool-'ツール関連のデータパート

フィルタリングの動作
フィルタリングの動作への直接リンク

  • パート型のフィルタリングは、input.rememberedMessagesoutput に Agent メッセージ配列が含まれる場合、その両方に適用されます。
  • ツール名のフィルタリングは、ツール呼び出しを含むメッセージだけに影響します。テキストのみのメッセージはそのまま通過します。
  • システムメッセージsystemMessagestaggedSystemMessages)は、partTypestoolNames にかかわらずフィルタリングされません。
  • メッセージ数の制限maxRememberedMessagesmaxOutputMessages)は型とツールによるフィルタリング後に適用され、最新のメッセージを取得します。
  • partTypestoolNames の両方を設定した場合、メッセージを残すには両方のフィルターを満たす必要があります。