次の方法で共有


言語モデルの使用方法を理解する

言語モデルを使用すると、コストが発生します。 アプリケーションで大規模な言語モデルがどのように使用されているかを理解するには、Dev Proxy を使用して OpenAI と互換性のある要求と応答をインターセプトします。 Dev Proxy は、要求と応答を分析し、テレメトリ データをログに記録して、アプリケーションで大規模な言語モデルがどのように使用されているかを理解するのに役立ちます。 この情報を使用すると、アプリケーションを最適化し、コストを削減できます。

Dev Proxy は、OpenTelemetry 形式で言語モデルの使用状況データをログに記録します。 OpenTelemetry と互換性のあるダッシュボードを使用して、データを視覚化できます。 たとえば、 .NET アスパイア ダッシュボード または OpenLIT を使用できます。 テレメトリ データには、要求と応答で使用されるトークンの数、使用されたトークンのコスト、セッション全体のすべての要求の合計コストが含まれます。

開発プロキシを使用して OpenAI 互換の要求と応答をインターセプトする

OpenAI 互換の要求と応答をインターセプトするには、 OpenAITelemetryPlugin を使用します。 このプラグインは、OpenTELemetry データをインターセプトして出力する OpenAI 互換の要求と応答からのテレメトリ データをログに記録します。

開発プロキシ構成ファイルを作成する

  1. devproxy config new コマンドまたは Dev Proxy Toolkit 拡張機能を使用して、新しい開発プロキシ構成ファイルを作成します。

  2. 構成ファイルに OpenAITelemetryPlugin を追加します。

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.28.0/rc.schema.json",
      "plugins": [
        {
          "name": "OpenAITelemetryPlugin",
          "enabled": true,
          "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
        }
      ],
      "urlsToWatch": [
      ],
      "logLevel": "information",
      "newVersionNotification": "stable",
      "showSkipMessages": true
    }
    
  3. インターセプトする OpenAI と互換性のある要求の URL を含むように、 urlsToWatch プロパティを構成します。 次の例では、Azure OpenAI チャットコンプリションに対するリクエストをインターセプトします。

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.28.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. 変更を保存します。

OpenTelemetry コレクターと開発プロキシを起動する

Von Bedeutung

.NET アスパイアと OpenLIT の両方で Docker を実行する必要があります。 Docker がインストールされていない場合は、 Docker ドキュメント の指示に従って Docker をインストールします。

  1. Docker を起動します。

  2. OpenTelemetry コレクターを起動します。

    1. 次のコマンドを実行して、.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
      

      .NET アスパイア ダッシュボードの使用が完了したら、ダッシュボードを開始したターミナルで Ctrl + C キーを押してダッシュボードを停止します。 コンテナーを停止すると、Docker によって自動的に削除されます。

    2. ブラウザーの http://localhost:18888/login?t=<code> で .NET Aspire ダッシュボードを開きます。

  3. 開発プロキシを起動するには、作業ディレクトリを開発プロキシ構成ファイルを作成したフォルダーに変更し、次のコマンドを実行します。

    devproxy
    

言語モデルを使用してテレメトリ データを検査する

  1. インターセプトするように開発プロキシを構成した OpenAI 互換エンドポイントに要求を行います。

  2. Dev Proxy が要求と応答をインターセプトしたことを確認します。 開発プロキシが実行されているコンソールには、次のような情報が表示されます。

     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 ブラウザーで、OpenTelemetry ダッシュボードに移動します。

    1. サイド メニューから[トレース]を選択 します

    2. DevProxy.OpenAIという名前のトレースのいずれかを選択します。

    3. 要求スパンを選択します。

    4. サイド パネルで、言語モデルの使用状況データを調べます。

      スパン内の OpenAI テレメトリ データを示す .NET アスパイア ダッシュボードのスクリーンショット。

    5. サイド パネルで、[ メトリック] に切り替えます。

    6. [リソース] ドロップダウン リストから DevProxy.OpenAI を選択します。

    7. メトリックの一覧から gen_ai.client.token.usage を選択すると、アプリケーションで使用されるトークンの数を示すグラフが表示されます。

      トークンの使用状況のグラフを示す .NET アスパイア ダッシュボードのスクリーンショット。

  4. 実行されているターミナルで Ctrl + キーを押して、開発プロキシを停止します。

言語モデルのコストを理解する

開発プロキシでは、言語モデルの使用コストの見積もりがサポートされています。 開発プロキシがコストを見積もることができるようにするには、使用するモデルの価格に関する情報を提供する必要があります。

価格ファイルを作成する

  1. 開発プロキシ構成ファイルを作成したのと同じフォルダーに、 prices.jsonという名前の新しいファイルを作成します。

  2. 次の内容をファイルに追加します。

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

    Von Bedeutung

    キーは言語モデルの名前です。 inputプロパティとoutput プロパティは、入力トークンと出力トークンの 100 万トークンあたりの価格です。 価格情報がないモデルを使用する場合、Dev Proxy はコスト メトリックをログに記録しません。

  3. 変更を保存します。

  4. コード エディターで、開発プロキシ構成ファイルを開きます。

  5. 構成セクションを使用して OpenAITelemetryPlugin 参照を拡張します。

    {
      "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.28.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. openAITelemetryPlugin セクションを構成ファイルに追加します。

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

    includeCostsプロパティがtrueに設定され、pricesFile プロパティが価格情報を含むファイルの名前に設定されていることに注意してください。

  7. 変更を保存します。

推定コストを表示する

  1. 開発プロキシを起動します。

  2. インターセプトするように開発プロキシを構成した OpenAI 互換エンドポイントに要求を行います。

  3. Web ブラウザーで、OpenTelemetry ダッシュボードに移動します。

    1. サイド パネルで、[ メトリック] を選択します。

    2. [リソース] ドロップダウン リストから DevProxy.OpenAI を選択します。

    3. メトリックの一覧から gen_ai.client.total_cost を選択すると、アプリケーションが言語モデルを使用するために発生する推定合計コストを示すグラフが表示されます。

      推定トークン コストのグラフを示す .NET アスパイア ダッシュボードのスクリーンショット。

  4. 実行されているターミナルで Ctrl + キーを押して、開発プロキシを停止します。

  5. OpenTelemetry コレクターを停止します。

    .NET アスパイア ダッシュボードが実行されているターミナルで、Ctrl + キーを押してダッシュボードを停止します。 コンテナーを停止すると、Docker によって自動的に削除されます。

次のステップ

OpenAITelemetryPlugin の詳細を確認します。