Configurar LLM Observability

LLM Observability no está disponible en el sitio seleccionado () en este momento.

Información general

Para comenzar a enviar datos a LLM Observability, instrumenta tu aplicación con el SDK de LLM Observability para Python o llamando a la API de LLM Observability.

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).

Una traza de LLM Observability que muestra cada tramo de una solicitud

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.

Para Instrumentar una aplicación de LLM:

  1. Instala el SDK de LLM Observability para Python.
  2. 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:

  1. 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.

    Puedes anidar tramos para crear trazas más útiles. Para obtener ejemplos adicionales y detalles sobre el uso, consulta Rastrear una aplicación de LLM y la documentación del SDK.

  2. 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).

  3. Opcionalmente, añade funciones de rastreo avanzadas, como sesiones de usuario.

  4. Ejecuta tu aplicación de LLM.

    • 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.

Puedes acceder a las trazas resultantes en la pestaña Traces de la página LLM Observability Traces y a las métricas resultantes en el dashboard LLM Observability Overview listo para usar.

Creación de tramos

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.
En línea
Usa ddtrace.llmobs.LLMObs.<SPAN_KIND>() como un gestor de contexto para rastrear cualquier código en línea, reemplazando <SPAN_KIND> con el tipo de tramo deseado.

Los siguientes ejemplos crean un tramo de flujo de trabajo.

from ddtrace.llmobs.decorators import workflow

@workflow
def extract_data(document):
    ... # Flujo de trabajo impulsado por LLM que extrae datos de estructura de un documento
    return
from ddtrace.llmobs import LLMObs

def extract_data(document):
    with LLMObs.workflow(name="extract_data") as span:
        ... # Flujo de trabajo impulsado por LLM que extrae datos de estructura de un documento
    return

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:

from ddtrace.llmobs import LLMObs
from ddtrace.llmobs.decorators import workflow

@workflow
def extract_data(document: str, generate_summary: bool):
    extracted_data = ... # lógica de la aplicación del usuario
    LLMObs.annotate(
        input_data=document,
        output_data=extracted_data,
        metadata={"generate_summary": generate_summary},
        tags={"env": "dev"},
    )
    return extracted_data
from ddtrace.llmobs import LLMObs

def extract_data(document: str, generate_summary: bool):
    with LLMObs.workflow(name="extract_data") as span:
        ... # lógica de la aplicación del usuario
        extracted_data = ... # user application logic
        LLMObs.annotate(
            input_data=document,
            output_data=extracted_data,
            metadata={"generate_summary": generate_summary},
            tags={"env": "dev"},
        )
        return extracted_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.

from ddtrace.llmobs.decorators import task, workflow

@workflow
def extract_data(document):
    preprocess_document(document)
    ... # realiza la extracción de datos en el documento
    return

@task
def preprocess_document():
    ... # preprocesa un documento para la extracción de datos
    return
from ddtrace.llmobs import LLMObs

def extract_data():
    with LLMObs.workflow(name="extract_data") as workflow_span:
        with LLMObs.task(name="preprocess_document") as task_span:
            ... # preprocesa un documento para la extracción de datos
        ... # realiza la extracción de datos en el documento
    return

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:

Permisos

De forma predeterminada, solo los usuarios con el rol de lectura de Datadog pueden ver LLM Observability. Para obtener más información, consulta la documentación sobre permisos.

Referencias adicionales