> Discover all available pages from the documentation index: https://mastra.zisheng.pro/ko/llms.txt # 루브릭 채점자 **추가된 항목:** `@mastra/evals@1.3.0` `createRubricScorer()` 함수는 루브릭(기준 체크리스트)에 따라 Agent의 출력을 평가하는 LLM-as-judge 채점기를 생성합니다. 이 함수는 **이진** 점수를 반환합니다. 모든 필수 기준을 충족한 경우에만 `1`을 반환하고, 그렇지 않으면 `0`을 반환합니다. `reason`에는 각 기준의 결과가 나열되므로 Agent가 수정해야 할 사항을 정확히 파악할 수 있습니다. 이 채점기는 [`isTaskComplete`](https://mastra.zisheng.pro/ko/reference/streaming/agents/stream)와 함께 사용하도록 설계되었습니다. `isTaskComplete`는 `score === 1`을 "작업 완료"로 간주하고 `reason`을 피드백으로 대화에 다시 삽입하므로, Agent는 루브릭을 충족하거나 `maxSteps`에 도달할 때까지 계속 반복합니다. ## 매개변수 **model** (`MastraModelConfig`): 루브릭에 따라 출력을 평가하는 데 사용하는 언어 Model입니다. 일반적으로 평가에는 더 작고 저렴한 Model로도 충분합니다. **criteria** (`RubricCriterion[] | string`): 평가에 사용할 루브릭입니다. 문자열은 줄바꿈으로 구분된 체크리스트로 처리됩니다(각 줄이 필수 기준이 됨). 생략하면 런타임에 요청/추가 컨텍스트의 rubric 값에서 루브릭을 읽습니다. 어떤 값도 확인되지 않으면 채점기는 아무 작업도 하지 않고 1을 반환합니다. **options** (`RubricScorerOptions`): 채점기 구성 옵션 ## `.run()`보고 **score** (`number`): 모든 필수 기준이 충족되면 1, 그렇지 않으면 0입니다(scale을 곱함). **reason** (`string`): 각 기준의 충족 여부와 그 이유를 나열하는 기준별 설명입니다. isTaskComplete가 피드백으로 대화에 다시 삽입하는 텍스트입니다. ## isTaskComplete와 함께 사용 루브릭을 한 번 정의하고 채점기를 `isTaskComplete`에 연결하면 Agent가 루브릭을 충족할 때까지 스스로 수정합니다. ```typescript import { Agent } from '@mastra/core/agent' import { createRubricScorer } from '@mastra/evals/scorers/prebuilt' const supervisor = new Agent({ id: 'supervisor', instructions: `You coordinate research and writing using specialized agents. Delegate to research-agent for facts, then writing-agent for content.`, model: 'openai/gpt-5.6-sol', agents: { researchAgent, writingAgent }, }) const rubricScorer = createRubricScorer({ model: 'openai/gpt-5-mini', criteria: [ { description: 'The response includes an analysis section' }, { description: 'The response includes concrete recommendations' }, ], }) const stream = await supervisor.stream('Research AI in education', { maxSteps: 10, isTaskComplete: { scorers: [rubricScorer], strategy: 'all', }, }) ``` ## 문자열 루브릭 줄바꿈으로 구분된 문자열에서는 일반적인 목록 마커(`-`, `*`, `1.`)가 제거됩니다. 각 줄은 필수 기준이 됩니다. ```typescript const rubricScorer = createRubricScorer({ model: 'openai/gpt-5-mini', criteria: `- All tests pass in the test suite - The function is named find_duplicates and accepts a single list argument`, }) ``` ## 선택적 기준 게이팅 완료 없이 등급을 매기고 보고하려면 기준을 선택 사항으로 표시합니다. ```typescript const rubricScorer = createRubricScorer({ model: 'openai/gpt-5-mini', criteria: [ { description: 'Includes an analysis section', required: true }, { description: 'Includes citations', required: false }, ], }) ``` ## 실행당 동적 루브릭 팩터리에 `criteria`를 전달하지 않으면 채점기는 실행의 요청 컨텍스트, 추가 컨텍스트 또는 입력에서 `rubric` 값을 확인합니다. 따라서 채점기를 다시 만들지 않고도 하나의 채점기 인스턴스로 실행마다 서로 다른 루브릭을 평가할 수 있습니다. ```typescript const rubricScorer = createRubricScorer({ model: 'openai/gpt-5-mini', }) await supervisor.stream('Write find_duplicates', { isTaskComplete: { scorers: [rubricScorer] }, requestContext: { rubric: '- All tests pass\n- The function is named find_duplicates', }, }) ``` 루브릭을 확인할 수 없으면 채점기는 `1`을 반환하며 루프를 제한하지 않습니다. ## 채점 세부정보 득점원은 두 단계로 진행됩니다. 1. **평가**: 판정 Model은 각 기준을 독립적으로 평가하고 근거와 함께 기준별 평결(`satisfied` 여부)을 반환합니다. 2. **점수**: 모든 필수 기준이 `satisfied`인 경우에만 결과가 `1`이고, 그렇지 않으면 `0`입니다. 필수로 표시된 기준이 없으면 모든 기준을 필수로 처리합니다. `reason`은 결과를 요약하고 각 기준과 평결을 나열하므로, 평가에 실패하면 일반적인 "다시 시도하세요" 대신 Agent에 구체적이고 유용한 피드백을 제공합니다. ## 관련된 - [스트림()의 isTaskComplete](https://mastra.zisheng.pro/ko/reference/streaming/agents/stream) - [감독 Agent](https://mastra.zisheng.pro/ko/docs/capabilities/subagents) - [createScorer](https://mastra.zisheng.pro/ko/reference/evals/create-scorer)