Microsoft.Extensions.AI.Evaluation 程式庫可簡化評估 .NET 智慧型應用程式中 AI 模型所產生回應品質和安全性的程式。 各種品質指標衡量回應的相關性、真實性、連貫性和完整性等方面。 安全指標衡量仇恨和不公平、暴力和色情內容等方面。 評估在測試中至關重要,因為它們有助於確保人工智慧模型按預期運行並提供可靠和準確的結果。
評估程式庫建置在 Microsoft.Extensions.AI 抽象之上,由下列 NuGet 套件所組成:
- 📦 Microsoft.Extensions.AI.Evaluation – 定義支援評估的核心抽象概念和類型。
- 📦 Microsoft.Extensions.AI.Evaluation.NLP - 包含 評估工具, 可使用自然語言處理 (NLP) 計量來評估 LLM 回應文字與一或多個參考回應的相似性。 這些評估者不是基於 LLM 或 AI 的;他們使用傳統的 NLP 技術(例如文字標記化和 n-gram 分析)來評估文字相似性。
- 📦 Microsoft.Extensions.AI.Evaluation.Quality – 包含評估 器, 可根據相關性和完整性等計量來評估應用程式中 LLM 回應的品質。 這些評估人員直接使用 LLM 來執行評估。
-
📦 Microsoft.Extensions.AI.Evaluation.Safety——包含
ProtectedMaterialEvaluator,如ContentHarmEvaluator和,使用Microsoft Foundry Evaluation服務進行評估。 - 📦 Microsoft.Extensions.AI.Evaluation.Reporting – 包含快取 LLM 回應、儲存評估結果,以及從該資料產生報告的支援。
- 📦 Microsoft.Extensions.AI.Evaluation.Reporting.Azure - 支援報告程式庫,其中包含快取 LLM 回應的實作,並將評估結果儲存在 Azure 儲存體 容器中。
- 📦 Microsoft.Extensions.AI.Evaluation.Console – 用於產生報告和管理評估資料的命令列工具。
測試整合
這些程式庫旨在與現有的 .NET 應用程式順利集成,使您能夠利用現有的測試基礎設施和熟悉的語法來評估智慧型應用程式。 您可以使用任何測試架構 (例如 MSTest、 xUnit 或 NUnit) 和測試工作流程 (例如, 測試總管、 dotnet test 或 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 系統在遵守分配給它的任務方面的有效性(以代理為中心) |
| ToolCallAccuracyEvaluator | Tool Call Accuracy |
評估 AI 系統使用提供給其的工具的有效性(以代理為中心) |
† 此評估器被標記為 實驗性。
NLP 評估員
NLP 評估者透過使用自然語言處理 (NLP) 技術將 LLM 回應與參考回應進行比較來評估 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 為基礎。