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


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

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

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

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

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

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

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

  2. Добавьте 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
    }
    
  3. 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
    }
    
  4. Сохраните ваши изменения.

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

Это важно

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

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

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

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

    2. Откройте панель мониторинга .NET 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. На боковой панели изучите данные об использовании языковой модели.

      Снимок экрана: панель мониторинга .NET Aspire с данными телеметрии OpenAI в развернутом виде.

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

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

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

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

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

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

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

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

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

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

    {
      "$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 не регистрирует метрики затрат.

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

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

  5. Расширьте ссылку 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
    }
    
  6. Добавьте раздел 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 установлено в имя файла с информацией о ценах.

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

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

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

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

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

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

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

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

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

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

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

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

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

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