言語モデルを使用すると、コストが発生します。 アプリケーションで大規模な言語モデルがどのように使用されているかを理解するには、Dev Proxy を使用して OpenAI と互換性のある要求と応答をインターセプトします。 Dev Proxy は、要求と応答を分析し、テレメトリ データをログに記録して、アプリケーションで大規模な言語モデルがどのように使用されているかを理解するのに役立ちます。 この情報を使用すると、アプリケーションを最適化し、コストを削減できます。
Dev Proxy は、OpenTelemetry 形式で言語モデルの使用状況データをログに記録します。 OpenTelemetry と互換性のあるダッシュボードを使用して、データを視覚化できます。 たとえば、 .NET アスパイア ダッシュボード または OpenLIT を使用できます。 テレメトリ データには、要求と応答で使用されるトークンの数、使用されたトークンのコスト、セッション全体のすべての要求の合計コストが含まれます。
開発プロキシを使用して OpenAI 互換の要求と応答をインターセプトする
OpenAI 互換の要求と応答をインターセプトするには、 OpenAITelemetryPlugin を使用します。 このプラグインは、OpenTELemetry データをインターセプトして出力する OpenAI 互換の要求と応答からのテレメトリ データをログに記録します。
開発プロキシ構成ファイルを作成する
devproxy config new
コマンドまたは Dev Proxy Toolkit 拡張機能を使用して、新しい開発プロキシ構成ファイルを作成します。構成ファイルに
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 }
インターセプトする 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 }
変更を保存します。
OpenTelemetry コレクターと開発プロキシを起動する
Von Bedeutung
.NET アスパイアと OpenLIT の両方で Docker を実行する必要があります。 Docker がインストールされていない場合は、 Docker ドキュメント の指示に従って Docker をインストールします。
Docker を起動します。
OpenTelemetry コレクターを起動します。
次のコマンドを実行して、.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 によって自動的に削除されます。
ブラウザーの
http://localhost:18888/login?t=<code>
で .NET Aspire ダッシュボードを開きます。
開発プロキシを起動するには、作業ディレクトリを開発プロキシ構成ファイルを作成したフォルダーに変更し、次のコマンドを実行します。
devproxy
言語モデルを使用してテレメトリ データを検査する
インターセプトするように開発プロキシを構成した OpenAI 互換エンドポイントに要求を行います。
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
Web ブラウザーで、OpenTelemetry ダッシュボードに移動します。
実行されているターミナルで Ctrl + キーを押して、開発プロキシを停止します。
言語モデルのコストを理解する
開発プロキシでは、言語モデルの使用コストの見積もりがサポートされています。 開発プロキシがコストを見積もることができるようにするには、使用するモデルの価格に関する情報を提供する必要があります。
価格ファイルを作成する
開発プロキシ構成ファイルを作成したのと同じフォルダーに、
prices.json
という名前の新しいファイルを作成します。次の内容をファイルに追加します。
{ "$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 はコスト メトリックをログに記録しません。変更を保存します。
コード エディターで、開発プロキシ構成ファイルを開きます。
構成セクションを使用して
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 }
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
プロパティが価格情報を含むファイルの名前に設定されていることに注意してください。変更を保存します。
推定コストを表示する
開発プロキシを起動します。
インターセプトするように開発プロキシを構成した OpenAI 互換エンドポイントに要求を行います。
Web ブラウザーで、OpenTelemetry ダッシュボードに移動します。
実行されているターミナルで Ctrl + キーを押して、開発プロキシを停止します。
OpenTelemetry コレクターを停止します。
次のステップ
OpenAITelemetryPlugin の詳細を確認します。
Dev Proxy