Condividi tramite


Informazioni sull'utilizzo del modello linguistico

L'uso dei modelli linguistici comporta costi. Per comprendere come l'applicazione usa modelli linguistici di grandi dimensioni, usare Dev Proxy per intercettare richieste e risposte compatibili con OpenAI. Dev Proxy analizza le richieste e le risposte e registra i dati di telemetria per comprendere in che modo l'applicazione usa modelli linguistici di grandi dimensioni. Queste informazioni consentono di ottimizzare l'applicazione e ridurre i costi.

Dev Proxy registra i dati di utilizzo del modello linguistico in formato OpenTelemetry. È possibile usare qualsiasi dashboard compatibile con OpenTelemetry per visualizzare i dati. Ad esempio, è possibile usare il dashboard .NET Aspire o OpenLIT. I dati di telemetria includono il numero di token usati nella richiesta e nella risposta, il costo dei token usati e il costo totale di tutte le richieste nel corso di una sessione.

Intercettare richieste e risposte compatibili con OpenAI con Dev Proxy

Per intercettare le richieste e le risposte compatibili con OpenAII, usare OpenAITelemetryPlugin. Questo plug-in registra i dati di telemetria dalle richieste e dalle risposte compatibili con OpenAI che intercetta ed emette dati OpenTelemetry.

Creare un file di configurazione del proxy di sviluppo

  1. Creare un nuovo file di configurazione di Dev Proxy usando il devproxy config new comando o l'estensione Dev Proxy Toolkit.

  2. Aggiungere l'oggetto OpenAITelemetryPlugin al file di configurazione.

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json",
      "plugins": [
        {
          "name": "OpenAITelemetryPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
        }
      ],
      "urlsToWatch": [
      ],
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    
  3. Configurare la urlsToWatch proprietà per includere gli URL delle richieste compatibili con OpenAI che si desidera intercettare. L'esempio seguente intercetta le richieste ai completamenti della chat OpenAI di Azure.

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.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
    }
    
  4. Salvare le modifiche.

Avviare il collettore OpenTelemetry e il proxy di sviluppo

Importante

Sia .NET Aspire che OpenLIT richiedono l'esecuzione di Docker. Se Docker non è installato, seguire le istruzioni nella documentazione di Docker per installare Docker .

  1. Avvia Docker.

  2. Avviare il collettore OpenTelemetry.

    1. Eseguire il comando seguente per avviare l'agente di raccolta e il dashboard .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
      

      Annotazioni

      Al termine dell'uso del dashboard .NET Aspire, arrestare il dashboard premendo CTRL + C nel terminale in cui è stato avviato il dashboard. Docker rimuove automaticamente il contenitore quando lo arresti.

    2. Aprire il dashboard .NET Aspire nel browser all'indirizzo http://localhost:18888/login?t=<code>.

  3. Per avviare Dev Proxy, modificare la directory di lavoro nella cartella in cui è stato creato il file di configurazione del proxy di sviluppo ed eseguire il comando seguente:

    devproxy
    

Usare il modello linguistico ed esaminare i dati di telemetria

  1. Effettuare una richiesta all'endpoint compatibile con OpenAI che hai configurato per l'intercettazione con Dev Proxy.

  2. Verificare che Dev Proxy abbia intercettato la richiesta e la risposta. Nella console, in cui è in esecuzione Dev Proxy, dovrebbero essere visualizzate informazioni simili:

     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. Nel browser web, passare al dashboard di OpenTelemetry.

    1. Dal menu laterale selezionare Tracce.

    2. Selezionare una delle tracce denominate DevProxy.OpenAI.

    3. Selezionare l'intervallo di richieste.

    4. Nel pannello laterale esplorare i dati di utilizzo del modello linguistico.

      Screenshot del dashboard .NET Aspire che mostra i dati di telemetria OpenAI in un intervallo.

    5. Nel pannello laterale passare a Metriche.

    6. Nell'elenco a discesa Risorsa selezionare DevProxy.OpenAI.

    7. Nell'elenco delle metriche selezionare gen_ai.client.token.usage per visualizzare un grafico che mostra il numero di token usati dall'applicazione.

      Screenshot del dashboard .NET Aspire che mostra un grafico dell'utilizzo dei token.

  4. Arrestare Dev Proxy premendo CTRL + C nel terminale in cui è in esecuzione.

Informazioni sui costi del modello linguistico

Dev Proxy supporta la stima dei costi dell'uso dei modelli linguistici. Per consentire a Dev Proxy di stimare i costi, è necessario fornire informazioni sui prezzi per i modelli usati.

Creare un file dei prezzi

  1. Nella stessa cartella in cui è stato creato il file di configurazione di Dev Proxy creare un nuovo file denominato prices.json.

  2. Aggiungere il seguente contenuto nel file:

    {
      "$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
        }
      }
    }
    

    Importante

    La chiave è il nome del modello linguistico. Le proprietà input e output sono i prezzi per milione di token dei token di input e di output. Se si usa un modello per cui non sono disponibili informazioni sui prezzi, Dev Proxy non registra le metriche dei costi.

  3. Salvare le modifiche.

  4. Nell'editor di codice aprire il file di configurazione di Dev Proxy.

  5. Estendi il OpenAITelemetryPlugin riferimento con una sezione di configurazione:

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.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
    }
    
  6. Aggiungere la openAITelemetryPlugin sezione al file di configurazione:

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

    Si noti che la proprietà includeCosts è impostata su true e la proprietà pricesFile è impostata sul nome del file con le informazioni sui prezzi.

  7. Salvare le modifiche.

Visualizzare i costi stimati

  1. Avviare il proxy di sviluppo.

  2. Effettuare una richiesta all'endpoint compatibile con OpenAI che hai configurato per l'intercettazione con Dev Proxy.

  3. Nel browser web, passare al dashboard di OpenTelemetry.

    1. Nel pannello laterale selezionare Metriche.

    2. Nell'elenco a discesa Risorsa selezionare DevProxy.OpenAI.

    3. Nell'elenco delle metriche selezionare gen_ai.client.total_cost per visualizzare un grafico che mostra il costo totale stimato che l'applicazione comporta per l'uso dei modelli linguistici.

      Screenshot del dashboard .NET Aspire che mostra un grafico del costo stimato del token.

  4. Arrestare Dev Proxy premendo CTRL + C nel terminale in cui è in esecuzione.

  5. Arrestare l'agente di raccolta OpenTelemetry.

    Nel terminale in cui è in esecuzione il dashboard .NET Aspire premere CTRL + C per arrestare il dashboard. Docker rimuove automaticamente il contenitore quando lo arresti.

Passaggi successivi

Altre informazioni su OpenAITelemetryPlugin.