共用方式為


什麼是 Mosaic AI 代理程式評估?

重要

這項功能處於公開預覽狀態

本文提供了如何使用 Mosaic AI 代理程式評估的概觀。 代理程式評估可協助開發人員評估代理 AI 應用程式的品質、成本和延遲,包括 RAG 應用程式和鏈結。 代理程式評估是設計來識別質量問題,並判斷這些問題的根本原因。 代理評估的功能在 MLOps 生命週期的開發、預備和生產階段都是統一的,且所有評估指標和數據都會記錄到 MLflow 執行。

代理程式評估會將進階、研究支援的評估技術整合到與 Lakehouse、MLflow 和其他 Databricks Data Intelligence Platform 元件整合的用戶易記 SDK 和 UI。 這項專屬技術與馬賽克 AI 研究合作開發,提供分析及增強代理程式效能的完整方法。

LLMOps 評估圖表

代理 AI 應用程式很複雜,而且牽涉到許多不同的元件。 評估這些應用程式的效能並不像評估傳統 ML 模型的效能那麼簡單。 用來評估品質的定性和定量指標本身都比較複雜。 Agent Evaluation 包括專屬 LLM 評委與代理程式指標,來評估擷取與要求品質,以及延遲與權杖成本等整體性能指標。

如何使用代理人評估?

下列程式碼示範了如何在先前產生的輸出上呼叫及測試代理程式評估。 其會傳回資料框,其中包含由 LLM 評委計算的評估分數,這些評估分數是 Agent Evaluation 的一部分。

您可將下列內容複製並貼到現有的 Databricks 筆記本中:

%pip install mlflow databricks-agents
dbutils.library.restartPython()

import mlflow
import pandas as pd

examples =  {
    "request": [
      {
      # Recommended `messages` format
        "messages": [{
          "role": "user",
          "content": "Spark is a data analytics framework."
        }],
      },
      # SplitChatMessagesRequest format
      {
        "query": "How do I convert a Spark DataFrame to Pandas?",
        "history": [
          {"role": "user", "content": "What is Spark?"},
          {"role": "assistant", "content": "Spark is a data processing engine."},
        ],
      }
      # Note: Using a primitive string is discouraged. The string will be wrapped in the
      # OpenAI messages format before being passed to your agent.
    ],
    "response": [
        "Spark is a data analytics framework.",
        "This is not possible as Spark is not a panda.",
    ],
    "retrieved_context": [ # Optional, needed for judging groundedness.
        [{"doc_uri": "doc1.txt", "content": "In 2013, Spark, a data analytics framework, was open sourced by UC Berkeley's AMPLab."}],
        [{"doc_uri": "doc2.txt", "content": "To convert a Spark DataFrame to Pandas, you can use toPandas()"}],
    ],
    "expected_response": [ # Optional, needed for judging correctness.
        "Spark is a data analytics framework.",
        "To convert a Spark DataFrame to Pandas, you can use the toPandas() method.",
    ]
}
global_guidelines = {
  "english": ["The response must be in English"],
  "clarity": ["The response must be clear, coherent, and concise"],
}

result = mlflow.evaluate(
    data=pd.DataFrame(examples),    # Your evaluation set
    # model=logged_model.model_uri, # If you have an MLFlow model. `retrieved_context` and `response` will be obtained from calling the model.
    model_type="databricks-agent",  # Enable Mosaic AI Agent Evaluation
    evaluator_config={
       "databricks-agent": {"global_guidelines": global_guidelines}
    }
)

# Review the evaluation results in the MLFLow UI (see console output), or access them in place:
display(result.tables['eval_results'])

或者,您可在 Databricks 工作區中匯入並執行下列筆記本:

Mosaic AI 代理程式評估範例筆記本

取得筆記本

代理程式評估輸入和輸出

下圖顯示代理程式評估所接受的輸入概觀,以及代理程式評估所產生的對應輸出。

代理評估數據流

輸入

如需代理程式評估的預期輸入詳細資料,包括功能變數名稱和資料類型,請參閱 輸入架構。 部分欄位如下:

  • 用戶的查詢 (request): 對代理程式的輸入(使用者的問題或查詢)。 例如,「什麼是RAG?」。
  • 代理程式的回應 (response): 代理程式所產生的回應。 例如,「擷取增強世代為 ...」。
  • 預期回應(expected_response): (可選的)一個真實標準(正確)的回應。
  • MLflow 追蹤(trace 選擇性):代理程式的 MLflow 追蹤,從中代理程式評估可以擷取中介輸出,例如擷取的上下文或工具呼叫。 或者,您可以直接提供這些中繼輸出。
  • 指導方針(guidelines):(選擇性)模型輸出應遵守的指導方針或具名指導方針清單。

輸出

根據這些輸入,代理程式評估會產生兩種類型的輸出:

  1. 評估結果(每個數據列): 針對提供作為輸入的每個數據列,代理程式評估會產生對應的輸出數據列,其中包含代理程序的品質、成本和延遲的詳細評估。
    • LLM評委檢查品質的不同方面,如正確性或基礎性,提出是/否的分數,併為該分數寫下理由。 如需詳細資訊,請參閱 代理程式評估如何評估品質、成本和延遲。
    • LLM評委的評估結合產生整體分數,指出該數據列“通過”(高品質)或“失敗”(有質量問題)。
      • 針對任何失敗的數據列,會識別根本原因。 每個根本原因都對應到特定 LLM 法官的評估,讓您能夠使用法官的理由來識別潛在的修正程式。
    • 成本與延遲是從 MLflow 追蹤中提取出來的。 如需詳細資訊,請參閱 如何評估成本和延遲。
  2. 指標(匯總分數): 匯總分數匯總了所有輸入列中代理的品質、成本和延遲。 其中包括計量,例如正確答案的百分比、平均令牌計數、平均延遲等等。 如需詳細資訊,請參閱 如何評估 成本和延遲,以及如何 匯總 MLflow 執行層級的計量,以取得品質、成本和延遲

開發(離線評估)和生產(線上監控)

代理人評估的設計目的是在您的開發(離線)和生產(線上)環境之間保持一致。 此設計可讓您順暢地從開發轉換到生產環境,讓您能夠快速反覆運算、評估、部署及監視高品質的代理應用程式。

開發與生產的主要差別在於,在生產階段中,您沒有「真實標籤」; 而在開發階段中,您可以選擇性地使用「真實標籤」。 使用基礎事實標籤可讓代理程式評估計算其他品質計量。

開發(離線)

agent_eval_overview_dev

在開發中,您的 requestsexpected_responses 來自 評估集。 評估集是代理程式應該能夠正確處理的代表性輸入集合。 如需評估集的詳細資訊,請參閱 評估集

若要取得responsetrace,代理評估可以呼叫您的代理代碼,為評估集中的每行產生這些輸出。 或者,您可以自行產生這些輸出,並將其傳遞至代理評估。 如需詳細資訊,請參閱 如何提供評估運行的輸入方法

生產(線上)

agent_eval_overview_prod

在生產環境中,代理程式評估的所有輸入都來自您的生產記錄。

如果您使用馬賽克 AI 代理程式架構來部署 AI 應用程式,則可以將代理程式評估設定為從 監視器部署的代理程式自動收集這些輸入, 並持續更新監視數據表。 如需詳細資訊,請參閱 如何監視您的 Gen AI 應用程式

如果您在 Azure Databricks 外部部署代理程式,您可以將記錄 ETL 傳送至所需的 輸入架構,並同樣地設定監視儀錶板。

使用評估集建立品質基準

若要測量開發中 AI 應用程式的品質(離線),您需要定義評估集,也就是一組代表性問題和選擇性的真話答案。 如果應用程式牽涉到擷取步驟,例如在 RAG 工作流程中,您可選擇性地提供您預期回應所依據的支援文件。

評估流程

如需如何執行評估的詳細資訊,請參閱 執行評估並檢視結果。 代理評估支援提供從鏈輸出的選項:

  • 您可以在評估執行中執行應用程式。 應用程式會產生評估集中每個輸入的結果。
  • 您可以提供應用程式先前執行的輸出。

如需了解各選項的詳細資料和使用時機,請參閱 提供輸入以執行評估

取得人類關於產生 AI 應用程式質量的意見反應

Databricks 檢閱應用程式可讓您輕鬆地從人類檢閱者收集 AI 應用程式質量的意見反應。 如需詳細資訊,請參閱 使用檢閱應用程式來檢閱一代 AI 應用程式

Mosaic AI 代理程式評估的地區可用性

Mosaic AI Agent Evaluation 是指定的服務,會在處理客戶內容時使用地理位置來管理資料落地。 若要深入了解不同地理區域中 Agent Evaluation 的可用性,請參閱 Databricks 指定的服務

定價

如需定價資訊,請參閱 Mosaic AI Agent Evaluation 的定價

為 LLM 評委提供動力的模型相關資訊

  • LLM 評委可能會使用第三方服務來評估您的 GenAI 應用程式,包括了由 Microsoft 運作的 Azure OpenAI。
  • 針對 Azure OpenAI,Databricks 已選取退出濫用監視,因此不會使用 Azure OpenAI 儲存任何提示或回應。
  • 對於歐盟 (EU) 工作區,LLM 評委會使用歐盟託管的模型。 所有其他區域都會使用裝載於美國的模型。
  • 停用 Azure AI 支援的 AI 輔助功能可防止 LLM 評委呼叫 Azure AI 支援的模型。
  • 傳送給 LLM 評委的資料不會用於任何模型訓練。
  • LLM 評估工具旨在協助客戶評估其 RAG 應用程式,而 LLM 評估工具的輸出則不應被用來訓練、改進或微調 LLM。