Partilhar via


Compreender a utilização do modelo linguístico

A utilização de modelos linguísticos implica custos. Para entender como seu aplicativo usa modelos de linguagem grandes, use o Dev Proxy para intercetar solicitações e respostas compatíveis com OpenAI. O Dev Proxy analisa as solicitações e respostas e registra dados de telemetria para ajudá-lo a entender como seu aplicativo usa modelos de linguagem grandes. Esta informação permite-lhe otimizar a sua aplicação e reduzir custos.

O Dev Proxy registra dados de uso do modelo de idioma no formato OpenTelemetria. 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.

Intercete solicitações e respostas compatíveis com OpenAI usando o Dev Proxy

Para intercetar solicitações e respostas compatíveis com OpenAI, use o OpenAITelemetryPlugin. Este plugin regista dados de telemetria das solicitações e respostas que sejam compatíveis com OpenAI que interceta e emite dados OpenTelemetry.

Criar um arquivo de configuração do Dev Proxy

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

  2. Adicione o OpenAITelemetryPlugin 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"
        }
      ],
      "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 intercetar. O exemplo a seguir interceta solicitações para concluir o 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 Dev Proxy

Importante

Tanto o .NET Aspire quanto 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 , pare o painel pressionando Ctrl + C no terminal onde você iniciou o painel. O Docker remove automaticamente o contêiner quando você o para.

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

  3. Para iniciar o Dev Proxy, altere o diretório de trabalho para a pasta onde você criou o arquivo de configuração do Dev Proxy e execute o seguinte comando:

    devproxy
    

Usar modelo de linguagem e inspecionar dados de telemetria

  1. Faça uma solicitação para o endpoint compatível com OpenAI que configurou o Dev Proxy para intercetar.

  2. Verifique se o Dev Proxy intercetou a solicitação e a resposta. No console, onde o Dev Proxy está sendo executado, você 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 OpenTelemetria.

    1. No menu lateral, selecione Rastreamentos.

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

    3. Selecione a extensão da solicitação.

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

      Captura de tela do painel do .NET Aspire mostrando dados de telemetria OpenAI em uma extensão.

    5. No painel lateral, selecione Métricas.

    6. Na lista suspensa Recurso, 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 Dev Proxy pressionando Ctrl + C no terminal onde ele está sendo executado.

Compreender os custos do modelo linguístico

O Dev Proxy suporta estimar os custos do uso de modelos de linguagem. Para permitir que o Dev Proxy estime custos, você precisa fornecer informações sobre preços para os modelos que você usa.

Criar um arquivo de preços

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

  2. Adicione o seguinte conteúdo ao ficheiro:

    {
      "$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 linguagem. As propriedades input e output referem-se aos preços por milhão de tokens para os tokens de entrada e saída. Se você usar um modelo para o qual não há informações de preço, o Dev Proxy não registrará as métricas de custo.

  3. Salve suas alterações.

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

  5. Amplie 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 includeCosts propriedade definida como true e a pricesFile propriedade definida como o nome do arquivo com informações de preços.

  7. Salve suas alterações.

Ver custos estimados

  1. Inicie o Dev Proxy.

  2. Faça uma solicitação para o endpoint compatível com OpenAI que configurou o Dev Proxy para intercetar.

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

    1. No painel lateral, selecione Métricas.

    2. Na lista suspensa Recurso, 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 em que seu aplicativo incorre para usar os modelos de linguagem.

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

  4. Pare o Dev Proxy pressionando Ctrl + C no terminal onde ele está sendo executado.

  5. Pare o coletor OpenTelemetry .

    No terminal onde o painel do .NET Aspire está sendo executado, pressione Ctrl + C para parar o painel. O Docker remove automaticamente o contêiner quando você o para.

Próximos passos

Saiba mais sobre o OpenAITelemetryPlugin.