Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'uso dei modelli linguistici comporta costi. Per comprendere come l'applicazione usa modelli linguistici di grandi dimensioni, usare Dev Proxy per intercettare richieste e risposte compatibili con OpenAI. Dev Proxy analizza le richieste e le risposte e registra i dati di telemetria per comprendere in che modo l'applicazione usa modelli linguistici di grandi dimensioni. Queste informazioni consentono di ottimizzare l'applicazione e ridurre i costi.
Dev Proxy registra i dati di utilizzo del modello linguistico in formato OpenTelemetry. È possibile usare qualsiasi dashboard compatibile con OpenTelemetry per visualizzare i dati. Ad esempio, è possibile usare il dashboard .NET Aspire o OpenLIT. I dati di telemetria includono il numero di token usati nella richiesta e nella risposta, il costo dei token usati e il costo totale di tutte le richieste nel corso di una sessione.
Intercettare richieste e risposte compatibili con OpenAI con Dev Proxy
Per intercettare le richieste e le risposte compatibili con OpenAII, usare OpenAITelemetryPlugin. Questo plug-in registra i dati di telemetria dalle richieste e dalle risposte compatibili con OpenAI che intercetta ed emette dati OpenTelemetry.
Creare un file di configurazione del proxy di sviluppo
Creare un nuovo file di configurazione di Dev Proxy usando il
devproxy config newcomando o l'estensione Dev Proxy Toolkit.Aggiungere l'oggetto
OpenAITelemetryPluginal file di configurazione.{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.0.0/rc.schema.json", "plugins": [ { "name": "OpenAITelemetryPlugin", "enabled": true, "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll" } ], "urlsToWatch": [ ], "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }Configurare la
urlsToWatchproprietà per includere gli URL delle richieste compatibili con OpenAI che si desidera intercettare. L'esempio seguente intercetta le richieste ai completamenti della chat OpenAI di Azure.{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.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 }Salvare le modifiche.
Avviare il collettore OpenTelemetry e il proxy di sviluppo
Importante
Sia .NET Aspire che OpenLIT richiedono l'esecuzione di Docker. Se Docker non è installato, seguire le istruzioni nella documentazione di Docker per installare Docker .
Avvia Docker.
Avviare il collettore OpenTelemetry.
Eseguire il comando seguente per avviare l'agente di raccolta e il dashboard .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:latestAnnotazioni
Al termine dell'uso del dashboard .NET Aspire, arrestare il dashboard premendo CTRL + C nel terminale in cui è stato avviato il dashboard. Docker rimuove automaticamente il contenitore quando lo arresti.
Aprire il dashboard .NET Aspire nel browser all'indirizzo
http://localhost:18888/login?t=<code>.
Per avviare Dev Proxy, modificare la directory di lavoro nella cartella in cui è stato creato il file di configurazione del proxy di sviluppo ed eseguire il comando seguente:
devproxy
Usare il modello linguistico ed esaminare i dati di telemetria
Effettuare una richiesta all'endpoint compatibile con OpenAI che hai configurato per l'intercettazione con Dev Proxy.
Verificare che Dev Proxy abbia intercettato la richiesta e la risposta. Nella console, in cui è in esecuzione Dev Proxy, dovrebbero essere visualizzate informazioni simili:
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 emittedNel browser web, passare al dashboard di OpenTelemetry.
Dal menu laterale selezionare Tracce.
Selezionare una delle tracce denominate
DevProxy.OpenAI.Selezionare l'intervallo di richieste.
Nel pannello laterale esplorare i dati di utilizzo del modello linguistico.
Nel pannello laterale passare a Metriche.
Nell'elenco a discesa Risorsa selezionare DevProxy.OpenAI.
Nell'elenco delle metriche selezionare gen_ai.client.token.usage per visualizzare un grafico che mostra il numero di token usati dall'applicazione.
Arrestare Dev Proxy premendo CTRL + C nel terminale in cui è in esecuzione.
Informazioni sui costi del modello linguistico
Dev Proxy supporta la stima dei costi dell'uso dei modelli linguistici. Per consentire a Dev Proxy di stimare i costi, è necessario fornire informazioni sui prezzi per i modelli usati.
Creare un file dei prezzi
Nella stessa cartella in cui è stato creato il file di configurazione di Dev Proxy creare un nuovo file denominato
prices.json.Aggiungere il seguente contenuto nel file:
{ "$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 } } }Importante
La chiave è il nome del modello linguistico. Le proprietà
inputeoutputsono i prezzi per milione di token dei token di input e di output. Se si usa un modello per cui non sono disponibili informazioni sui prezzi, Dev Proxy non registra le metriche dei costi.Salvare le modifiche.
Nell'editor di codice aprire il file di configurazione di Dev Proxy.
Estendi il
OpenAITelemetryPluginriferimento con una sezione di configurazione:{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.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 }Aggiungere la
openAITelemetryPluginsezione al file di configurazione:{ "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v1.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/v1.0.0/openaitelemetryplugin.schema.json", "includeCosts": true, "pricesFile": "prices.json" }, "logLevel": "information", "newVersionNotification": "stable", "showSkipMessages": true }Si noti che la proprietà
includeCostsè impostata sutruee la proprietàpricesFileè impostata sul nome del file con le informazioni sui prezzi.Salvare le modifiche.
Visualizzare i costi stimati
Avviare il proxy di sviluppo.
Effettuare una richiesta all'endpoint compatibile con OpenAI che hai configurato per l'intercettazione con Dev Proxy.
Nel browser web, passare al dashboard di OpenTelemetry.
Arrestare Dev Proxy premendo CTRL + C nel terminale in cui è in esecuzione.
Arrestare l'agente di raccolta OpenTelemetry.
Nel terminale in cui è in esecuzione il dashboard .NET Aspire premere CTRL + C per arrestare il dashboard. Docker rimuove automaticamente il contenitore quando lo arresti.
Passaggi successivi
Altre informazioni su OpenAITelemetryPlugin.