通过


Microsoft.Extensions.AI.Evaluation 库

Microsoft.Extensions.AI.Evaluation 库简化了评估 .NET 智能应用中 AI 模型生成的响应的质量和安全性的过程。 各种质量指标衡量响应的相关性、真实性、一致性和完整性等方面。 安全指标衡量仇恨和不公平、暴力和性内容等方面。 评估在测试中至关重要,因为它们有助于确保 AI 模型按预期执行,并提供可靠且准确的结果。

基于 Microsoft.Extensions.AI 抽象构建的评估库由以下 NuGet 包组成:

测试集成

这些库旨在与现有的 .NET 应用顺利集成,使你能够利用现有的测试基础结构和熟悉的语法来评估智能应用。 可以使用任何测试框架(例如 MSTestxUnitNUnit)和测试工作流(例如 测试资源管理器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提供针对HateAndUnfairnessEvaluatorSelfHarmEvaluatorViolenceEvaluatorSexualEvaluator支持的四个指标的单次评估。

缓存的响应

该库使用 响应缓存 功能,这意味着来自 AI 模型的响应保存在缓存中。 在后续运行中,如果请求参数(提示和模型)保持不变,则会从缓存中提供响应,以实现更快的执行和更低的成本。

报告

该库包含对存储评估结果和生成报表的支持。 下图显示了 Azure DevOps 管道中的示例报表:

Azure DevOps 管道中 AI 评估报表的屏幕截图。

该工具 dotnet aieval 作为包的 Microsoft.Extensions.AI.Evaluation.Console 一部分提供,包括生成报表和管理存储的评估数据和缓存响应的功能。 有关详细信息,请参阅 “生成报表”。

配置

库被设计得很灵活。 可以选择所需的组件。 例如,可以禁用响应缓存或定制报告,以便在环境中效果最佳。 还可以通过添加自定义指标和报告选项来自定义和配置评估。

Samples

有关 Microsoft.Extensions.AI.Evaluation 库中提供的功能和 API 的更全面介绍,请参阅 API 用法示例(dotnet/ai-samples 存储库)。 这些示例的结构是单元测试的集合。 每个单元测试都展示一个特定的概念或 API,并基于之前单元测试中展示的概念和 API。

另请参阅