Sdílet prostřednictvím


Vysvětlení využití jazykového modelu

Na první pohled
Cílem: Monitorování využití LLM pomocí OpenTelemetry
Čas: 20 minut
Pluginy:OpenAITelemetryPlugin
Požadavky:Nastavení dev proxy serveru, Dockeru

Používání jazykových modelů nese náklady. Abyste pochopili, jak vaše aplikace používá velké jazykové modely, použijte dev Proxy k zachycení požadavků a odpovědí kompatibilních s OpenAI. Dev Proxy analyzuje požadavky a odpovědi a protokoluje telemetrická data, abyste pochopili, jak vaše aplikace používá velké jazykové modely. Tyto informace vám umožní optimalizovat aplikaci a snížit náklady.

Dev Proxy protokoluje data o využití jazykového modelu ve formátu OpenTelemetry. K vizualizaci dat můžete použít libovolný řídicí panel kompatibilní s OpenTelemetry. Můžete například použít řídicí panel .NET Aspire nebo OpenLIT. Telemetrická data zahrnují počet tokenů použitých v požadavku a odpovědi, náklady na použité tokeny a celkové náklady na všechny požadavky v průběhu relace.

Zachycení požadavků a odpovědí kompatibilních s OpenAI pomocí dev proxy serveru

K zachycení požadavků a odpovědí kompatibilních s OpenAI použijte OpenAITelemetryPlugin. Tento plug-in zaznamenává telemetrická data z požadavků kompatibilních s OpenAI a zachycených odpovědí a generuje data ve formátu OpenTelemetry.

Vytvoření konfiguračního souboru dev proxy

  1. Pomocí příkazu devproxy config new vytvořte nový konfigurační soubor Dev Proxy, nebo použijte rozšíření Dev Proxy Toolkit.

  2. Přidejte soubor OpenAITelemetryPlugin do konfiguračního souboru.

    Soubor: devproxyrc.json

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.0/rc.schema.json",
      "plugins": [
        {
          "name": "OpenAITelemetryPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
        }
      ],
      "urlsToWatch": [
      ],
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    
  3. urlsToWatch Nakonfigurujte vlastnost tak, aby zahrnovala adresy URL požadavků kompatibilních s OpenAI, které chcete zachytit. Následující příklad zachytí požadavky na dokončení chatu Azure OpenAI.

    Soubor: devproxyrc.json (s adresami URL Azure OpenAI)

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.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. Uložte změny.

Spusťte OpenTelemetry kolektor a dev proxy

Důležité

Rozhraní .NET Aspire i OpenLIT vyžadují spuštění Dockeru. Pokud nemáte Nainstalovaný Docker, nainstalujte Docker podle pokynů v dokumentaci k Dockeru .

  1. Spusťte Docker.

  2. Spusťte kolektor OpenTelemetry.

    1. Spuštěním následujícího příkazu spusťte kolekci a řídicí panel .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
      

      Poznámka:

      Po dokončení používání řídicího panelu .NET Aspire zastavte řídicí panel stisknutím kláves Ctrl + C v terminálu, kde jste řídicí panel spustili. Docker automaticky odebere kontejner, když ho zastavíte.

    2. Otevřete řídicí panel .NET Aspire v prohlížeči na adrese http://localhost:18888/login?t=<code>.

  3. Pokud chcete spustit Dev Proxy, změňte pracovní adresář na složku, ve které jste vytvořili konfigurační soubor dev proxy serveru, a spusťte následující příkaz:

    devproxy
    

Použití jazykového modelu a kontrola telemetrických dat

  1. Odešlete požadavek na koncový bod kompatibilní s OpenAI, který jste nakonfigurovali tak, aby ho Dev Proxy zachytil.

  2. Ověřte, že dev Proxy zachycoval požadavek a odpověď. V konzole, kde je spuštěný dev proxy server, by se měly zobrazit podobné informace:

     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. Ve webovém prohlížeči přejděte na řídicí panel OpenTelemetry.

    1. V boční nabídce vyberte Stopy.

    2. Vyberte jednu z tras pojmenovanou DevProxy.OpenAI.

    3. Vyberte rozsah požadavků.

    4. Na bočním panelu prozkoumejte data o využití jazykového modelu.

      Snímek obrazovky řídicího panelu .NET Aspire zobrazující telemetrická data OpenAI v rozsahu

    5. Na bočním panelu přepněte na Metriky.

    6. V rozevíracím seznamu Prostředek vyberte DevProxy.OpenAI.

    7. V seznamu metrik vyberte gen_ai.client.token.usage a zobrazte graf zobrazující počet tokenů, které vaše aplikace používá.

      Snímek obrazovky řídicího panelu .NET Aspire zobrazující graf využití tokenů

  4. Zastavte dev Proxy stisknutím kláves Ctrl + C v terminálu, kde je spuštěný.

Vysvětlení nákladů na jazykový model

Dev Proxy podporuje odhad nákladů na používání jazykových modelů. Pokud chcete službě Dev Proxy umožnit odhad nákladů, musíte zadat informace o cenách pro modely, které používáte.

Vytvoření souboru s cenami

  1. Ve stejné složce, ve které jste vytvořili konfigurační soubor dev proxy, vytvořte nový soubor s názvem prices.json.

  2. Do souboru přidejte následující obsah:

    Soubor: prices.json

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

    Důležité

    Klíč je název jazykového modelu. input a output vlastnosti představují ceny za milion tokenů pro vstupní a výstupní tokeny. Pokud používáte model, pro který nejsou k dispozici informace o cenách, Dev Proxy nezaznamenává metriky nákladů.

  3. Uložte změny.

  4. V editoru kódu otevřete konfigurační soubor dev proxy.

  5. Rozšiřte OpenAITelemetryPlugin referenci o konfigurační oddíl:

    Soubor: devproxyrc.json (přidání configSection do modulu plug-in)

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.1.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. Přidejte oddíl openAITelemetryPlugin do konfiguračního souboru:

    Soubor: devproxyrc.json (kompletní se sledováním nákladů)

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

    Všimněte si, že vlastnost includeCosts je nastavena na true a vlastnost pricesFile je nastavena na název souboru s informacemi o cenách.

  7. Uložte změny.

Zobrazení odhadovaných nákladů

  1. Spusťte dev proxy server.

  2. Odešlete požadavek na koncový bod kompatibilní s OpenAI, který jste nakonfigurovali tak, aby ho Dev Proxy zachytil.

  3. Ve webovém prohlížeči přejděte na řídicí panel OpenTelemetry.

    1. Na bočním panelu vyberte Metriky.

    2. V rozevíracím seznamu Prostředek vyberte DevProxy.OpenAI.

    3. V seznamu metrik vyberte gen_ai.client.total_cost a zobrazte graf zobrazující odhadované celkové náklady, které vaše aplikace účtují pro používání jazykových modelů.

      Snímek obrazovky řídicího panelu .NET Aspire zobrazující graf odhadovaných nákladů na tokeny

  4. Zastavte dev Proxy stisknutím kláves Ctrl + C v terminálu, kde je spuštěný.

  5. Zastavte kolektor OpenTelemetry.

    V terminálu, na kterém je spuštěn řídicí panel .NET Aspire, zastavte řídicí panel stisknutím kláves Ctrl + C . Docker automaticky odebere kontejner, když ho zastavíte.

Další kroky

Přečtěte si další informace o OpenAITelemetryPlugin.