Compartir a través de


Comprender el uso del modelo de lenguaje

El uso de modelos de lenguaje conlleva costos. Para comprender cómo la aplicación usa modelos de lenguaje grande, use el proxy de desarrollo para interceptar las solicitudes y respuestas compatibles con OpenAI. Dev Proxy analiza las solicitudes y respuestas y registra los datos de telemetría para ayudarle a comprender cómo su aplicación usa modelos de lenguaje de gran tamaño. Esta información le permite optimizar la aplicación y reducir los costos.

Dev Proxy registra los datos de uso del modelo de lenguaje en formato OpenTelemetry. Puede usar cualquier panel compatible con OpenTelemetry para visualizar los datos. Por ejemplo, puede usar el panel de .NET Aspire o OpenLIT. Los datos de telemetría incluyen el número de tokens usados en la solicitud y la respuesta, el costo de los tokens usados y el costo total de todas las solicitudes durante una sesión.

Interceptar solicitudes y respuestas compatibles con OpenAI mediante el proxy de desarrollo

Para interceptar las solicitudes y respuestas compatibles con OpenAI, use OpenAITelemetryPlugin. Este complemento registra los datos de telemetría de las solicitudes y respuestas compatibles con OpenAI que intercepta y emite datos de OpenTelemetry.

Creación de un archivo de configuración de proxy de desarrollo

  1. Cree un nuevo archivo de configuración de Proxy de desarrollo mediante el devproxy config new comando o mediante la extensión Dev Proxy Toolkit.

  2. Agregue el OpenAITelemetryPlugin al archivo de configuración.

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.28.0/rc.schema.json",
      "plugins": [
        {
          "name": "OpenAITelemetryPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
        }
      ],
      "urlsToWatch": [
      ],
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    
  3. Configure la urlsToWatch propiedad para incluir las direcciones URL de las solicitudes compatibles con OpenAI que desea interceptar. En el ejemplo siguiente se interceptan las solicitudes a las finalizaciones de chat de Azure OpenAI.

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.28.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. Guarde los cambios.

Iniciar el recopilador de OpenTelemetry y el proxy de desarrollo

Importante

Tanto .NET Aspire como OpenLIT requieren que Docker se ejecute. Si no tiene Docker instalado, siga las instrucciones de la documentación de Docker para instalar Docker.

  1. Inicie Docker.

  2. Inicie el recopilador OpenTelemetry.

    1. Ejecute el comando siguiente para iniciar el recopilador y el panel openTelemetry de .NET Aspire:

      docker run --rm -it -p 18888:18888 -p 4317:18889 -p 4318:18890 --name aspire-dashboard mcr.microsoft.com/dotnet/aspire-dashboard:latest
      

      Nota:

      Cuando haya terminado de usar el panel de .NET Aspire, presione Ctrl + C en el terminal donde inició el panel. Docker quita automáticamente el contenedor al detenerlo.

    2. Abra el panel de .NET Aspire en el explorador en http://localhost:18888/login?t=<code>.

  3. Para iniciar el proxy de desarrollo, cambie el directorio de trabajo a la carpeta donde creó el archivo de configuración del proxy de desarrollo y ejecute el siguiente comando:

    devproxy
    

Uso del modelo de lenguaje e inspección de datos de telemetría

  1. Realice una solicitud al punto de conexión compatible con OpenAI para que el Dev Proxy la intercepte.

  2. Compruebe que el Dev Proxy ha interceptado la solicitud y la respuesta. En la consola, donde se ejecuta el proxy de desarrollo, debería ver información similar:

     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. En el explorador web, vaya al panel OpenTelemetry.

    1. En el menú lateral, seleccione Trazas.

    2. Seleccione uno de los rastros denominados DevProxy.OpenAI.

    3. Seleccione el intervalo de solicitudes.

    4. En el panel lateral, explore los datos de uso del modelo de lenguaje.

      Captura de pantalla del panel de .NET Aspire que muestra los datos de telemetría de OpenAI en un rango.

    5. En el panel lateral, cambie a Métricas.

    6. En la lista desplegable Recurso , seleccione DevProxy.OpenAI.

    7. En la lista de métricas, seleccione gen_ai.client.token.usage para ver un gráfico que muestra el número de tokens que usa la aplicación.

      Captura de pantalla del panel de .NET Aspire que muestra un gráfico de uso de tokens.

  4. Detenga el proxy de desarrollo presionando Ctrl + C en el terminal donde se ejecuta.

Descripción de los costos del modelo de lenguaje

El proxy de desarrollo admite la estimación de los costos de uso de modelos de lenguaje. Para permitir que Dev Proxy calcule los costos, debe proporcionar información sobre los precios de los modelos que usa.

Creación de un archivo de precios

  1. En la misma carpeta en la que creó el archivo de configuración del proxy de desarrollo, cree un nuevo archivo denominado prices.json.

  2. Agregue el siguiente contenido al archivo:

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

    Importante

    La clave es el nombre del modelo de lenguaje. input y output son las propiedades que indican los precios por millón de tokens para los tokens de entrada y salida. Si usa un modelo para el que no hay información de precios, el proxy de desarrollo no registra las métricas de coste.

  3. Guarde los cambios.

  4. En el editor de código, abra el archivo de configuración del proxy de desarrollo.

  5. Amplíe la OpenAITelemetryPlugin referencia con una sección de configuración:

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.28.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. Agregue la openAITelemetryPlugin sección al archivo de configuración:

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

    Observe la includeCosts propiedad establecida en true y la pricesFile propiedad establecida en el nombre del archivo con información de precios.

  7. Guarde los cambios.

Visualización de los costos estimados

  1. Inicie el proxy de desarrollo.

  2. Realice una solicitud al punto de conexión compatible con OpenAI para que el Dev Proxy la intercepte.

  3. En el explorador web, vaya al panel OpenTelemetry.

    1. En el panel lateral, seleccione Métricas.

    2. En la lista desplegable Recurso , seleccione DevProxy.OpenAI.

    3. En la lista de métricas, seleccione gen_ai.client.total_cost para ver un gráfico que muestra el costo total estimado que incurre la aplicación para usar los modelos de lenguaje.

      Captura de pantalla del panel de .NET Aspire que muestra un gráfico de costos estimados de token.

  4. Detenga el proxy de desarrollo presionando Ctrl + C en el terminal donde se ejecuta.

  5. Detenga el colector OpenTelemetry.

    En el terminal donde se ejecuta el panel de .NET Aspire, presione Ctrl + C para detener el panel. Docker quita automáticamente el contenedor al detenerlo.

Pasos siguientes

Obtenga más información sobre OpenAITelemetryPlugin.