> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # 필터실행() 생성`prepareRun`선언적 옵션에서 함수를 실행합니다. 결과를 다음으로 전달합니다.`createScorer()`메시지를 필터링하고 컨텍스트 크기를 제한합니다. 또한 채점자 파이프라인이 실행되기 전에 불필요한 필드를 삭제합니다. 선언적 필터링에는 [`filterRun()`](#usage-example)을 사용하세요. `filterRun()`이 지원하지 않는 명령형 로직이 필요하면 사용자 정의 `prepareRun` 함수를 직접 작성하세요. 자세한 내용은 [사용자 정의 채점기: 입력 필터링](https://mastra.zisheng.pro/ko/docs/evals/custom-scorers)을 참조하세요. ## 사용예 다음 예에서는 가장 최근의 컨텍스트 메시지 20개로 제한되는 Tool 호출과 텍스트 메시지만 보는 채점기를 생성합니다. ```typescript 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와 관련된 메시지만 보관하세요. ```typescript 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 }) ``` ### 필드 삭제 채점자에게 필요하지 않은 필드를 제거하세요. ```typescript 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`): 채점기가 수신하는 데이터를 제어하는 구성 객체입니다. **options.partTypes** (`MastraPartType[]`): 부분이 이러한 타입과 일치하는 메시지만 유지합니다. 각 항목은 메시지 부분의 타입과 접두사 일치 방식으로 비교됩니다. 일반 텍스트 메시지(Tool 호출 없음)는 명시적으로 제외하지 않는 한 항상 유지됩니다. 시스템 메시지와 태그가 지정된 시스템 메시지는 필터링되지 않습니다. **options.toolNames** (`string[]`): 지정된 Tool에 대한 Tool 호출 메시지만 유지합니다. 각 항목은 Tool 이름과 접두사 일치 방식으로 비교됩니다. Tool과 관련 없는 메시지(텍스트, 데이터)는 영향을 받지 않습니다. **options.maxRememberedMessages** (`number`): 기억된 메시지(컨텍스트)에 유지할 최대 메시지 수입니다. 끝에서부터(가장 최근 메시지부터) 가져옵니다. 타입 및 Tool 필터링 후에 적용됩니다. **options.maxOutputMessages** (`number`): 출력에 유지할 최대 메시지 수입니다. 끝에서부터 가져옵니다. 타입 및 Tool 필터링 후에 적용됩니다. **options.dropRequestContext** (`boolean`): 실행에서 요청 컨텍스트를 완전히 제거합니다. **options.dropExpectedTrajectory** (`boolean`): 실행에서 예상 궤적을 제거합니다. **options.dropGroundTruth** (`boolean`): 실행에서 정답 데이터를 제거합니다. **반환값:** `(run: ScorerRun) => ScorerRun`. [`createScorer()`](https://mastra.zisheng.pro/ko/reference/evals/create-scorer)의 `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`를 모두 설정하면 메시지가 두 필터를 모두 충족해야 유지됩니다.