Microsoft.Extensions.AI.Evaluation 库简化了评估 .NET 智能应用中 AI 模型生成的响应的质量和准确性的过程。 各种指标度量响应的相关性、真实性、一致性和完整性等方面。 评估在测试中至关重要,因为它们有助于确保 AI 模型按预期执行,并提供可靠且准确的结果。
基于 Microsoft.Extensions.AI 抽象构建的评估库由以下 NuGet 包组成:
- 📦 Microsoft.Extensions.AI.Evaluation – 定义用于支持评估的核心抽象和类型。
- 📦 Microsoft.Extensions.AI.Evaluation.Quality – 包含评估程序,根据相关性和完整性等指标评估应用中 LLM 响应的质量。 这些评估人员直接使用 LLM 来进行评估。
-
📦 Microsoft.Extensions.AI.Evaluation.Safety – 包含使用
ProtectedMaterialEvaluator
评估服务执行评估的评估程序,例如ContentHarmEvaluator
和 。 - 📦 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 体验中进行了测试。 以下部分显示了内置的质量和安全评估程序及其度量的指标。
您还可以实现 IEvaluator 接口来定制和添加您自己的评估。
质量评估器
质量评估者评估响应质量。 它们使用 LLM 来执行评估。
评估者类型 | 指标 | DESCRIPTION |
---|---|---|
RelevanceEvaluator | Relevance |
评估响应与查询的相关性 |
CompletenessEvaluator | Completeness |
评估响应的综合性和准确程度 |
RetrievalEvaluator | Retrieval |
评估检索附加上下文信息时的性能 |
FluencyEvaluator | Fluency |
评估语法准确性、词汇范围、句子复杂性和整体可读性 |
CoherenceEvaluator | Coherence |
评估思想的逻辑和有序呈现 |
EquivalenceEvaluator | Equivalence |
评估生成的文本与其真实值相对于查询的相似性 |
GroundednessEvaluator | Groundedness |
评估生成的响应与给定上下文的对齐程度 |
RelevanceTruthAndCompletenessEvaluator† |
Relevance (RTC) 、Truth (RTC) 和 Completeness (RTC) |
评估响应的相关、真实和完成程度 |
†此评估器标记为 实验性。
安全评估员
安全评估程序检查响应中是否存在有害、不当或不安全的内容。 它们依赖于 Azure AI Foundry 评估服务,该服务使用经过微调的模型来执行评估。
评估者类型 | 指标 | DESCRIPTION |
---|---|---|
GroundednessProEvaluator | Groundedness Pro |
使用 Azure AI 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
一部分提供,包括生成报表和管理存储的评估数据和缓存响应的功能。 有关详细信息,请参阅 “生成报表”。
配置
这些库的设计具有灵活性。 可以选择所需的组件。 例如,可以禁用响应缓存或定制报告,以便在环境中效果最佳。 还可以通过添加自定义指标和报告选项来自定义和配置评估。
示例
有关 Microsoft.Extensions.AI.Evaluation 库中提供的功能和 API 的更全面介绍,请参阅 API 用法示例(dotnet/ai-samples 存储库)。 这些示例的结构是单元测试的集合。 每个单元测试都展示一个特定的概念或 API,并基于之前单元测试中展示的概念和 API。