Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Использование языковых моделей влечет за собой затраты. Чтобы понять, как приложение использует большие языковые модели, используйте прокси-сервер разработки для перехвата запросов и ответов, совместимых с OpenAI. Прокси-сервер разработки анализирует запросы и ответы и журналы данных телеметрии, чтобы понять, как приложение использует большие языковые модели. Эта информация позволяет оптимизировать приложение и сократить затраты.
Данные об использовании языковой модели в формате OpenTelemetry записываются в журналы прокси-сервера разработки. Для визуализации данных можно использовать любую панель мониторинга, совместимую с OpenTelemetry. Например, можно использовать панель мониторинга .NET Aspire или OpenLIT. Данные телеметрии включают количество маркеров, используемых в запросе и ответе, стоимость используемых маркеров и общую стоимость всех запросов на протяжении сеанса.
Перехватывайте запросы и ответы, совместимые с OpenAI, с помощью прокси для разработки.
Чтобы перехватывать запросы и ответы, совместимые с OpenAI, используйте OpenAITelemetryPlugin. Этот подключаемый модуль записывает данные телеметрии из запросов к OpenAI и ответов, которые он перехватывает, и выдает данные OpenTelemetry.
Создание файла конфигурации прокси-сервера разработки
Создайте новый файл конфигурации прокси-сервера разработки с помощью команды
devproxy config new
или с помощью расширения Dev Proxy Toolkit.Добавьте
OpenAITelemetryPlugin
в файл конфигурации.{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json", "plugins": [ { "name": "OpenAITelemetryPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll" } ], "urlsToWatch": [ ], "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }
urlsToWatch
Настройте свойство, чтобы включить URL-адреса запросов, совместимых с OpenAI, которые требуется перехватывать. В следующем примере перехватываются запросы к завершению чата Azure OpenAI.{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json", "plugins": [ { "name": "OpenAITelemetryPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/dev-proxy-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 и прокси-сервера разработки
Это важно
Для запуска .NET Aspire и OpenLIT требуется Docker. Если у вас нет Docker, следуйте инструкциям в документации Docker по установке Docker .
Запустите Docker.
Запустите сборщик OpenTelemetry.
Выполните следующую команду, чтобы запустить сборщик и панель мониторинга .NET 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
Замечание
Завершив работу с панелью мониторинга .NET Aspire, остановите панель мониторинга, нажав клавиши CTRL + C в терминале, где вы запустили панель мониторинга. Docker автоматически удаляет контейнер при его остановке.
Откройте панель мониторинга .NET 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
.Добавьте в файл следующее содержимое:
{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/openaitelemetryplugin.pricesfile.schema.json", "prices": { "o4-mini": { "input": 0.97, "output": 3.87 } } }
Это важно
Ключ — это имя языковой модели. Свойства
input
иoutput
представляют собой цены за миллион токенов для входных и выходных токенов. Если вы используете модель, для которой нет сведений о цене, служба Dev Proxy не регистрирует метрики затрат.Сохраните ваши изменения.
В редакторе кода откройте файл конфигурации прокси-сервера разработки.
Расширьте ссылку
OpenAITelemetryPlugin
с помощью раздела конфигурации:{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json", "plugins": [ { "name": "OpenAITelemetryPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/dev-proxy-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
в файл конфигурации.{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json", "plugins": [ { "name": "OpenAITelemetryPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/dev-proxy-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/v1.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.
В терминале, на котором запущена панель мониторинга .NET Aspire, нажмите клавиши CTRL + C , чтобы остановить панель мониторинга. Docker автоматически удаляет контейнер при его остановке.
Дальнейшие шаги
Дополнительные сведения о OpenAITelemetryPlugin.