> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-HK/llms.txt # 忠實度評分器 `createFaithfulnessScorer()` 函數會比較所提供的語境,評估 LLM 輸出的事實準確度。它會從輸出中擷取聲稱,再根據語境加以核實,因此是衡量 RAG pipeline 回應可靠性的重要工具。 ## 參數 `createFaithfulnessScorer()` 函數接受一個包含以下屬性的選項物件: **model** (`LanguageModel`): 用於評估忠實度的模型設定。 **context** (`string[]`): 用作核實輸出聲稱依據的語境區塊陣列。 **scale** (`number`): 最高分數值。最終分數會按此量表標準化。 (Default: `1`) 此函數會傳回 MastraScorer 類別的實例。`.run()` 方法接受與其他評分器相同的輸入(請參閱 [MastraScorer 參考](https://mastra.zisheng.pro/zh-HK/reference/evals/mastra-scorer)),但傳回值包含下文說明的 LLM 特定欄位。 ## `.run()` 傳回值 **runId** (`string`): 執行的 ID(選填)。 **preprocessStepResult** (`string[]`): 從輸出擷取的聲稱陣列。 **preprocessPrompt** (`string`): 在預處理步驟傳送至 LLM 的提示(選填)。 **analyzeStepResult** (`object`): 包含判定的物件:{ verdicts: Array<{ verdict: 'yes' | 'no' | 'unsure', reason: string }> } **analyzePrompt** (`string`): 在分析步驟傳送至 LLM 的提示(選填)。 **score** (`number`): 介乎 0 至所設定 scale 的分數,表示獲語境支持的聲稱比例。 **reason** (`string`): 分數的詳細解釋,包括哪些聲稱獲得支持、與語境矛盾,或標記為 unsure。 **generateReasonPrompt** (`string`): 在 generateReason 步驟傳送至 LLM 的提示(選填)。 ## 評分詳情 評分器透過根據所提供的語境核實聲稱,評估忠實度。 ### 評分流程 1. 分析聲稱及語境: - 擷取所有聲稱(包括事實及推測) - 根據語境核實每項聲稱 - 指派以下三種判定之一: - "yes" - 聲稱獲語境支持 - "no" - 聲稱與語境矛盾 - "unsure" - 聲稱無法核實 2. 計算忠實度分數: - 點算獲支持的聲稱 - 除以聲稱總數 - 按所設定的範圍調整比例 最終分數:`(supported_claims / total_claims) * scale` ### 分數解讀 忠實度分數介乎 0 至 1: - **1.0**:所有聲稱均準確,並獲語境直接支持。 - **0.7 至 0.9**:大部分聲稱正確,只有少量額外內容或遺漏。 - **0.4 至 0.6**:部分聲稱獲得支持,但其他聲稱無法核實。 - **0.1 至 0.3**:大部分內容不準確或缺乏支持。 - **0.0**:所有聲稱均屬錯誤或與語境矛盾。 ## 範例 根據所提供的語境評估 Agent 回應的忠實度: ```typescript import { runEvals } from '@mastra/core/evals' import { createFaithfulnessScorer } from '@mastra/evals/scorers/prebuilt' import { myAgent } from './agent' // Context is typically populated from agent tool calls or RAG retrieval const scorer = createFaithfulnessScorer({ model: 'openai/gpt-5.6-sol', }) const result = await runEvals({ data: [ { input: 'Tell me about the Tesla Model 3.', }, { input: 'What are the key features of this electric vehicle?', }, ], scorers: [scorer], target: myAgent, onItemComplete: ({ scorerResults }) => { console.log({ score: scorerResults[scorer.id].score, reason: scorerResults[scorer.id].reason, }) }, }) console.log(result.scores) ``` 有關 `runEvals` 的詳情,請參閱 [runEvals 參考](https://mastra.zisheng.pro/zh-HK/reference/evals/run-evals)。 如要將此評分器加入 Agent,請參閱[評分器概覽](https://mastra.zisheng.pro/zh-HK/docs/evals/overview)指南。 ## 相關內容 - [答案相關性評分器](https://mastra.zisheng.pro/zh-HK/reference/evals/answer-relevancy) - [幻覺評分器](https://mastra.zisheng.pro/zh-HK/reference/evals/hallucination)