Поделиться через


Непрерывная оценка агентов ИИ (предварительная версия)

Note

Этот документ относится к порталу Microsoft Foundry (классическая модель). Сведения о непрерывной оценке с помощью портала Microsoft Foundry (new) см. в разделе "Настройка непрерывной оценки".

Important

Элементы, обозначенные в этой статье как (предварительная версия), сейчас предлагаются в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или их возможности могут быть ограничены. Для получения дополнительной информации см. Дополнительные условия использования для предварительных версий Microsoft Azure.

Непрерывная оценка для агентов обеспечивает почти мгновенную наблюдаемость и мониторинг для приложения искусственного интеллекта. После включения эта функция постоянно оценивает взаимодействие агента с заданной скоростью выборки, чтобы предоставить аналитические сведения о качестве, безопасности и производительности с метриками, которые отображаются на панели мониторинга наблюдения Foundry. С помощью непрерывной оценки вы сможете выявлять и устранять проблемы на ранних этапах, оптимизировать производительность агента и поддерживать безопасность. Оценки также подключены к трассировкам. для включения подробной отладки и анализа первопричин.

Prerequisites

Note

Для этой функции необходимо использовать проект Foundry . Центральный проект не поддерживается. Узнайте , как определить, какой тип проекта у вас. и Создание проекта Foundry. Чтобы перенести проект на основе концентратора в проект Foundry, см. статью "Миграция с концентратора на проекты Foundry".

Действия по подключению Application Insights

  1. Войдите в Microsoft Foundry. Убедитесь, что переключатель New Foundry отключен. Эти действия относятся к Foundry (классическая).

  2. Выберите "Мониторинг" в меню слева и перейдите в Application Analytics.

  3. Подключите ресурс Application Insights к проекту.

Настройка непрерывных вычислений с помощью клиентской библиотеки 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(),
    )
)

Получение результата оценки с помощью 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)

Сбор объяснений по поводу результатов оценки

Эксперты, использующие искусственный интеллект, применяют цепочку рассуждений, чтобы создать объяснение для оценки в вашем результате оценки. Чтобы сделать это, установите значение False для параметра redact_score_properties в объекте AgentEvaluationRedactionConfiguration и передайте его в запросе.

Это помогает понять причину оценки для каждой метрики.

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

Если несколько приложений ИИ отправляют данные непрерывной оценки в один ресурс Application Insights, рекомендуется использовать имя службы для дифференцировки данных приложения. Дополнительные сведения см. в Azure AI Tracing.

Просмотр результатов непрерывной оценки

После развертывания приложения в рабочей среде с непрерывной настройкой оценки можно отслеживать качество и безопасность агента с помощью Foundry и Azure Monitor.