> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-HK/llms.txt # 評分準則評分器 **新增於:** `@mastra/evals@1.3.0` `createRubricScorer()` 函式會建立一個以 LLM 擔任評審的評分器,根據評分準則(準則清單)評定 Agent 的輸出。它會傳回**二元**分數:只有所有必須符合的準則均獲滿足時才傳回 `1`,否則傳回 `0`。`reason` 會列出每項準則的判定,讓 Agent 清楚知道需要修正甚麼。 此評分器設計為直接用於 [`isTaskComplete`](https://mastra.zisheng.pro/zh-HK/reference/streaming/agents/stream)。由於 `isTaskComplete` 會將 `score === 1` 視為「任務完成」,並把 `reason` 作為意見注入對話,Agent 會持續反覆修正,直至符合評分準則(或達到 `maxSteps`)。 ## 參數 **model** (`MastraModelConfig`): 用於根據評分準則評定輸出的語言模型。一般而言,較小型、成本較低的模型已足以進行評分。 **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 }, ], }) ``` ## 每次執行使用動態評分準則 如未向 factory 傳入 `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. **評定**:評審模型會獨立評估每項準則,並傳回每項準則的判定(`satisfied`/不滿足)及理由。 2. **評分**:只有所有必須符合的準則均為 `satisfied` 時,結果才是 `1`,否則為 `0`。如沒有準則標記為必須符合,所有準則均會視為必須符合。 `reason` 會總結結果,並列出每項準則及其判定。因此,評定不合格時,Agent 會收到具針對性且實用的意見,而非籠統的「再試一次」。 ## 相關內容 - [stream() 的 isTaskComplete](https://mastra.zisheng.pro/zh-HK/reference/streaming/agents/stream) - [監督 Agent](https://mastra.zisheng.pro/zh-HK/docs/capabilities/subagents) - [createScorer](https://mastra.zisheng.pro/zh-HK/reference/evals/create-scorer)