Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
O uso de modelos de linguagem gera custos. Para entender como seu aplicativo usa modelos de linguagem grandes, use o Proxy de Desenvolvimento para interceptar solicitações e respostas compatíveis com OpenAI. O Proxy de Desenvolvimento analisa as solicitações e respostas e registra dados de telemetria para ajudá-lo a entender como seu aplicativo usa modelos de linguagem grandes. Essas informações permitem otimizar seu aplicativo e reduzir custos.
O Dev Proxy registra dados de uso do modelo de linguagem no formato OpenTelemetry. Você pode usar qualquer painel compatível com OpenTelemetry para visualizar os dados. Por exemplo, você pode usar o painel do .NET Aspire ou o OpenLIT. Os dados de telemetria incluem o número de tokens usados na solicitação e resposta, o custo dos tokens usados e o custo total de todas as solicitações ao longo de uma sessão.
Interceptar solicitações e respostas compatíveis com OpenAI usando o Proxy de Desenvolvimento
Para interceptar solicitações e respostas compatíveis com OpenAI, use OpenAITelemetryPlugin. Este plug-in registra dados de telemetria das solicitações e respostas que são compatíveis com OpenAI, intercepta essas informações e emite dados de OpenTelemetry.
Criar um arquivo de configuração do Proxy de Desenvolvimento
Crie um novo arquivo de configuração do Proxy de Desenvolvimento usando o
devproxy config newcomando ou usando a extensão do Kit de Ferramentas de Proxy de Desenvolvimento.Adicione o
OpenAITelemetryPluginno arquivo de configuração.{ "$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 }Configure a
urlsToWatchpropriedade para incluir as URLs das solicitações compatíveis com OpenAI que você deseja interceptar. O exemplo a seguir intercepta solicitações para conclusões de chat do Azure OpenAI.{ "$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 }Salve suas alterações.
Iniciar o coletor OpenTelemetry e o Proxy de Desenvolvimento
Importante
O .NET Aspire e o OpenLIT exigem que o Docker seja executado. Se você não tiver o Docker instalado, siga as instruções na documentação do Docker para instalar o Docker.
Inicie o Docker.
Inicie o coletor OpenTelemetry.
Execute o seguinte comando para iniciar o coletor e o painel do .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:latestObservação
Quando terminar de usar o painel do .NET Aspire, interrompa o painel pressionando Ctrl + C no terminal em que você iniciou o painel. O Docker remove automaticamente o contêiner quando você o interrompe.
Abra o painel do .NET Aspire no navegador em
http://localhost:18888/login?t=<code>.
Para iniciar o Proxy de Desenvolvimento, altere o diretório de trabalho para a pasta em que você criou o arquivo de configuração do Proxy de Desenvolvimento e execute o seguinte comando:
devproxy
Usar o modelo de linguagem e inspecionar dados de telemetria
Faça uma solicitação para o endpoint compatível com OpenAI que o Proxy de Desenvolvimento está configurado para interceptar.
Verifique se o Proxy de Desenvolvimento interceptou a solicitação e a resposta. No console, em que o Proxy de Desenvolvimento está em execução, você deverá ver informações semelhantes:
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 emittedNo navegador da Web, navegue até o painel OpenTelemetry.
No menu lateral, selecione Rastreamentos.
Selecione um dos traços nomeados
DevProxy.OpenAI.Selecione o intervalo de solicitação.
No painel lateral, explore os dados de uso do modelo de linguagem.
No painel lateral, alterne para Métricas.
Na lista suspensa Recursos , selecione DevProxy.OpenAI.
Na lista de métricas, selecione gen_ai.client.token.usage para ver um gráfico mostrando o número de tokens que seu aplicativo usa.
Pare o Proxy de Desenvolvimento pressionando Ctrl + C no terminal em que ele está em execução.
Entender os custos do modelo de linguagem
O Dev Proxy apoia a estimativa dos custos de uso de modelos de linguagem. Para permitir que o Proxy de Desenvolvimento estime os custos, você precisa fornecer informações sobre os preços dos modelos usados.
Criar um arquivo de preços
Na mesma pasta em que você criou o arquivo de configuração do Proxy de Desenvolvimento, crie um novo arquivo chamado
prices.json.Adicione o seguinte conteúdo ao arquivo:
{ "$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
A chave é o nome do modelo de idioma. As propriedades
inputeoutputrepresentam os preços por milhão de tokens para tokens de entrada e saída. Se você usar um modelo para o qual não há informações de preço, o Proxy Dev não registrará as métricas de custo.Salve suas alterações.
No editor de código, abra o arquivo de configuração do Proxy de Desenvolvimento.
Estenda a referência
OpenAITelemetryPlugincom uma seção de configuração.{ "$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 }Adicione a
openAITelemetryPluginseção ao arquivo de configuração:{ "$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 }Observe a propriedade
includeCostsdefinida comotruee a propriedadepricesFiledefinida como o nome do arquivo com informações de preços.Salve suas alterações.
Exibir custos estimados
Iniciar o Proxy de Desenvolvimento.
Faça uma solicitação para o endpoint compatível com OpenAI que o Proxy de Desenvolvimento está configurado para interceptar.
No navegador da Web, navegue até o painel OpenTelemetry.
Pare o Proxy de Desenvolvimento pressionando Ctrl + C no terminal em que ele está em execução.
Pare o coletor OpenTelemetry.
No terminal em que o painel do .NET Aspire está em execução, pressione Ctrl + C para interromper o painel. O Docker remove automaticamente o contêiner quando você o interrompe.
Próximas etapas
Saiba mais sobre o OpenAITelemetryPlugin.