Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
На первый взгляд
Цель: Мониторинг использования LLM с помощью OpenTelemetry
Время: 20 минут
Подключаемые модули:OpenAITelemetryPlugin
Предварительные требования:настройка прокси-сервера разработки, Docker
Использование языковых моделей влечет за собой затраты. Чтобы понять, как приложение использует большие языковые модели, используйте прокси-сервер разработки для перехвата запросов и ответов, совместимых с OpenAI. Прокси-сервер разработки анализирует запросы и ответы и журналы данных телеметрии, чтобы понять, как приложение использует большие языковые модели. Эта информация позволяет оптимизировать приложение и сократить затраты.
Данные об использовании языковой модели в формате OpenTelemetry записываются в журналы прокси-сервера разработки. Для визуализации данных можно использовать любую панель мониторинга, совместимую с OpenTelemetry. Например, можно использовать панель мониторинга Aspire или OpenLIT. Данные телеметрии включают количество маркеров, используемых в запросе и ответе, стоимость используемых маркеров и общую стоимость всех запросов на протяжении сеанса.
Перехватывайте запросы и ответы, совместимые с OpenAI, с помощью прокси для разработки.
Чтобы перехватывать запросы и ответы, совместимые с OpenAI, используйте OpenAITelemetryPlugin. Этот подключаемый модуль записывает данные телеметрии из запросов к OpenAI и ответов, которые он перехватывает, и выдает данные OpenTelemetry.
Создание файла конфигурации прокси-сервера разработки
Создайте новый файл конфигурации прокси-сервера разработки с помощью команды
devproxy config newили с помощью расширения Dev Proxy Toolkit.Добавьте
OpenAITelemetryPluginв файл конфигурации.Файл: devproxyrc.json
{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/rc.schema.json", "plugins": [ { "name": "OpenAITelemetryPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll" } ], "urlsToWatch": [ ], "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }urlsToWatchНастройте свойство, чтобы включить URL-адреса запросов, совместимых с OpenAI, которые требуется перехватывать. В следующем примере перехватываются запросы к завершению чата Azure OpenAI.Файл: devproxyrc.json (с URL-адресами Azure OpenAI)
{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/rc.schema.json", "plugins": [ { "name": "OpenAITelemetryPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll" } ], "urlsToWatch": [ "https://*.openai.azure.com/openai/deployments/*/chat/completions*", "https://*.cognitiveservices.azure.com/openai/deployments/*/chat/completions*" ], "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }Сохраните ваши изменения.
Запуск сборщика OpenTelemetry и прокси-сервера разработки
Это важно
И для Aspire, и для OpenLIT требуется Docker для запуска. Если у вас нет Docker, следуйте инструкциям в документации Docker по установке Docker .
Запустите Docker.
Запустите сборщик OpenTelemetry.
Выполните следующую команду, чтобы запустить сборщик и панель мониторинга Aspire OpenTelemetry:
docker run --rm -it -p 18888:18888 -p 4317:18889 -p 4318:18890 --name aspire-dashboard mcr.microsoft.com/dotnet/aspire-dashboard:latestЗамечание
Завершив работу с панелью мониторинга Aspire, остановите панель мониторинга, нажав клавиши CTRL + C в терминале, где вы запустили панель мониторинга. Docker автоматически удаляет контейнер при его остановке.
Откройте панель мониторинга Aspire в браузере
http://localhost:18888/login?t=<code>.
Чтобы запустить прокси-сервер разработки, измените рабочий каталог на папку, в которой вы создали файл конфигурации прокси-сервера разработки и выполните следующую команду:
devproxy
Использование языковой модели и проверка данных телеметрии
Выполните запрос к конечной точке, совместимой с OpenAI, которую вы настроили для перехвата с помощью Dev Proxy.
Убедитесь, что Dev Proxy перехватил запрос и ответ. В консоли, где запущен прокси-сервер разработки, вы увидите аналогичные сведения:
info Dev Proxy API listening on http://127.0.0.1:8897... info Dev Proxy listening on 127.0.0.1:8000... Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen Press CTRL+C to stop Dev Proxy req ╭ POST https://some-resource.cognitiveservices.azure.com/openai/deployments/some-deployment/chat/completions?api-version=2025-01-01-preview time │ 19/05/2025 07:53:38 +00:00 pass │ Passed through proc ╰ OpenAITelemetryPlugin: OpenTelemetry information emittedВ веб-браузере перейдите на панель мониторинга OpenTelemetry.
В боковом меню выберите "Трассировки".
Выберите одну из трассировок, названных
DevProxy.OpenAI.Выберите диапазон запроса.
На боковой панели изучите данные об использовании языковой модели.
На боковой вкладке переключитесь на Метрики.
В раскрывающемся списке ресурсов выберите DevProxy.OpenAI.
В списке метрик выберите gen_ai.client.token.usage , чтобы просмотреть диаграмму с количеством маркеров, которые использует приложение.
Остановите прокси-сервер разработки, нажав Ctrl + C в терминале, где он запущен.
Общие сведения о затратах на языковую модель
Прокси для разработки поддерживает оценку затрат на использование языковых моделей. Чтобы разрешить прокси-серверу разработки оценить затраты, необходимо указать сведения о ценах на используемые модели.
Создание файла цен
В той же папке, в которой был создан файл конфигурации прокси-сервера разработки, создайте новый файл с именем
prices.json.Добавьте в файл следующее содержимое:
Файл: prices.json
{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/openaitelemetryplugin.pricesfile.schema.json", "prices": { "o4-mini": { "input": 0.97, "output": 3.87 } } }Это важно
Ключ — это имя языковой модели. Свойства
inputиoutputпредставляют собой цены за миллион токенов для входных и выходных токенов. Если вы используете модель, для которой нет сведений о цене, служба Dev Proxy не регистрирует метрики затрат.Сохраните ваши изменения.
В редакторе кода откройте файл конфигурации прокси-сервера разработки.
Расширьте ссылку
OpenAITelemetryPluginс помощью раздела конфигурации:Файл: devproxyrc.json (добавление configSection в плагин)
{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/rc.schema.json", "plugins": [ { "name": "OpenAITelemetryPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll", "configSection": "openAITelemetryPlugin" } ], "urlsToWatch": [ "https://*.openai.azure.com/openai/deployments/*/chat/completions*", "https://*.cognitiveservices.azure.com/openai/deployments/*/chat/completions*" ], "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }Добавьте раздел
openAITelemetryPluginв файл конфигурации.Файл: devproxyrc.json (в комплекте с отслеживанием затрат)
{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/rc.schema.json", "plugins": [ { "name": "OpenAITelemetryPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll", "configSection": "openAITelemetryPlugin" } ], "urlsToWatch": [ "https://*.openai.azure.com/openai/deployments/*/chat/completions*", "https://*.cognitiveservices.azure.com/openai/deployments/*/chat/completions*" ], "openAITelemetryPlugin": { "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v3.0.0/openaitelemetryplugin.schema.json", "includeCosts": true, "pricesFile": "prices.json" }, "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }Обратите внимание, что свойство
includeCostsустановлено вtrue, а свойствоpricesFileустановлено в имя файла с информацией о ценах.Сохраните ваши изменения.
Просмотр предполагаемых затрат
Запустите прокси-сервер разработки.
Выполните запрос к конечной точке, совместимой с OpenAI, которую вы настроили для перехвата с помощью Dev Proxy.
В веб-браузере перейдите на панель мониторинга OpenTelemetry.
Остановите прокси-сервер разработки, нажав Ctrl + C в терминале, где он запущен.
Остановите сборщик OpenTelemetry.
Дальнейшие шаги
Дополнительные сведения о OpenAITelemetryPlugin.