Общие сведения об использовании языковой модели

На первый взгляд
Цель: Мониторинг использования LLM с помощью OpenTelemetry
Время: 20 минут
Подключаемые модули:OpenAITelemetryPlugin
Предварительные требования:настройка прокси-сервера разработки, Docker

Использование языковых моделей влечет за собой затраты. Чтобы понять, как приложение использует большие языковые модели, используйте прокси-сервер разработки для перехвата запросов и ответов, совместимых с OpenAI. Прокси-сервер разработки анализирует запросы и ответы и журналы данных телеметрии, чтобы понять, как приложение использует большие языковые модели. Эта информация позволяет оптимизировать приложение и сократить затраты.

Данные об использовании языковой модели в формате OpenTelemetry записываются в журналы прокси-сервера разработки. Для визуализации данных можно использовать любую панель мониторинга, совместимую с OpenTelemetry. Например, можно использовать панель мониторинга Aspire или OpenLIT. Данные телеметрии включают количество маркеров, используемых в запросе и ответе, стоимость используемых маркеров и общую стоимость всех запросов на протяжении сеанса.

Перехватывайте запросы и ответы, совместимые с OpenAI, с помощью прокси для разработки.

Чтобы перехватывать запросы и ответы, совместимые с OpenAI, используйте OpenAITelemetryPlugin. Этот подключаемый модуль записывает данные телеметрии из запросов к OpenAI и ответов, которые он перехватывает, и выдает данные OpenTelemetry.

Создание файла конфигурации прокси-сервера разработки

  1. Создайте новый файл конфигурации прокси-сервера разработки с помощью команды devproxy config new или с помощью расширения Dev Proxy Toolkit.

  2. Добавьте OpenAITelemetryPlugin в файл конфигурации.

    Файл: devproxyrc.json

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.0/rc.schema.json",
      "plugins": [
        {
          "name": "OpenAITelemetryPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
        }
      ],
      "urlsToWatch": [
      ],
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    
  3. urlsToWatch Настройте свойство, чтобы включить URL-адреса запросов, совместимых с OpenAI, которые требуется перехватывать. В следующем примере перехватываются запросы к завершению чата Azure OpenAI.

    Файл: devproxyrc.json (с URL-адресами Azure OpenAI)

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.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
    }
    
  4. Сохраните ваши изменения.

Запуск сборщика OpenTelemetry и прокси-сервера разработки

Это важно

И для Aspire, и для OpenLIT требуется Docker для запуска. Если у вас нет Docker, следуйте инструкциям в документации Docker по установке Docker .

  1. Запустите Docker.

  2. Запустите сборщик OpenTelemetry.

    1. Выполните следующую команду, чтобы запустить сборщик и панель мониторинга 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 автоматически удаляет контейнер при его остановке.

    2. Откройте панель мониторинга Aspire в браузере http://localhost:18888/login?t=<code>.

  3. Чтобы запустить прокси-сервер разработки, измените рабочий каталог на папку, в которой вы создали файл конфигурации прокси-сервера разработки и выполните следующую команду:

    devproxy
    

Использование языковой модели и проверка данных телеметрии

  1. Выполните запрос к конечной точке, совместимой с OpenAI, которую вы настроили для перехвата с помощью Dev Proxy.

  2. Убедитесь, что 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
    
  3. В веб-браузере перейдите на панель мониторинга OpenTelemetry.

    1. В боковом меню выберите "Трассировки".

    2. Выберите одну из трассировок, названных DevProxy.OpenAI.

    3. Выберите диапазон запроса.

    4. На боковой панели изучите данные об использовании языковой модели.

      Снимок экрана дашборда Aspire, демонстрирующего телеметрические данные OpenAI в виде графика.

    5. На боковой вкладке переключитесь на Метрики.

    6. В раскрывающемся списке ресурсов выберите DevProxy.OpenAI.

    7. В списке метрик выберите gen_ai.client.token.usage , чтобы просмотреть диаграмму с количеством маркеров, которые использует приложение.

      Скриншот панели мониторинга Aspire, показывающей диаграмму использования токенов.

  4. Остановите прокси-сервер разработки, нажав Ctrl + C в терминале, где он запущен.

Общие сведения о затратах на языковую модель

Прокси для разработки поддерживает оценку затрат на использование языковых моделей. Чтобы разрешить прокси-серверу разработки оценить затраты, необходимо указать сведения о ценах на используемые модели.

Создание файла цен

  1. В той же папке, в которой был создан файл конфигурации прокси-сервера разработки, создайте новый файл с именем prices.json.

  2. Добавьте в файл следующее содержимое:

    Файл: prices.json

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.0/openaitelemetryplugin.pricesfile.schema.json",
      "prices": {
        "o4-mini": {
          "input": 0.97,
          "output": 3.87
        }
      }
    }
    

    Это важно

    Ключ — это имя языковой модели. Свойства input и output представляют собой цены за миллион токенов для входных и выходных токенов. Если вы используете модель, для которой нет сведений о цене, служба Dev Proxy не регистрирует метрики затрат.

  3. Сохраните ваши изменения.

  4. В редакторе кода откройте файл конфигурации прокси-сервера разработки.

  5. Расширьте ссылку OpenAITelemetryPlugin с помощью раздела конфигурации:

    Файл: devproxyrc.json (добавление configSection в плагин)

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.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
    }
    
  6. Добавьте раздел openAITelemetryPlugin в файл конфигурации.

    Файл: devproxyrc.json (в комплекте с отслеживанием затрат)

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.4.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/v2.4.0/openaitelemetryplugin.schema.json",
        "includeCosts": true,
        "pricesFile": "prices.json"
      },
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    

    Обратите внимание, что свойство includeCosts установлено в true, а свойство pricesFile установлено в имя файла с информацией о ценах.

  7. Сохраните ваши изменения.

Просмотр предполагаемых затрат

  1. Запустите прокси-сервер разработки.

  2. Выполните запрос к конечной точке, совместимой с OpenAI, которую вы настроили для перехвата с помощью Dev Proxy.

  3. В веб-браузере перейдите на панель мониторинга OpenTelemetry.

    1. На боковой панели выберите метрики.

    2. В раскрывающемся списке ресурсов выберите DevProxy.OpenAI.

    3. В списке метрик выберите gen_ai.client.total_cost , чтобы просмотреть диаграмму с предполагаемой общей стоимостью, которую ваше приложение несет за использование языковых моделей.

      Снимок экрана: панель мониторинга Aspire с диаграммой предполагаемой стоимости токена.

  4. Остановите прокси-сервер разработки, нажав Ctrl + C в терминале, где он запущен.

  5. Остановите сборщик OpenTelemetry.

    В терминале, на котором запущена панель мониторинга Aspire, нажмите клавиши CTRL + C , чтобы остановить панель мониторинга. Docker автоматически удаляет контейнер при его остановке.

Дальнейшие шаги

Дополнительные сведения о OpenAITelemetryPlugin.