필터실행()
생성prepareRun선언적 옵션에서 함수를 실행합니다. 결과를 다음으로 전달합니다.createScorer()메시지를 필터링하고 컨텍스트 크기를 제한합니다. 또한 채점자 파이프라인이 실행되기 전에 불필요한 필드를 삭제합니다.
선언적 필터링에는 filterRun()을 사용하세요. filterRun()이 지원하지 않는 명령형 로직이 필요하면 사용자 정의 prepareRun 함수를 직접 작성하세요. 자세한 내용은 사용자 정의 채점기: 입력 필터링을 참조하세요.
사용예사용예에 대한 직접 링크
다음 예에서는 가장 최근의 컨텍스트 메시지 20개로 제한되는 Tool 호출과 텍스트 메시지만 보는 채점기를 생성합니다.
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-' | 관찰 Memory 데이터 부분 |
'data-workspace-' | Workspace 데이터 부분 |
'data-sandbox-' | Sandbox 데이터 부분 |
'data-tool-' | Tool 관련 데이터 부분 |
필터링 동작필터링 동작에 대한 직접 링크
- 부분 타입 필터링은 Agent 메시지 배열이 포함된 경우
input.rememberedMessages와output모두에 적용됩니다. - Tool 이름 필터링은 Tool 호출이 포함된 메시지에만 영향을 미칩니다. 텍스트 전용 메시지는 그대로 전달됩니다.
- 시스템 메시지(
systemMessages,taggedSystemMessages)는partTypes또는toolNames와 관계없이 필터링되지 않습니다. - 메시지 제한(
maxRememberedMessages,maxOutputMessages)은 타입 및 Tool 필터링 후에 적용되며 가장 최근 메시지를 가져옵니다. partTypes와toolNames를 모두 설정하면 메시지가 두 필터를 모두 충족해야 유지됩니다.