본문으로 건너뛰기

루브릭 채점자

추가된 항목: @mastra/evals@1.3.0

createRubricScorer() 함수는 루브릭(기준 체크리스트)에 따라 Agent의 출력을 평가하는 LLM-as-judge 채점기를 생성합니다. 이 함수는 이진 점수를 반환합니다. 모든 필수 기준을 충족한 경우에만 1을 반환하고, 그렇지 않으면 0을 반환합니다. reason에는 각 기준의 결과가 나열되므로 Agent가 수정해야 할 사항을 정확히 파악할 수 있습니다. 이 채점기는 isTaskComplete와 함께 사용하도록 설계되었습니다. isTaskCompletescore === 1을 "작업 완료"로 간주하고 reason을 피드백으로 대화에 다시 삽입하므로, Agent는 루브릭을 충족하거나 maxSteps에 도달할 때까지 계속 반복합니다.

매개변수
매개변수에 대한 직접 링크

model:

MastraModelConfig
루브릭에 따라 출력을 평가하는 데 사용하는 언어 Model입니다. 일반적으로 평가에는 더 작고 저렴한 Model로도 충분합니다.

criteria:

RubricCriterion[] | string
평가에 사용할 루브릭입니다. 문자열은 줄바꿈으로 구분된 체크리스트로 처리됩니다(각 줄이 필수 기준이 됨). 생략하면 런타임에 요청/추가 컨텍스트의 rubric 값에서 루브릭을 읽습니다. 어떤 값도 확인되지 않으면 채점기는 아무 작업도 하지 않고 1을 반환합니다.

options:

RubricScorerOptions
채점기 구성 옵션

.run()보고
run-returns에 대한 직접 링크

score:

number
모든 필수 기준이 충족되면 1, 그렇지 않으면 0입니다(scale을 곱함).

reason:

string
각 기준의 충족 여부와 그 이유를 나열하는 기준별 설명입니다. isTaskComplete가 피드백으로 대화에 다시 삽입하는 텍스트입니다.

isTaskComplete와 함께 사용
isTaskComplete와 함께 사용에 대한 직접 링크

루브릭을 한 번 정의하고 채점기를 isTaskComplete에 연결하면 Agent가 루브릭을 충족할 때까지 스스로 수정합니다.

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.)가 제거됩니다. 각 줄은 필수 기준이 됩니다.

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`,
})

선택적 기준
선택적 기준에 대한 직접 링크

게이팅 완료 없이 등급을 매기고 보고하려면 기준을 선택 사항으로 표시합니다.

const rubricScorer = createRubricScorer({
model: 'openai/gpt-5-mini',
criteria: [
{ description: 'Includes an analysis section', required: true },
{ description: 'Includes citations', required: false },
],
})

실행당 동적 루브릭
실행당 동적 루브릭에 대한 직접 링크

팩터리에 criteria를 전달하지 않으면 채점기는 실행의 요청 컨텍스트, 추가 컨텍스트 또는 입력에서 rubric 값을 확인합니다. 따라서 채점기를 다시 만들지 않고도 하나의 채점기 인스턴스로 실행마다 서로 다른 루브릭을 평가할 수 있습니다.

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에 구체적이고 유용한 피드백을 제공합니다.