Partager via


Comprendre l’utilisation du modèle de langage

L’utilisation de modèles linguistiques entraîne des coûts. Pour comprendre comment votre application utilise des modèles de langage volumineux, utilisez le proxy de développement pour intercepter les requêtes et réponses compatibles OpenAI. Le proxy de développement analyse les demandes et réponses et enregistre les données de télémétrie pour vous aider à comprendre comment votre application utilise des modèles de langage volumineux. Ces informations vous permettent d’optimiser votre application et de réduire les coûts.

Dev Proxy journalise les données d’utilisation du modèle de langage au format OpenTelemetry. Vous pouvez utiliser n’importe quel tableau de bord compatible OpenTelemetry pour visualiser les données. Par exemple, vous pouvez utiliser le tableau de bord .NET Aspire ou OpenLIT. Les données de télémétrie incluent le nombre de jetons utilisés dans la demande et la réponse, le coût des jetons utilisés et le coût total de toutes les requêtes au cours d’une session.

Intercepter les demandes et réponses compatibles OpenAI à l’aide du proxy de développement

Pour intercepter les requêtes et réponses compatibles OpenAI, utilisez OpenAITelemetryPlugin. Ce plug-in consigne les données de télémétrie à partir des requêtes et réponses compatibles OpenAI qu'il intercepte et il émet des données OpenTelemetry.

Créer un fichier de configuration du proxy de développement

  1. Créez un fichier de configuration dev Proxy à l’aide de la devproxy config new commande ou de l’extension Dev Proxy Toolkit.

  2. Ajoutez le OpenAITelemetryPlugin au fichier de configuration.

    {
      "$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. Configurez la urlsToWatch propriété pour inclure les URL des requêtes compatibles OpenAI que vous souhaitez intercepter. L'exemple suivant intercepte les requêtes des complétions de conversation d'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/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. Enregistrez vos modifications.

Démarrer le collecteur OpenTelemetry et le proxy de développement

Important

.NET Aspire et OpenLIT nécessitent l’exécution de Docker. Si vous n’avez pas installé Docker, suivez les instructions de la documentation Docker pour installer Docker.

  1. Démarrez Docker.

  2. Démarrez le collecteur OpenTelemetry.

    1. Exécutez la commande suivante pour démarrer le collecteur et le tableau de bord .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
      

      Remarque

      Lorsque vous avez terminé d’utiliser le tableau de bord .NET Aspire, arrêtez le tableau de bord en appuyant sur Ctrl + C dans le terminal où vous avez démarré le tableau de bord. Docker supprime automatiquement le conteneur lorsque vous l’arrêtez.

    2. Ouvrez le tableau de bord .NET Aspire dans votre navigateur à l’adresse http://localhost:18888/login?t=<code>.

  3. Pour démarrer le proxy de développement, remplacez le répertoire de travail par le dossier dans lequel vous avez créé le fichier de configuration du proxy de développement et exécutez la commande suivante :

    devproxy
    

Utiliser le modèle de langage et inspecter les données de télémétrie

  1. Effectuez une demande au point de terminaison compatible OpenAI que vous avez configuré pour que le Dev Proxy intercepte.

  2. Vérifiez que le proxy de développement a intercepté la demande et la réponse. Dans la console, où le proxy de développement est en cours d’exécution, vous devez voir des informations similaires :

     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. Dans le navigateur web, accédez au tableau de bord OpenTelemetry.

    1. Dans le menu latéral, sélectionnez Traces.

    2. Sélectionnez l’une des traces nommées DevProxy.OpenAI.

    3. Sélectionnez l’étendue de requête.

    4. Dans le volet latéral, explorez les données d’utilisation du modèle de langage.

      Capture d’écran du tableau de bord .NET Aspire montrant les données de télémétrie OpenAI sur une période.

    5. Dans le volet latéral, basculez vers Métriques.

    6. Dans la liste déroulante Ressource , sélectionnez DevProxy.OpenAI.

    7. Dans la liste des métriques, sélectionnez gen_ai.client.token.usage pour afficher un graphique montrant le nombre de jetons que votre application utilise.

      Capture d’écran du tableau de bord .NET Aspire montrant un graphique d’utilisation des jetons.

  4. Arrêtez le proxy de développement en appuyant sur Ctrl + C dans le terminal où il est en cours d’exécution.

Comprendre les coûts du modèle de langage

Le proxy de développement prend en charge l’estimation des coûts liés à l’utilisation de modèles de langage. Pour permettre au proxy de développement d’estimer les coûts, vous devez fournir des informations sur les prix des modèles que vous utilisez.

Créer un fichier de prix

  1. Dans le même dossier où vous avez créé le fichier de configuration du proxy de développement, créez un fichier nommé prices.json.

  2. Ajoutez le contenu suivant au fichier :

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

    Important

    La clé est le nom du modèle de langage. Les propriétés input et output sont les prix par million de jetons pour les jetons d'entrée et de sortie. Si vous utilisez un modèle pour lequel il n’existe aucune information sur les prix, le proxy de développement ne journalise pas les métriques de coût.

  3. Enregistrez vos modifications.

  4. Dans l’éditeur de code, ouvrez le fichier de configuration du proxy de développement.

  5. Étendez la OpenAITelemetryPlugin référence avec une section de configuration :

    {
      "$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. Ajoutez la openAITelemetryPlugin section au fichier de configuration :

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

    Notez que la propriété includeCosts est définie sur true et que la propriété pricesFile est définie sur le nom du fichier avec des informations sur les prix.

  7. Enregistrez vos modifications.

Afficher les coûts estimés

  1. Démarrez le proxy de développement.

  2. Effectuez une demande au point de terminaison compatible OpenAI que vous avez configuré pour que le Dev Proxy intercepte.

  3. Dans le navigateur web, accédez au tableau de bord OpenTelemetry.

    1. Dans le volet latéral, sélectionnez Métriques.

    2. Dans la liste déroulante Ressource , sélectionnez DevProxy.OpenAI.

    3. Dans la liste des métriques, sélectionnez gen_ai.client.total_cost pour afficher un graphique montrant le coût total estimé que votre application entraîne pour l’utilisation des modèles de langage.

      Capture d’écran du tableau de bord .NET Aspire montrant un graphique du coût estimé du jeton.

  4. Arrêtez le proxy de développement en appuyant sur Ctrl + C dans le terminal où il est en cours d’exécution.

  5. Arrêtez le collecteur OpenTelemetry.

    Dans le terminal où le tableau de bord Aspire .NET est en cours d’exécution, appuyez sur Ctrl + C pour arrêter le tableau de bord. Docker supprime automatiquement le conteneur lorsque vous l’arrêtez.

Étapes suivantes

En savoir plus sur OpenAITelemetryPlugin.