Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El uso de modelos de lenguaje conlleva costos. Para comprender cómo la aplicación usa modelos de lenguaje grande, use el proxy de desarrollo para interceptar las solicitudes y respuestas compatibles con OpenAI. Dev Proxy analiza las solicitudes y respuestas y registra los datos de telemetría para ayudarle a comprender cómo su aplicación usa modelos de lenguaje de gran tamaño. Esta información le permite optimizar la aplicación y reducir los costos.
Dev Proxy registra los datos de uso del modelo de lenguaje en formato OpenTelemetry. Puede usar cualquier panel compatible con OpenTelemetry para visualizar los datos. Por ejemplo, puede usar el panel de .NET Aspire o OpenLIT. Los datos de telemetría incluyen el número de tokens usados en la solicitud y la respuesta, el costo de los tokens usados y el costo total de todas las solicitudes durante una sesión.
Interceptar solicitudes y respuestas compatibles con OpenAI mediante el proxy de desarrollo
Para interceptar las solicitudes y respuestas compatibles con OpenAI, use OpenAITelemetryPlugin. Este complemento registra los datos de telemetría de las solicitudes y respuestas compatibles con OpenAI que intercepta y emite datos de OpenTelemetry.
Creación de un archivo de configuración de proxy de desarrollo
Cree un nuevo archivo de configuración de Proxy de desarrollo mediante el
devproxy config new
comando o mediante la extensión Dev Proxy Toolkit.Agregue el
OpenAITelemetryPlugin
al archivo de configuración.{ "$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 }
Configure la
urlsToWatch
propiedad para incluir las direcciones URL de las solicitudes compatibles con OpenAI que desea interceptar. En el ejemplo siguiente se interceptan las solicitudes a las finalizaciones de chat de 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 }
Guarde los cambios.
Iniciar el recopilador de OpenTelemetry y el proxy de desarrollo
Importante
Tanto .NET Aspire como OpenLIT requieren que Docker se ejecute. Si no tiene Docker instalado, siga las instrucciones de la documentación de Docker para instalar Docker.
Inicie Docker.
Inicie el recopilador OpenTelemetry.
Ejecute el comando siguiente para iniciar el recopilador y el panel openTelemetry de .NET Aspire:
docker run --rm -it -p 18888:18888 -p 4317:18889 -p 4318:18890 --name aspire-dashboard mcr.microsoft.com/dotnet/aspire-dashboard:latest
Nota:
Cuando haya terminado de usar el panel de .NET Aspire, presione Ctrl + C en el terminal donde inició el panel. Docker quita automáticamente el contenedor al detenerlo.
Abra el panel de .NET Aspire en el explorador en
http://localhost:18888/login?t=<code>
.
Para iniciar el proxy de desarrollo, cambie el directorio de trabajo a la carpeta donde creó el archivo de configuración del proxy de desarrollo y ejecute el siguiente comando:
devproxy
Uso del modelo de lenguaje e inspección de datos de telemetría
Realice una solicitud al punto de conexión compatible con OpenAI para que el Dev Proxy la intercepte.
Compruebe que el Dev Proxy ha interceptado la solicitud y la respuesta. En la consola, donde se ejecuta el proxy de desarrollo, debería ver información similar:
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
En el explorador web, vaya al panel OpenTelemetry.
En el menú lateral, seleccione Trazas.
Seleccione uno de los rastros denominados
DevProxy.OpenAI
.Seleccione el intervalo de solicitudes.
En el panel lateral, explore los datos de uso del modelo de lenguaje.
En el panel lateral, cambie a Métricas.
En la lista desplegable Recurso , seleccione DevProxy.OpenAI.
En la lista de métricas, seleccione gen_ai.client.token.usage para ver un gráfico que muestra el número de tokens que usa la aplicación.
Detenga el proxy de desarrollo presionando Ctrl + C en el terminal donde se ejecuta.
Descripción de los costos del modelo de lenguaje
El proxy de desarrollo admite la estimación de los costos de uso de modelos de lenguaje. Para permitir que Dev Proxy calcule los costos, debe proporcionar información sobre los precios de los modelos que usa.
Creación de un archivo de precios
En la misma carpeta en la que creó el archivo de configuración del proxy de desarrollo, cree un nuevo archivo denominado
prices.json
.Agregue el siguiente contenido al archivo:
{ "$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 } } }
Importante
La clave es el nombre del modelo de lenguaje.
input
youtput
son las propiedades que indican los precios por millón de tokens para los tokens de entrada y salida. Si usa un modelo para el que no hay información de precios, el proxy de desarrollo no registra las métricas de coste.Guarde los cambios.
En el editor de código, abra el archivo de configuración del proxy de desarrollo.
Amplíe la
OpenAITelemetryPlugin
referencia con una sección de configuración:{ "$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 }
Agregue la
openAITelemetryPlugin
sección al archivo de configuración:{ "$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 }
Observe la
includeCosts
propiedad establecida entrue
y lapricesFile
propiedad establecida en el nombre del archivo con información de precios.Guarde los cambios.
Visualización de los costos estimados
Inicie el proxy de desarrollo.
Realice una solicitud al punto de conexión compatible con OpenAI para que el Dev Proxy la intercepte.
En el explorador web, vaya al panel OpenTelemetry.
Detenga el proxy de desarrollo presionando Ctrl + C en el terminal donde se ejecuta.
Detenga el colector OpenTelemetry.
En el terminal donde se ejecuta el panel de .NET Aspire, presione Ctrl + C para detener el panel. Docker quita automáticamente el contenedor al detenerlo.
Pasos siguientes
Obtenga más información sobre OpenAITelemetryPlugin.