你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

持续评估 AI 代理(预览版)

Note

本文档适用于 Microsoft Foundry(经典)门户。

🔄 如果你使用的是新门户,请切换到 Microsoft Foundry(新)文档

Note

本文档适用于 Microsoft Foundry(新)门户。

Important

本文中标记了“(预览版)”的项目目前为公共预览版。 此预览版未提供服务级别协议,不建议将其用于生产工作负载。 某些功能可能不受支持或者受限。 有关详细信息,请参阅 Microsoft Azure 预览版补充使用条款

持续评估代理可为 AI 应用程序提供准实时的可观测性和监视。 启用后,此功能会持续以一定采样率评估代理交互,以便通过 Foundry 可观测性仪表板中显示的指标提供对质量、安全性和性能的见解。 通过使用持续评估,你可以尽早识别和排查问题、优化代理性能和维护安全。 评估还连接到跟踪。 启用详细调试和根本原因分析。

Prerequisites

Note

必须使用 Foundry 项目来实现此功能不支持基于中心的项目。 请参阅 如何知道我拥有哪种类型的项目?创建 Foundry 项目。 若要将基于中心的项目迁移到 Foundry 项目,请参阅 从基于中心的 Foundry 项目迁移到 Foundry 项目

连接 Application Insights 的步骤

  1. 登录到 Microsoft Foundry。 确保“新建 Foundry”开关处于关闭状态。 这些步骤适用于 Foundry(经典)。

    登录到 Microsoft Foundry。 确保 New Foundry 开关处于打开状态。 这些步骤适用于 Foundry(新)。

  2. 在左侧菜单中选择 “监视 ”,然后转到 “应用程序分析”。

  3. 将 Application Insights 资源连接到项目。

在 Foundry 中查看持续评估:

  1. 登录到 Microsoft Foundry。 确保“新建 Foundry”开关处于关闭状态。 这些步骤适用于 Foundry(经典)。

    登录到 Microsoft Foundry。 确保 New Foundry 开关处于打开状态。 这些步骤适用于 Foundry(新)。

  2. 从右上角导航中选择“ 生成 ”。

  3. 从左窗格中选择 “代理 ”。 选择要评估的代理。

  4. 选择“ 监视 ”选项卡以查看代理监视仪表板。

  5. 打开 “设置” 向导以开始配置持续评估。

  6. 使用 “添加评估者” 下拉列表添加一个或多个评估者。 可以通过两种方式添加评估者:

    • 评估器名称

      • 从可用列表中按名称选择评估者。
    • 从以前的评估中导入

      • 重新使用以前评估运行中的评估器,以保持一致性。
  7. 通过定义每小时的运行数来设置 采样率

  8. 应用更改。

  9. 选择 “验证 + 提交 ”以保存配置。

配置连续评估设置后,你将能够在摘要卡上查看顶级指标,以及具有更精细数据的关联图表。

Microsoft Foundry 项目配置和区域支持

由于评估人员在 Foundry 评估服务中使用托管的评价 LLM,因此需要实例化您的 Foundry 项目信息。 Foundry 项目必须位于受支持的区域中:

区域 代码漏洞、一致性、流畅性、仇恨/不公平性、间接攻击、意向解决、相关性、自我伤害、性、任务遵守、工具调用准确性、暴力
美国东部 已支持
美国东部 2 已支持
美国西部 已支持
美国西部 2 已支持
美国西部 3 已支持
法国中部 已支持
挪威东部 已支持
瑞典中部 已支持

使用 Azure AI Projects 客户端库设置持续评估

pip install azure-ai-projects azure-identity

创建代理运行

import os, json
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential

project_client = AIProjectClient(
    credential=DefaultAzureCredential(), endpoint=os.environ["PROJECT_ENDPOINT"]
)

agent = project_client.agents.create_agent(
    model=os.environ["MODEL_DEPLOYMENT_NAME"],
    name="my-assistant",
    instructions="You are a helpful assistant",
    tools=file_search_tool.definitions,
    tool_resources=file_search_tool.resources,
)

# Create thread and process user message
thread = project_client.agents.threads.create()
project_client.agents.messages.create(thread_id=thread.id, role="user", content="Hello, what Contoso products do you know?")
run = project_client.agents.runs.create_and_process(thread_id=thread.id, agent_id=agent.id)

# Handle run status
if run.status == "failed":
    print(f"Run failed: {run.last_error}")

# Print thread messages
for message in project_client.agents.messages.list(thread_id=thread.id).text_messages:
    print(message)

选择评估员

接下来,需要定义要持续运行的评估器集。 若要详细了解支持的评估工具,请参阅 什么是评估器?

from azure.ai.projects.models import EvaluatorIds

evaluators={
"Relevance": {"Id": EvaluatorIds.Relevance.value},
"Fluency": {"Id": EvaluatorIds.Fluency.value},
"Coherence": {"Id": EvaluatorIds.Coherence.value},
},

通过创建 AgentEvaluationRequest 持续评估代理运行

                      
project_client.evaluation.create_agent_evaluation(
    AgentEvaluationRequest(  
        thread=thread.id,  
        run=run.id,   
        evaluators=evaluators,
        appInsightsConnectionString = project_client.telemetry.get_application_insights_connection_string(),
    )
)

Note

Application Insights 必须连接到项目,否则服务不会运行。 若要连接 Application Insights 资源,请参阅 连接 Application Insights 的步骤

使用 Application Insights 获取评估结果


from azure.core.exceptions import HttpResponseError
from azure.identity import DefaultAzureCredential
from azure.monitor.query import LogsQueryClient, LogsQueryStatus
import pandas as pd


credential = DefaultAzureCredential()
client = LogsQueryClient(credential)

query = f"""
traces
| where message == "gen_ai.evaluation.result"
| where customDimensions["gen_ai.thread.run.id"] == "{run.id}"
"""

try:
    response = client.query_workspace(os.environ["LOGS_WORKSPACE_ID"], query, timespan=timedelta(days=1))
    if response.status == LogsQueryStatus.SUCCESS:
        data = response.tables
    else:
        # LogsQueryPartialResult - handle error here
        error = response.partial_error
        data = response.partial_data
        print(error)

    for table in data:
        df = pd.DataFrame(data=table.rows, columns=table.columns)
        key_value = df.to_dict(orient="records")
        pprint(key_value)
except HttpResponseError as err:
    print("something fatal happened")
    print(err)

捕获评估结果的推理解释

AI 辅助评估人员采用思考链推理,为评估结果中的分数生成解释。 若要启用此功能,请在 AgentEvaluationRedactionConfiguration 对象中将redact_score_properties设置为 False,并将其作为请求的一部分传递。

这有助于了解每个指标分数背后的原因。

Note

推理说明可能会根据对话的内容提及敏感信息。


from azure.ai.projects.models import AgentEvaluationRedactionConfiguration
              
project_client.evaluation.create_agent_evaluation(
    AgentEvaluationRequest(  
        thread=thread.id,  
        run=run.id,   
        evaluators=evaluators,  
        redaction_configuration=AgentEvaluationRedactionConfiguration(
            redact_score_properties=False,
       ),
        app_insights_connection_string=app_insights_connection_string,
    )
)

自定义采样配置

可以通过定义一个 AgentEvaluationSamplingConfiguration 来自定义采样配置,并在每小时 1000 次的系统限制内,指定偏好的采样百分比和每小时最大请求数。


from azure.ai.projects.models 

sampling_config = AgentEvaluationSamplingConfiguration (  
    name = agent.id,  
    samplingPercent = 100,       # Percentage of sampling per hour (0-100)
    maxRequestRate = 250,       # Maximum request rate per hour (0-1000)
)                                
project_client.evaluation.create_agent_evaluation(
    AgentEvaluationRequest(  
        thread=thread.id,  
        run=run.id,   
        evaluators=evaluators,  
        samplingConfiguration = sampling_config,  
        appInsightsConnectionString = project_client.telemetry.get_application_insights_connection_string(),
    )
)

Note

如果多个 AI 应用程序将持续评估数据发送到同一 Application Insights 资源,建议使用服务名称来区分应用程序数据。 有关详细信息,请参阅 Azure AI 跟踪

Note

如果多个 AI 应用程序将持续评估数据发送到同一 Application Insights 资源,建议使用服务名称来区分应用程序数据。

查看连续评估结果

使用持续评估设置将应用程序部署到生产环境后,可以使用 Foundry 和 Azure Monitor 监视代理的质量和安全性