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.
Instrumentar una aplicación de LLM
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.
Estas instrucciones usan el SDK de LLM Observability para Python. Si tu aplicación se ejecuta en un entorno sin servidor, sigue las instrucciones de configuración sin servidor.Si tu aplicación no está escrita en Python, puedes completar los pasos a continuación con solicitudes de API en lugar de llamadas a funciones del SDK.
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).
Rastrear una aplicación de LLM
Para rastrear una aplicación de LLM:
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.
Los siguientes ejemplos crean un tramo de flujo de trabajo.
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
Anotar tramos
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
Anidación de tramos
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.
Rastreo avanzado
Dependiendo de la complejidad de tu aplicación de LLM, también puedes:
Rastrear varias aplicaciones de LLM al iniciar una nueva traza, lo que puede resultar útil para diferenciar entre servicios o ejecutar múltiples experimentos.