Aracılığıyla paylaş


Dil modeli kullanımını anlama

Bir bakışta
Hedef: OpenTelemetry ile LLM kullanımını izleme
Süre: 20 dakika
Eklentiler:OpenAITelemetryPlugin
Önkoşullar:Geliştirme Proxy'sini ayarlama, Docker

Dil modellerinin kullanılması maliyete neden olur. Uygulamanızın büyük dil modellerini nasıl kullandığını anlamak için, OpenAI uyumlu istekleri ve yanıtları kesmek için Dev Proxy kullanın. Dev Proxy, uygulamanızın büyük dil modellerini nasıl kullandığını anlamanıza yardımcı olmak için istekleri ve yanıtları analiz eder ve telemetri verilerini günlüğe kaydeder. Bu bilgiler uygulamanızı iyileştirmenize ve maliyetleri azaltmanıza olanak tanır.

Geliştirme Proxy'si, dil modeli kullanım verilerini OpenTelemetry formatında kaydeder. Verileri görselleştirmek için OpenTelemetry uyumlu herhangi bir panoyu kullanabilirsiniz. Örneğin, .NET Aspire panosunu veya OpenLIT'i kullanabilirsiniz. Telemetri verileri istek ve yanıtta kullanılan belirteç sayısını, kullanılan belirteçlerin maliyetini ve oturum boyunca tüm isteklerin toplam maliyetini içerir.

Dev Proxy kullanarak OpenAI uyumlu istekleri ve yanıtları kesme

OpenAI uyumlu istekleri ve yanıtları kesmek için OpenAITelemetryPlugin'i kullanın. Bu eklenti, araya girdiği ve yakaladığı OpenAI uyumlu istek ve yanıtlardan telemetri verilerini günlüğe kaydeder ve OpenTelemetry verilerini yayar.

Dev Proxy yapılandırma dosyası oluşturma

  1. komutunu veya Dev Proxy Toolkit uzantısını devproxy config new kullanarak yeni bir Dev Proxy yapılandırma dosyası oluşturun.

  2. öğesini OpenAITelemetryPlugin yapılandırma dosyasına ekleyin.

    Dosya: devproxyrc.json

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.0.0/rc.schema.json",
      "plugins": [
        {
          "name": "OpenAITelemetryPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
        }
      ],
      "urlsToWatch": [
      ],
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    
  3. Özellik ayarlarını, engellemek istediğiniz OpenAI uyumlu isteklerin URL'lerini içerecek şekilde yapılandırın. Aşağıdaki örnek, Azure OpenAI sohbet tamamlama isteklerine müdahale eder.

    Dosya: devproxyrc.json (Azure OpenAI URL'leri ile)

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.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. Değişikliklerinizi kaydedin.

OpenTelemetry toplayıcısını ve Dev Proxy'yi başlatma

Önemli

Hem .NET Aspire hem de OpenLIT, Docker'ın çalışmasını gerektirir. Docker yüklü değilse Docker'ı yüklemek için Docker belgelerindeki yönergeleri izleyin.

  1. Docker'ı başlatın.

  2. OpenTelemetry toplayıcısını başlatın.

    1. .NET Aspire OpenTelemetry toplayıcısını ve panosunu başlatmak için aşağıdaki komutu çalıştırın:

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

      Uyarı

      .NET Aspire panosunu kullanmayı bitirdiğinizde, panoyu başlattığınız terminalde Ctrl + C tuşlarına basarak panoyu durdurun. Docker, kapsayıcıyı durdurduğunuzda otomatik olarak kaldırır.

    2. Tarayıcınızda http://localhost:18888/login?t=<code> adresinde .NET Aspire panosunu açın.

  3. Dev Proxy'yi başlatmak için çalışma dizinini Dev Proxy yapılandırma dosyasını oluşturduğunuz klasörle değiştirin ve aşağıdaki komutu çalıştırın:

    devproxy
    

Dil modelini kullanma ve telemetri verilerini inceleme

  1. Dev Proxy'yi isteği yakalamak için yapılandırdığınız OpenAI uyumlu uç noktaya bir istekte bulunun.

  2. Dev Proxy'nin isteği ve yanıtı kestiğini doğrulayın. Dev Proxy'nin çalıştığı konsolda benzer bilgiler görmeniz gerekir:

     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. Web tarayıcısında OpenTelemetry panosuna gidin.

    1. Yan menüden İzlemeler'i seçin.

    2. DevProxy.OpenAI adlı izlerden birini seçin.

    3. İstek aralığını seçin.

    4. Yan panelde dil modeli kullanım verilerini keşfedin.

      OpenAI telemetri verilerini bir zaman aralığında gösteren .NET Aspire panosunun ekran görüntüsü.

    5. Yan panelde Ölçümler'e geçin.

    6. Kaynak açılan listesinde DevProxy.OpenAI öğesini seçin.

    7. Ölçüm listesinden gen_ai.client.token.usage öğesini seçerek uygulamanızın kullandığı belirteç sayısını gösteren bir grafik görüntüleyin.

      Belirteç kullanımı grafiğini gösteren .NET Aspire panosunun ekran görüntüsü.

  4. Çalıştırıldığı terminalde Ctrl + C tuşlarına basarak Dev Proxy'yi durdurun.

Dil modeli maliyetlerini anlama

Dev Proxy, dil modellerini kullanmanın maliyetlerinin tahminini destekler. Dev Proxy'nin maliyetleri tahmin etmesine izin vermek için kullandığınız modellerin fiyatları hakkında bilgi sağlamanız gerekir.

Fiyat dosyası oluşturma

  1. Dev Proxy yapılandırma dosyasını oluşturduğunuz klasörde adlı prices.jsonyeni bir dosya oluşturun.

  2. Dosyaya aşağıdaki içeriği ekleyin:

    Dosya: prices.json

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

    Önemli

    Anahtar, dil modelinin adıdır. input ve output özellikleri, giriş ve çıkış belirteçleri için milyon belirteç başına fiyatlardır. Fiyat bilgisi olmayan bir model kullanıyorsanız Dev Proxy maliyet ölçümlerini günlüğe kaydetmez.

  3. Değişikliklerinizi kaydedin.

  4. Kod düzenleyicisinde Dev Proxy yapılandırma dosyasını açın.

  5. Başvuruyu OpenAITelemetryPlugin bir yapılandırma bölümüyle genişletin.

    Dosya: devproxyrc.json (eklentiye configSection ekleme)

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v2.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. openAITelemetryPlugin Bölümü yapılandırma dosyasına ekleyin:

    Dosya: devproxyrc.json (maliyet izleme ile birlikte)

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

    özelliğinin includeCosts olarak, true özelliğinin pricesFile ise fiyat bilgilerini içeren dosyanın adına ayarlandığına dikkat edin.

  7. Değişikliklerinizi kaydedin.

Tahmini maliyetleri görüntüleme

  1. Geliştirme Proxy'sini başlat.

  2. Dev Proxy'yi isteği yakalamak için yapılandırdığınız OpenAI uyumlu uç noktaya bir istekte bulunun.

  3. Web tarayıcısında OpenTelemetry panosuna gidin.

    1. Yan panelden Ölçümler'i seçin.

    2. Kaynak açılan listesinde DevProxy.OpenAI öğesini seçin.

    3. Ölçüm listesinden gen_ai.client.total_cost öğesini seçerek uygulamanızın dil modellerini kullanmak için tahakkuk eden tahmini toplam maliyeti gösteren grafiği görüntüleyin.

      Tahmini jeton maliyeti grafiğini gösteren .NET Aspire panosu ekran görüntüsü.

  4. Çalıştırıldığı terminalde Ctrl + C tuşlarına basarak Dev Proxy'yi durdurun.

  5. OpenTelemetry toplayıcısını durdurun.

    .NET Aspire panosunun çalıştığı terminalde, panoyudurdurmak için Ctrl + C tuşlarına basın. Docker, kapsayıcıyı durdurduğunuzda otomatik olarak kaldırır.

Sonraki Adımlar

OpenAITelemetryPlugin hakkında daha fazla bilgi edinin.