跳至主要內容

完整度評分器

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,請參閱評分器概覽指南。