Compartilhar via


Entender o uso do modelo de linguagem

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

  1. Crie um novo arquivo de configuração do Proxy de Desenvolvimento usando o devproxy config new comando ou usando a extensão do Kit de Ferramentas de Proxy de Desenvolvimento.

  2. Adicione o OpenAITelemetryPlugin no 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
    }
    
  3. Configure a urlsToWatch propriedade 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
    }
    
  4. 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.

  1. Inicie o Docker.

  2. Inicie o coletor OpenTelemetry.

    1. 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:latest
      

      Observaçã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.

    2. Abra o painel do .NET Aspire no navegador em http://localhost:18888/login?t=<code>.

  3. 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

  1. Faça uma solicitação para o endpoint compatível com OpenAI que o Proxy de Desenvolvimento está configurado para interceptar.

  2. 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 emitted
    
  3. No navegador da Web, navegue até o painel OpenTelemetry.

    1. No menu lateral, selecione Rastreamentos.

    2. Selecione um dos traços nomeados DevProxy.OpenAI.

    3. Selecione o intervalo de solicitação.

    4. No painel lateral, explore os dados de uso do modelo de linguagem.

      Captura de tela do painel do .NET Aspire mostrando dados de telemetria da OpenAI em uma faixa.

    5. No painel lateral, alterne para Métricas.

    6. Na lista suspensa Recursos , selecione DevProxy.OpenAI.

    7. 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.

      Captura de tela do painel do .NET Aspire mostrando um gráfico de uso de token.

  4. 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

  1. Na mesma pasta em que você criou o arquivo de configuração do Proxy de Desenvolvimento, crie um novo arquivo chamado prices.json.

  2. 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 input e output representam 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.

  3. Salve suas alterações.

  4. No editor de código, abra o arquivo de configuração do Proxy de Desenvolvimento.

  5. Estenda a referência OpenAITelemetryPlugin com 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
    }
    
  6. Adicione a openAITelemetryPlugin seçã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 includeCosts definida como true e a propriedade pricesFile definida como o nome do arquivo com informações de preços.

  7. Salve suas alterações.

Exibir custos estimados

  1. Iniciar o Proxy de Desenvolvimento.

  2. Faça uma solicitação para o endpoint compatível com OpenAI que o Proxy de Desenvolvimento está configurado para interceptar.

  3. No navegador da Web, navegue até o painel OpenTelemetry.

    1. No painel lateral, selecione Métricas.

    2. Na lista suspensa Recursos , selecione DevProxy.OpenAI.

    3. Na lista de métricas, selecione gen_ai.client.total_cost para ver um gráfico mostrando o custo total estimado que seu aplicativo incorre no uso dos modelos de linguagem.

      Captura de tela do painel do .NET Aspire mostrando um gráfico de custo estimado do token.

  4. Pare o Proxy de Desenvolvimento pressionando Ctrl + C no terminal em que ele está em execução.

  5. 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.