Puedes visualizar las interacciones y los datos de rendimiento de tus aplicaciones de LLM en la página LLM Observability Traces, donde cada solicitud atendida por tu aplicación se representa como una traza (trace).
Para obtener más información sobre las trazas, consulta Términos y conceptos y decide qué opción de instrumentación se adapta mejor a las necesidades de tu aplicación.
Datadog proporciona instrumentación automática para capturar llamadas de LLM para bibliotecas de proveedores de LLM específicos. Sin embargo, la instrumentación manual de tu aplicación de LLM mediante el SDK de LLM Observability para Python permite el acceso a funciones de LLM Observability adicionales.
Configura el SDK proporcionando las variables de entorno requeridas en el comando de inicio de tu aplicación o programáticamente en el código. Asegúrate de haber configurado tu clave de API de Datadog, el sitio de Datadog y el nombre de la aplicación de machine learning (ML).
Crea tramos (spans) en el código de tu aplicación de LLM para representar las operaciones de tu aplicación. Para obtener más información sobre los tramos, consulta Términos y conceptos.
Anota tus tramos con datos de entrada, datos de salida, metadatos (como temperature), métricas (como input_tokens) y etiquetas (tags) clave-valor (como version:1.0.0).
Si utilizaste el método de configuración de la línea de comandos, el comando para ejecutar tu aplicación debe usar ddtrace-run, como se describe en esas instrucciones.
Si utilizaste el método de configuración en código, ejecuta tu aplicación como lo harías normalmente.
Para crear un tramo, el SDK de LLM Observability ofrece dos opciones: utilizar un decorador de funciones o utilizar un gestor de contexto en línea.
El método preferido es utilizar un decorador de funciones. El uso de un gestor de contexto es más avanzado y permite un control más detallado del rastreo.
Decoradores
Usa ddtrace.llmobs.decorators.<SPAN_KIND>() como decorador en la función que deseas rastrear, reemplazando <SPAN_KIND> con el tipo de tramo deseado.
fromddtrace.llmobs.decoratorsimportworkflow@workflowdefextract_data(document):...# Flujo de trabajo impulsado por LLM que extrae datos de estructura de un documentoreturn
fromddtrace.llmobsimportLLMObsdefextract_data(document):withLLMObs.workflow(name="extract_data")asspan:...# Flujo de trabajo impulsado por LLM que extrae datos de estructura de un documentoreturn
Para añadir información adicional a un tramo, como entradas, salidas, metadatos, métricas o etiquetas, utiliza el método LLMObs.annotate() del SDK de LLM Observability.
Los ejemplos siguientes anotan el tramo de flujo de trabajo creado en el ejemplo anterior:
fromddtrace.llmobsimportLLMObsfromddtrace.llmobs.decoratorsimportworkflow@workflowdefextract_data(document:str,generate_summary:bool):extracted_data=...# lógica de la aplicación del usuarioLLMObs.annotate(input_data=document,output_data=extracted_data,metadata={"generate_summary":generate_summary},tags={"env":"dev"},)returnextracted_data
fromddtrace.llmobsimportLLMObsdefextract_data(document:str,generate_summary:bool):withLLMObs.workflow(name="extract_data")asspan:...# lógica de la aplicación del usuarioextracted_data=...# user application logicLLMObs.annotate(input_data=document,output_data=extracted_data,metadata={"generate_summary":generate_summary},tags={"env":"dev"},)returnextracted_data
Al iniciar un nuevo tramo antes de que finalice el tramo actual, se rastrea automáticamente una relación principal-secundario entre los dos tramos. El tramo principal representa la operación más grande, mientras que el tramo secundario representa una suboperación anidada más pequeña dentro de él.
Los ejemplos siguientes crean una traza con dos tramos.
fromddtrace.llmobs.decoratorsimporttask,workflow@workflowdefextract_data(document):preprocess_document(document)...# realiza la extracción de datos en el documentoreturn@taskdefpreprocess_document():...# preprocesa un documento para la extracción de datosreturn
fromddtrace.llmobsimportLLMObsdefextract_data():withLLMObs.workflow(name="extract_data")asworkflow_span:withLLMObs.task(name="preprocess_document")astask_span:...# preprocesa un documento para la extracción de datos...# realiza la extracción de datos en el documentoreturn
Para obtener más información sobre métodos de rastreo alternativos y funciones de rastreo, consulta la documentación del SDK.
Rastrear varias aplicaciones de LLM al iniciar una nueva traza, lo que puede resultar útil para diferenciar entre servicios o ejecutar múltiples experimentos.