Dela via


Förstå språkmodellanvändning

Att använda språkmodeller medför kostnader. Om du vill förstå hur ditt program använder stora språkmodeller använder du Dev Proxy för att fånga upp OpenAI-kompatibla begäranden och svar. Dev Proxy analyserar telemetridata för begäranden och svar och loggar för att hjälpa dig att förstå hur ditt program använder stora språkmodeller. Med den här informationen kan du optimera ditt program och minska kostnaderna.

Dev Proxy loggar språkmodellanvändningsdata i OpenTelemetry-format. Du kan använda valfri OpenTelemetry-kompatibel instrumentpanel för att visualisera data. Du kan till exempel använda .NET Aspire-instrumentpanelen eller OpenLIT. Telemetridata innehåller antalet token som används i begäran och svaret, kostnaden för de token som används och den totala kostnaden för alla begäranden under en session.

Fånga upp OpenAI-kompatibla begäranden och svar med Dev Proxy

Om du vill fånga upp OpenAI-kompatibla begäranden och svar använder du OpenAITelemetryPlugin. Det här plugin-programmet loggar telemetridata från OpenAI-kompatibla begäranden och svar som den fångar upp och genererar OpenTelemetry-data.

Skapa en Dev Proxy-konfigurationsfil

  1. Skapa en ny Dev Proxy-konfigurationsfil med kommandot devproxy config new eller med tillägget Dev Proxy Toolkit.

  2. Lägg till OpenAITelemetryPlugin i konfigurationsfilen.

    {
      "$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. Konfigurera egenskapen urlsToWatch så att den innehåller URL:erna för de OpenAI-kompatibla begäranden som du vill fånga upp. I följande exempel fångas begäranden upp till Azure OpenAI-chattens slutföranden.

    {
      "$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. Spara ändringarna.

Starta OpenTelemetry-insamlaren och Dev Proxy

Viktigt!

Både .NET Aspire och OpenLIT kräver att Docker körs. Om du inte har Docker installerat följer du anvisningarna i Docker-dokumentationen för att installera Docker.

  1. Starta Docker.

  2. Starta OpenTelemetry-insamlaren.

    1. Kör följande kommando för att starta .NET Aspire OpenTelemetry-insamlaren och instrumentpanelen:

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

      Anmärkning

      När du är klar med .NET Aspire-instrumentpanelen stoppar du instrumentpanelen genom att trycka på Ctrl + C i terminalen där du startade instrumentpanelen. Docker tar automatiskt bort containern när du stoppar den.

    2. Öppna instrumentpanelen .NET Aspire i webbläsaren på http://localhost:18888/login?t=<code>.

  3. Om du vill starta Dev Proxy ändrar du arbetskatalogen till mappen där du skapade dev proxy-konfigurationsfilen och kör följande kommando:

    devproxy
    

Använda språkmodell och inspektera telemetridata

  1. Skicka en begäran till den OpenAI-kompatibla slutpunkten som du konfigurerade Dev Proxy för att fånga upp.

  2. Kontrollera att Dev Proxy snappade upp begäran och svaret. I konsolen, där Dev Proxy körs, bör du se liknande information:

     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. I webbläsaren navigerar du till instrumentpanelen OpenTelemetry.

    1. På sidomenyn väljer du Spårningar.

    2. Välj en av spårningarna med namnet DevProxy.OpenAI.

    3. Välj begärandeintervallet.

    4. I sidopanelen utforskar du användningsdata för språkmodellen.

      Skärmbild av .NET Aspire-instrumentpanelen som visar OpenAI-telemetridata inom ett intervall.

    5. I sidopanelen växlar du till Mått.

    6. I listrutan Resurs väljer du DevProxy.OpenAI.

    7. I listan med mått väljer du gen_ai.client.token.usage för att se ett diagram som visar antalet token som programmet använder.

      Skärmbild av instrumentpanelen .NET Aspire som visar ett diagram över tokenanvändning.

  4. Stoppa Dev Proxy genom att trycka på Ctrl + C i terminalen där den körs.

Förstå kostnader för språkmodeller

Dev Proxy stöder beräkning av kostnaderna för att använda språkmodeller. För att dev proxy ska kunna beräkna kostnaderna måste du ange information om priserna för de modeller som du använder.

Skapa en prisfil

  1. I samma mapp där du skapade dev proxy-konfigurationsfilen skapar du en ny fil med namnet prices.json.

  2. Lägg till följande innehåll i filen:

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

    Viktigt!

    Nyckeln är namnet på språkmodellen. Egenskaperna input och output är priserna per miljon token för indata- och utdatatoken. Om du använder en modell där det inte finns någon prisinformation loggar Dev Proxy inte kostnadsmåtten.

  3. Spara ändringarna.

  4. Öppna konfigurationsfilen dev proxy i kodredigeraren.

  5. Utöka referensen OpenAITelemetryPlugin med ett konfigurationsavsnitt:

    {
      "$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. Lägg till avsnittet openAITelemetryPlugin i konfigurationsfilen:

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

    Observera egenskapen includeCosts inställd på true och egenskapen pricesFile inställd på namnet på filen med prisinformation.

  7. Spara ändringarna.

Visa uppskattade kostnader

  1. Starta Dev Proxy.

  2. Skicka en begäran till den OpenAI-kompatibla slutpunkten som du konfigurerade Dev Proxy för att fånga upp.

  3. I webbläsaren navigerar du till instrumentpanelen OpenTelemetry.

    1. Välj Mått på sidopanelen.

    2. I listrutan Resurs väljer du DevProxy.OpenAI.

    3. I listan med mått väljer du gen_ai.client.total_cost för att se ett diagram som visar den uppskattade totala kostnaden som programmet medför för att använda språkmodellerna.

      Skärmbild av instrumentpanelen för .NET Aspire som visar ett diagram över uppskattad tokenkostnad.

  4. Stoppa Dev Proxy genom att trycka på Ctrl + C i terminalen där den körs.

  5. Stoppa OpenTelemetry-samlaren.

    I terminalen där .NET Aspire-instrumentpanelen körs trycker du på Ctrl + C för att stoppa instrumentpanelen. Docker tar automatiskt bort containern när du stoppar den.

Nästa steg

Läs mer om OpenAITelemetryPlugin.