Rastreo de servicios de proxy
Este producto no es compatible con el
sitio Datadog seleccionado. (
).
Descripción general
Al igual que las aplicaciones tradicionales, una aplicación de LLM puede representar múltiples microservicios. Con Agent Observability, si uno de estos servicios es un proxy o puerta de enlace de LLM, puede rastrear las llamadas de LLM dentro de una traza completa de extremo a extremo, capturando la ruta completa de la solicitud a través de los servicios.
Habilitar Agent Observability para un servicio de proxy o puerta de enlace
Para habilitar Agent Observability para un servicio de proxy o puerta de enlace utilizado por múltiples aplicaciones de ML, puede configurarlo sin especificar un nombre de aplicación de ML. En su lugar, establezca el nombre del servicio. Esto le permite filtrar tramos específicos para ese servicio de proxy o puerta de enlace dentro de Agent Observability.
# proxy.py
from ddtrace.llmobs import LLMObs
LLMObs.enable(service="chat-proxy")
# proxy-specific logic, including guardrails, sensitive data scans, and the LLM call
// proxy.js
const tracer = require('dd-trace').init({
llmobs: true,
service: "chat-proxy"
});
const llmobs = tracer.llmobs;
// proxy-specific logic, including guardrails, sensitive data scans, and the LLM call
Si tiene un servicio que orquesta aplicaciones de ML que envían solicitudes a un proxy o puerta de enlace de LLM, habilite Agent Observability con el nombre de la aplicación de ML:
# application.py
from ddtrace.llmobs import LLMObs
LLMObs.enable(ml_app="my-ml-app")
import requests
if __name__ == "__main__":
with LLMObs.workflow(name="run-chat"):
# other application-specific logic - (such as RAG steps and parsing)
response = requests.post("http://localhost:8080/chat", json={
# data to pass to the proxy service
})
# other application-specific logic handling the response
// application.js
const tracer = require('dd-trace').init({
llmobs: {
mlApp: 'my-ml-app'
}
});
const llmobs = tracer.llmobs;
const axios = require('axios');
async function main () {
llmobs.trace({ name: 'run-chat', kind: 'workflow' }, async () => {
// other application-specific logic - (such as RAG steps and parsing)
// wrap the proxy call in a task span
const response = await axios.post('http://localhost:8080/chat', {
// data to pass to the proxy service
});
// other application-specific logic handling the response
});
}
main();
Cuando la aplicación de LLM realiza una solicitud al servicio de proxy o puerta de enlace, el SDK de Agent Observability propaga automáticamente el nombre de la aplicación de ML desde la aplicación de LLM original. El nombre de la aplicación de ML propagado tiene prioridad sobre el nombre de la aplicación de ML especificado en el servicio de proxy o puerta de enlace.
Observación de servicios de puerta de enlace y proxy de LLM
Todas las solicitudes al servicio de proxy o puerta de enlace
Para visualizar todas las solicitudes al servicio de proxy como tramos de nivel superior, envuelva el punto de entrada del punto de conexión del servicio de proxy en un tramo workflow:
# proxy.py
from ddtrace.llmobs import LLMObs
LLMObs.enable(service="chat-proxy")
@app.route('/chat')
def chat():
with LLMObs.workflow(name="chat-proxy-entrypoint"):
# proxy-specific logic, including guardrails, sensitive data scans, and the LLM call
// proxy.js
const tracer = require('dd-trace').init({
llmobs: true,
service: "chat-proxy"
});
const llmobs = tracer.llmobs;
app.post('/chat', async (req, res) => {
await llmobs.trace({ name: 'chat-proxy-entrypoint', kind: 'workflow' }, async () => {
// proxy-specific logic, including guardrails, sensitive data scans, and the LLM call
res.send("Hello, world!");
});
});
Todas las solicitudes al servicio de proxy se pueden visualizar entonces como tramos de nivel superior dentro de la vista de traza de LLM:
- En la página de traza de LLM, seleccione All Applications en el menú desplegable superior izquierdo.
- Cambie a la vista All Spans en el menú desplegable superior derecho.
- Filtre la lista por la etiqueta
service y el nombre del flujo de trabajo.
También puede filtrar el flujo de trabajo Span Name usando la faceta en el lado izquierdo de la vista de traza:
Todas las llamadas de LLM realizadas dentro del servicio de proxy o puerta de enlace
Para hacer un seguimiento solo de las llamadas de LLM realizadas dentro de un servicio de proxy o puerta de enlace, filtre por los tramos llm en la vista de traza:
También puede filtrar la faceta Span Kind en el lado izquierdo de la vista de traza:
Filtrado por una aplicación de ML específica y observación de patrones y tendencias
Puede aplicar ambos procesos de filtrado (llamadas de nivel superior al servicio de proxy y llamadas de LLM realizadas dentro del servicio de proxy o puerta de enlace) a una aplicación de ML específica para visualizar su interacción con el servicio de proxy o puerta de enlace.
- En el menú desplegable superior izquierdo, seleccione la aplicación de ML de interés.
- Para ver todas las trazas de la aplicación de ML, cambie de la vista All Spans a la vista Traces en el menú desplegable superior derecho.
- Para ver series temporales de trazas para la aplicación de ML, vuelva al filtro All Spans en el menú desplegable superior derecho y, junto a “Visualizar como”, seleccione Timeseries.
Observación del uso de extremo a extremo de aplicaciones de LLM que realizan llamadas a un servicio de proxy o puerta de enlace
Para observar el uso completo de extremo a extremo de una aplicación de LLM que realiza llamadas a un servicio de proxy o puerta de enlace, puede filtrar las trazas con ese nombre de aplicación de ML:
- En la vista de traza de LLM, seleccione el nombre de la aplicación de ML de interés en el menú desplegable superior izquierdo.
- Cambie a la vista Traces en el menú desplegable superior derecho.