> Discover all available pages from the documentation index: https://mastra.zisheng.pro/zh-TW/llms.txt # 忠實度評分器 `createFaithfulnessScorer()` 函式會比較 LLM 輸出與提供的上下文,以評估輸出的事實正確性。它會從輸出中擷取主張,並根據上下文進行驗證,因此對衡量 RAG 管線回應的可靠性至關重要。 ## 參數 `createFaithfulnessScorer()` 函式接受包含下列屬性的單一選項物件: **model** (`LanguageModel`): 用於評估忠實度的模型設定。 **context** (`string[]`): 用於驗證輸出主張的上下文區塊陣列。 **scale** (`number`): 最高分數值。最終分數會正規化至此範圍。 (Default: `1`) 此函式會傳回 MastraScorer 類別的執行個體。`.run()` 方法接受與其他評分器相同的輸入(請參閱 [MastraScorer 參考文件](https://mastra.zisheng.pro/zh-TW/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`): 分數的詳細說明,包括哪些主張獲得支援、與上下文矛盾或標記為不確定。 **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-TW/reference/evals/run-evals)。 若要將此評分器加入 Agent,請參閱[評分器概觀](https://mastra.zisheng.pro/zh-TW/docs/evals/overview)指南。 ## 相關資源 - [答案相關性評分器](https://mastra.zisheng.pro/zh-TW/reference/evals/answer-relevancy) - [幻覺評分器](https://mastra.zisheng.pro/zh-TW/reference/evals/hallucination)