Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Предупреждение
Разработка функций потока запросов закончилась 20 апреля 2026 г. Функция будет полностью прекращена 20 апреля 2027 г. В дату выхода на пенсию, Prompt Flow переходит в режим только для чтения. Существующие потоки будут продолжать работать до этой даты.
Рекомендуемое действие: Перенесите рабочие нагрузки Prompt Flow на Microsoft Agent Framework до 20 апреля 2027 г.
Примечание
Эта функция сейчас доступна в общедоступной предварительной версии. Эта предварительная версия предоставляется без соглашения об уровне обслуживания, и мы не рекомендуем ее для рабочих нагрузок. Некоторые функции могут не поддерживаться или могут иметь ограниченные возможности. Дополнительные сведения см. в разделе Supplemental Terms of Use for Microsoft Azure Previews.
После развертывания генерируемого приложения ИИ в рабочей среде разработчики приложений стремятся повысить их понимание и оптимизировать производительность. Данные трассировки для каждого запроса, агрегированные метрики и отзывы пользователей играют критически важные роли.
В этой статье вы узнаете, как включить трассировку, собирать агрегированные метрики и отзывы пользователей во время развертывания потока.
Необходимые условия
- CLI Azure и расширение Машинное обучение Azure для CLI Azure. Дополнительные сведения см. в разделе "Установка,настройка" и использование интерфейса командной строки (версия 2).
- Рабочая область Машинное обучение Azure. Если у вас его нет, выполните действия, описанные в статье Краткое руководство: создание ресурсов рабочей области для его создания.
- An Application Insights. Обычно рабочая область машинного обучения имеет по умолчанию связанную с ней Application Insights. Если вы хотите использовать новый , можно создать ресурс Application Insights.
- Узнайте , как создать и протестировать поток в системе обработки запросов.
- У вас есть базовое представление об управляемых сетевых конечных точках. Управляемые сетевые конечные точки работают с мощными компьютерами ЦП и GPU в Azure масштабируемым, полностью управляемым способом, который освобождает вас от затрат на настройку и управление базовой инфраструктурой развертывания. Дополнительные сведения об управляемых онлайн конечных точках можно найти в статье «Конечные точки онлайн и развертывания для вывода в режиме реального времени».
- Ролевое управление доступом Azure (Azure RBAC) используется для предоставления доступа к операциям в Машинное обучение Azure. Чтобы выполнить действия, описанные в этой статье, учетная запись пользователя должна иметь роль владельца или сотрудника для рабочей области Машинное обучение Azure или настраиваемую роль, разрешающую "Microsoft.MachineLearningServices/workspaces/onlineEndpoints/". Если вы используете студию для создания и управления онлайн-конечными точками и развертываниями, вам потребуется другое разрешение "Microsoft.Resources/deployments/write" от владельца группы ресурсов. Дополнительные сведения см. в разделе Манаж доступа к рабочей области Машинное обучение Azure.
Развертывание потока вывода в режиме реального времени
После правильного тестирования вашего потока, будь это flex flow или DAG flow, вы можете развернуть этот поток в рабочей среде. В этой статье мы используем развернуть поток для управляемых онлайн-узлов Машинное обучение Azure как пример. Для гибких потоков необходимо подготовить flow.flex.yaml файл вместо flow.dag.yaml.
Вы также можете развернуть на других платформах, таких как контейнер Docker, кластер Kubernetes и т. д.
Примечание
Для развертывания потока запросов необходимо использовать последний базовый образ потока запроса, чтобы он поддерживал API трассировки и сбора отзывов.
Включите трассировку и сбор системных метрик для вашего развертывания
Если вы используете пользовательский интерфейс студии для развертывания, то вы можете включить диагностику Application Insights в разделе «Дополнительные настройки» — на этапе развертывания мастера развертывания, где данные трассировки и системные метрики собираются в Application Insights, связанную с рабочей областью.
Если вы используете пакет SDK или CLI, вы можете добавить свойство app_insights_enabled: true в файл YAML развертывания, который собирает данные в рабочее пространство, связанное с Application Insights. Вы также можете указать другие Application Insights с помощью переменной среды APPLICATIONINSIGHTS_CONNECTION_STRING в файле yaml развертывания следующим образом. Строку подключения для Application Insights можно найти на странице обзора портала Azure.
# below is the property in deployment yaml
# app_insights_enabled: true
# you can also use the environment variable
environment_variables:
APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>
Примечание
Если вы установите только app_insights_enabled: true, но ваша рабочая область не имеет связанного сервиса Application Insights, развертывание не завершится ошибкой, однако сбор данных не будет производится.
Если вы одновременно указываете и app_insights_enabled: true, и указанную выше переменную среды, данные трассировки и метрики будут отправляться в рабочую область, связанную с Application Insights. Таким образом, если вы хотите указать другую службу Application Insights, необходимо сохранить только эту переменную среды.
При развертывании на других платформах можно также использовать переменную APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string> среды для сбора данных трассировки и метрик для speicifed Application Insights.
Просмотр данных трассировки в Application Insights
Трассировки записывают определенные события или состояние приложения во время выполнения. Он может включать данные о вызовах функций, значениях переменных, системных событиях и т. д. Трассировки помогают разбить компоненты приложения на дискретные входные и выходные данные, что имеет решающее значение для отладки и понимания приложения. Дополнительные сведения см. в разделе Трассировки OpenTelemetry для трассировок. Данные трассировки соответствуют спецификации OpenTelemetry.
Подробные сведения о трассировке можно просмотреть в указанном сервисе Application Insights. На следующем снимках экрана показан пример события развернутого потока, содержащего несколько узлов. В Application Insights —> Investigate —> Поиск транзакций, вы можете выбрать каждый узел для просмотра его подробной трассировки.
Записи событий типа Dependency фиксируют вызовы в развертываниях. Имя этого события — это имя папки потока. Дополнительные сведения о поиске транзакций и диагностике в Application Insights.
Просмотр системных метрик в Application Insights
| Имя метрик | Тип | Размеры | Описание |
|---|---|---|---|
| потребление токенов | Счетчик | поток - узел - llm_engine - token_type: prompt_tokens: маркеры входных данных API LLM; completion_tokens: маркеры ответа LLM API; total_tokens = prompt_tokens + completion tokens |
Метрики использования токенов OpenAI |
| задержка потока | Гистограмма | поток, код_ответа, потоковая передача, тип_ответа | стоимость выполнения запроса, response_type означает, является ли он полным/firstbyte/lastbyte |
| flow_request | Счетчик | поток, код_ответа, исключение, стриминг | количество запросов потока |
| задержка_узла | Гистограмма | поток, узел, статус выполнения | Затраты на выполнение узла |
| запрос узла | Счетчик | поток, узел, исключение, статус выполнения | Число выполнения узла |
| Задержка RPC | Гистограмма | поток, узел, api_call | RPC стоимость |
| rpc_запрос | Счетчик | Поток, узел, вызов_api, исключение | число RPC |
| flow_streaming_response_duration | Гистограмма | Поток | стоимость отправки потоковой передачи ответа, от отправки первого байта до отправки последнего байта |
На портале Azure можно найти приложение Application Insights по умолчанию для вашей рабочей области.
Откройте Application Insights и выберите Использование и оценочные затраты в левой области навигации. Выберите пользовательские метрики (предварительная версия) и выберите "С измерениями" и сохраните изменения.
Выберите вкладку "Метрики" в области навигации слева. Выберите стандартные метрики потока запросов из пространства имен метрик, и вы можете просмотреть метрики из раскрывающегося списка метрик с различными методами агрегирования.
Сбор отзывов и отправка в Application Insights
Служба потоков запросов предоставляет новый /feedback API для сбора отзывов. Нагрузка обратной связи может быть в любом формате данных JSON. Обслуживание PF помогает клиенту сохранять данные обратной связи в интервал трассировки. Данные будут сохранены в целевую конфигурацию экспортера трассировки, настроенную клиентом. Он также поддерживает стандартное распространение контекста трассировки OpenTelemetry, учитывая контекст трассировки, заданный в заголовке запроса, и используя его в качестве родительского контекста диапазона запроса. Вы можете использовать функцию распределенной трассировки для сопоставления трассировки отзывов с трассировкой запроса чата.
Ниже приведен пример кода, в котором показано, как выполнить оценку потока на развернутой управляемой конечной точке с включенным трассированием и отправить отзыв в ту же область трассировки, что и запрос на оценку. Поток имеет входные данные question и chat_hisotry, и выходные данные answer. После оценки конечной точки мы собираем отзыв и отправляем в Application Insights, указанный при развертывании потока. Необходимо заполнить api_key значение или изменить код в соответствии с вашим вариантом использования.
import urllib.request
import json
import os
import ssl
from opentelemetry import trace, context
from opentelemetry.baggage.propagation import W3CBaggagePropagator
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
from opentelemetry.sdk.trace import TracerProvider
# Initialize your tracer
tracer = trace.get_tracer("my.genai.tracer")
trace.set_tracer_provider(TracerProvider())
# Request data goes here
# The example below assumes JSON formatting which may be updated
# depending on the format your endpoint expects.
# More information can be found here:
# https://learn.microsoft.com/azure/machine-learning/how-to-deploy-advanced-entry-script
data = {
"question": "hello",
"chat_history": []
}
body = str.encode(json.dumps(data))
url = 'https://basic-chat-endpoint.eastus.inference.ml.azure.com/score'
feedback_url = 'https://basic-chat-endpoint.eastus.inference.ml.azure.com/feedback'
# Replace this with the primary/secondary key, AMLToken, or Microsoft Entra ID token for the endpoint
api_key = ''
if not api_key:
raise Exception("A key should be provided to invoke the endpoint")
# The azureml-model-deployment header will force the request to go to a specific deployment.
# Remove this header to have the request observe the endpoint traffic rules
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key), 'azureml-model-deployment': 'basic-chat-deployment' }
try:
with tracer.start_as_current_span('genai-request') as span:
ctx = context.get_current()
TraceContextTextMapPropagator().inject(headers, ctx)
print(headers)
print(ctx)
req = urllib.request.Request(url, body, headers)
response = urllib.request.urlopen(req)
result = response.read()
print(result)
# Now you can process the answer and collect feedback
feedback = "thumbdown" # Example feedback (modify as needed)
# Make another request to save the feedback
feedback_body = str.encode(json.dumps(feedback))
feedback_req = urllib.request.Request(feedback_url, feedback_body, headers)
urllib.request.urlopen(feedback_req)
except urllib.error.HTTPError as error:
print("The request failed with status code: " + str(error.code))
# Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
print(error.info())
print(error.read().decode("utf8", 'ignore'))
Трассировку запроса можно просмотреть вместе с отзывами в Application Insights.
Расширенное использование: экспорт трассировки в пользовательский сервис коллектора OpenTelemetry
В некоторых случаях может потребоваться экспортировать данные трассировки в развернутую службу сборщика OTel, включенную с помощью параметра "OTEL_EXPORTER_OTLP_ENDPOINT". Используйте этот экспортер, если вы хотите настроить собственную логику обработки диапазона и собственный целевой объект трассировки.