跳至主要內容

完整性評分器

createCompletenessScorer() 函式會評估 LLM 輸出涵蓋輸入中關鍵要素的完整程度。它會分析名詞、動詞、主題與術語以判斷涵蓋率,並提供詳細的完整性分數。

參數
「參數」的直接連結

createCompletenessScorer() 函式不接受任何選項。

此函式會傳回 MastraScorer 類別的執行個體。如需 .run() 方法及其輸入/輸出的詳細資訊,請參閱 MastraScorer 參考文件

.run() 傳回值
「run-returns」的直接連結

runId:

string
執行 ID(選填)。

preprocessStepResult:

object
包含所擷取要素與涵蓋詳情的物件:{ inputElements: string[], outputElements: string[], missingElements: string[], elementCounts: { input: number, output: number } }

score:

number
完整性分數(0-1),表示輸出涵蓋輸入要素的比例。

.run() 方法會傳回下列結構的結果:

{
runId: string,
extractStepResult: {
inputElements: string[],
outputElements: string[],
missingElements: string[],
elementCounts: { input: number, output: number }
},
score: number
}

要素擷取詳情
「要素擷取詳情」的直接連結

此評分器會擷取並分析多種類型的要素:

  • 名詞:關鍵物件、概念與實體
  • 動詞:動作與狀態(轉換為不定詞形式)
  • 主題:主要議題與核心內容
  • 術語:個別的實質詞彙

擷取流程包括:

  • 文字正規化(移除變音符號、轉換為小寫)
  • 拆分 camelCase 單字
  • 處理單字邊界
  • 特別處理短單字(3 個字元以下)
  • 移除重複要素

extractStepResult
「extractstepresult」的直接連結

你可以從 .run() 方法取得 extractStepResult 物件,其中包含下列屬性:

  • inputElements:在輸入中找到的關鍵要素(例如名詞、動詞、主題、術語)。
  • outputElements:在輸出中找到的關鍵要素。
  • missingElements:未在輸出中找到的輸入要素。
  • elementCounts:輸入與輸出中的要素數量。

評分詳情
「評分詳情」的直接連結

此評分器會分析語言要素的涵蓋率,以評估完整性。

評分流程
「評分流程」的直接連結

  1. 擷取關鍵要素:
    • 名詞與命名實體
    • 動作動詞
    • 特定主題的術語
    • 正規化後的詞形
  2. 計算輸入要素的涵蓋率:
    • 短術語(≤3 個字元)必須完全相符
    • 較長術語須大幅重疊(>60%)

最終分數:(covered_elements / total_input_elements) * scale

分數解讀
「分數解讀」的直接連結

完整性分數介於 0 到 1:

  • 1.0:詳盡回應查詢的所有面向,並提供充分細節。
  • 0.7 到 0.9:詳細涵蓋大多數重要面向,只有少量缺漏。
  • 0.4 到 0.6:回應部分關鍵要點,但缺少重要面向或細節不足。
  • 0.1 到 0.3:僅回應部分查詢,且有大量缺漏。
  • 0.0:未回應查詢,或提供不相關的資訊。

範例
「範例」的直接連結

評估 Agent 回應不同複雜度查詢時的完整性:

src/example-completeness.ts
import { runEvals } from '@mastra/core/evals'
import { createCompletenessScorer } from '@mastra/evals/scorers/prebuilt'
import { myAgent } from './agent'

const scorer = createCompletenessScorer()

const result = await runEvals({
data: [
{
input:
'Explain the process of photosynthesis, including the inputs, outputs, and stages involved.',
},
{
input: 'What are the benefits and drawbacks of remote work for both employees and employers?',
},
{
input:
'Compare renewable and non-renewable energy sources in terms of cost, environmental impact, and sustainability.',
},
],
scorers: [scorer],
target: myAgent,
onItemComplete: ({ scorerResults }) => {
console.log({
score: scorerResults[scorer.id].score,
})
},
})

console.log(result.scores)

如需 runEvals 的更多詳細資訊,請參閱 runEvals 參考文件

若要將此評分器加入 Agent,請參閱評分器概觀指南。