> Discover all available pages from the documentation index: https://mastra.zisheng.pro/llms.txt # 完整性 Scorer `createCompletenessScorer()` 函数评估 LLM 输出对输入中关键要素的覆盖程度。它会分析名词、动词、主题和术语以确定覆盖情况,并给出详细的完整性分数。 ## 参数 `createCompletenessScorer()` 函数不接受任何选项。 此函数返回 MastraScorer 类的实例。有关 `.run()` 方法及其输入/输出的详情,请参阅 [MastraScorer 参考](https://mastra.zisheng.pro/reference/evals/mastra-scorer)。 ## `.run()` 返回值 **runId** (`string`): 本次运行的 id(可选)。 **preprocessStepResult** (`object`): 包含提取要素和覆盖详情的对象:{ inputElements: string\[], outputElements: string\[], missingElements: string\[], elementCounts: { input: number, output: number } } **score** (`number`): 完整性分数(0-1),表示输出所覆盖输入要素的比例。 `.run()` 方法返回以下结构的结果: ```typescript { runId: string, extractStepResult: { inputElements: string[], outputElements: string[], missingElements: string[], elementCounts: { input: number, output: number } }, score: number } ``` ## 要素提取详情 该 Scorer 会提取并分析多种类型的要素: - 名词:关键对象、概念和实体 - 动词:动作和状态(转换为不定式形式) - 主题:主要话题和主题 - 术语:单个有实际意义的词 提取流程包括: - 文本规范化(移除变音符号并转换为小写) - 拆分 camelCase 单词 - 处理单词边界 - 特殊处理短词(不超过 3 个字符) - 对要素去重 ### `extractStepResult` 通过 `.run()` 方法,可以获取包含以下属性的 `extractStepResult` 对象: - **inputElements**:在输入中找到的关键要素(例如名词、动词、主题和术语)。 - **outputElements**:在输出中找到的关键要素。 - **missingElements**:未在输出中找到的输入要素。 - **elementCounts**:输入和输出中的要素数量。 ## 评分详情 该 Scorer 通过分析语言要素的覆盖情况来评估完整性。 ### 评分流程 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 响应的完整性: ```typescript 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 参考](https://mastra.zisheng.pro/reference/evals/run-evals)。 要将此 Scorer 添加到 Agent,请参阅 [Scorer 概览](https://mastra.zisheng.pro/docs/evals/overview)指南。 ## 相关内容 - [Answer Relevancy Scorer](https://mastra.zisheng.pro/reference/evals/answer-relevancy) - [Content Similarity Scorer](https://mastra.zisheng.pro/reference/evals/content-similarity) - [Textual Difference Scorer](https://mastra.zisheng.pro/reference/evals/textual-difference) - [Keyword Coverage Scorer](https://mastra.zisheng.pro/reference/evals/keyword-coverage)