Microsoft.Extensions.AI.Evaluation 库简化了评估 .NET 智能应用中 AI 模型生成的响应的质量和安全性的过程。 各种质量指标衡量响应的相关性、真实性、一致性和完整性等方面。 安全指标衡量仇恨和不公平、暴力和性内容等方面。 评估在测试中至关重要,因为它们有助于确保 AI 模型按预期执行,并提供可靠且准确的结果。
基于 Microsoft.Extensions.AI 抽象构建的评估库由以下 NuGet 包组成:
- 📦 Microsoft.Extensions.AI.Evaluation – 定义用于支持评估的核心抽象和类型。
- 📦 Microsoft.Extensions.AI.Evaluation.NLP - 包含使用自然语言处理(NLP)指标评估 LLM 响应文本与一个或多个引用响应相似性的 计算器 。 这些评估器不是 LLM 或基于 AI 的;它们使用传统的 NLP 技术(如文本标记化和 n 元语法分析)来评估文本相似性。
- 📦 Microsoft.Extensions.AI.Evaluation.Quality – 包含 评估器 ,根据相关性和完整性等指标评估应用中 LLM 响应的质量。 这些评估者直接使用 LLM 进行评估。
-
📦 Microsoft.Extensions.AI.Evaluation.Safety – 包含评估器,例如
ProtectedMaterialEvaluator和ContentHarmEvaluator,这些评估器使用Microsoft Foundry 评估服务来执行评估。 - 📦 Microsoft.Extensions.AI.Evaluation.Reporting – 包含对缓存 LLM 响应、存储评估结果以及从该数据生成报表的支持。
- 📦 Microsoft.Extensions.AI.Evaluation.Reporting.Azure - 支持包含用于缓存 LLM 响应并将评估结果存储在 Azure 存储 容器中的实现的报告库。
- 📦 Microsoft.Extensions.AI.Evaluation.Console – 用于生成报表和管理评估数据的命令行工具。
测试集成
这些库旨在与现有的 .NET 应用顺利集成,使你能够利用现有的测试基础结构和熟悉的语法来评估智能应用。 可以使用任何测试框架(例如 MSTest、 xUnit 或 NUnit)和测试工作流(例如 测试资源管理器、 dotnet 测试或 CI/CD 管道)。 该库还提供简单的方法,通过向遥测和监视仪表板发布评估分数来对应用程序进行联机评估。
综合评估指标
评估库是与来自 Microsoft 和 GitHub 的数据科学研究人员合作构建的,在流行的Microsoft Copilot 体验中进行了测试。 以下部分显示了内置的 质量、 NLP和安全评估 程序及其度量指标。
还可以通过实现 IEvaluator 接口自定义以添加自己的评价。
质量评估器
质量评估人员测量响应质量。 它们使用 LLM 来执行评估。
| 评估器类型 | 指标 | Description |
|---|---|---|
| RelevanceEvaluator | Relevance |
评估响应与查询的相关性 |
| CompletenessEvaluator | Completeness |
评估响应的综合性和准确程度 |
| RetrievalEvaluator | Retrieval |
评估在检索附加上下文信息时的性能 |
| FluencyEvaluator | Fluency |
评估语法准确性、词汇范围、句子复杂性和整体可读性 |
| CoherenceEvaluator | Coherence |
对思想的逻辑性和有序性的呈现进行评估 |
| EquivalenceEvaluator | Equivalence |
评估生成的文本与其真实数据和查询之间的相似性 |
| GroundednessEvaluator | Groundedness |
评估生成的响应与给定上下文的对齐程度 |
| RelevanceTruthAndCompletenessEvaluator† |
Relevance (RTC)、Truth (RTC) 和 Completeness (RTC) |
评估响应的相关、真实和完成程度 |
| IntentResolutionEvaluator | Intent Resolution |
评估 AI 系统在识别和解决用户意向时的有效性(以代理为中心的) |
| TaskAdherenceEvaluator | Task Adherence |
评估 AI 系统在遵守分配给 AI 系统的任务时的有效性(以代理为重点) |
| ToolCallAccuracyEvaluator | Tool Call Accuracy |
评估 AI 系统使用提供给它的工具的有效性(以代理为中心的) |
†此评估器标记为 实验性。
NLP评估者
NLP 计算器通过使用自然语言处理 (NLP) 技术将其与引用响应进行比较来评估 LLM 响应的质量。 这些评估器不是 LLM 或基于 AI 的;而是使用较旧的 NLP 技术来执行文本比较。
| 评估器类型 | 指标 | Description |
|---|---|---|
| BLEUEvaluator | BLEU |
通过使用双语评估(BLEU)算法将其与一个或多个引用响应进行比较来评估响应。 此算法通常用于评估机器翻译或文本生成任务的质量。 |
| GLEUEvaluator | GLEU |
使用 Google BLEU (GLEU) 算法测量生成的响应与一个或多个引用响应之间的相似性,该算法是针对句子级评估优化的BLEU算法的变体。 |
| F1Evaluator | F1 |
通过使用 F1 评分算法将其与引用响应进行比较来评估响应(生成的响应与引用响应之间的共享单词数的比率)。 |
安全评估者
安全评估程序检查响应中是否存在有害、不当或不安全的内容。 它们依赖于 Foundry 评估服务,该服务使用经过微调的模型来执行评估。
| 评估器类型 | 指标 | Description |
|---|---|---|
| GroundednessProEvaluator | Groundedness Pro |
使用 Foundry 评估服务后面托管的微调模型来评估生成的响应与给定上下文的一致程度 |
| ProtectedMaterialEvaluator | Protected Material |
评估受保护材料是否存在的响应 |
| UngroundedAttributesEvaluator | Ungrounded Attributes |
评估响应中是否存在指示人类属性的不合理推断的内容 |
| HateAndUnfairnessEvaluator† | Hate And Unfairness |
评估响应中是否存在仇恨或偏袒的内容 |
| SelfHarmEvaluator† | Self Harm |
评估响应中是否存在表明自我伤害的内容 |
| ViolenceEvaluator† | Violence |
评估一个响应中是否存在暴力内容 |
| SexualEvaluator† | Sexual |
响应是否存在色情内容的评估 |
| CodeVulnerabilityEvaluator | Code Vulnerability |
评估响应中是否存在易受攻击的代码 |
| IndirectAttackEvaluator | Indirect Attack |
评估响应中是否存在间接攻击,例如被篡改的内容、入侵和信息收集。 |
此外,ContentHarmEvaluator提供针对HateAndUnfairnessEvaluator、SelfHarmEvaluator、ViolenceEvaluator和SexualEvaluator支持的四个指标的单次评估。
缓存的响应
该库使用 响应缓存 功能,这意味着来自 AI 模型的响应保存在缓存中。 在后续运行中,如果请求参数(提示和模型)保持不变,则会从缓存中提供响应,以实现更快的执行和更低的成本。
报告
该库包含对存储评估结果和生成报表的支持。 下图显示了 Azure DevOps 管道中的示例报表:
该工具 dotnet aieval 作为包的 Microsoft.Extensions.AI.Evaluation.Console 一部分提供,包括生成报表和管理存储的评估数据和缓存响应的功能。 有关详细信息,请参阅 “生成报表”。
配置
库被设计得很灵活。 可以选择所需的组件。 例如,可以禁用响应缓存或定制报告,以便在环境中效果最佳。 还可以通过添加自定义指标和报告选项来自定义和配置评估。
Samples
有关 Microsoft.Extensions.AI.Evaluation 库中提供的功能和 API 的更全面介绍,请参阅 API 用法示例(dotnet/ai-samples 存储库)。 这些示例的结构是单元测试的集合。 每个单元测试都展示一个特定的概念或 API,并基于之前单元测试中展示的概念和 API。