DEV Community

Cover image for Monitorea Tus Agentes en Tiempo Real: Implementando Observabilidad con LangFuse en Strands Agents
Elizabeth Fuentes L for AWS Español

Posted on

Monitorea Tus Agentes en Tiempo Real: Implementando Observabilidad con LangFuse en Strands Agents

Aprende a implementar observabilidad con LangFuse para monitorear tus agentes Strands en tiempo real y entender su comportamiento

🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube
Linktr

Getting Started with Strands Agents: Build Your First AI Agent - Curso GRATIS

Repositorio GitHub

Esta tercera parte de la serie Building Strands Agents se enfoca en implementar observabilidad con LangFuse para monitorear tus agentes en tiempo real.

🎯 Por Qué Importan la Observabilidad y la Evaluación

Cuando despliegas agentes en producción, necesitas responder estas preguntas: ¿Tu agente responde con precisión? ¿Cuánto tiempo toman las respuestas? ¿Dónde están los cuellos de botella? ¿Qué conversaciones fallan y por qué?

Sin una Observabilidad adecuada, estás volando a ciegas. Tus agentes podrían estar alucinando, teniendo un rendimiento deficiente o desperdiciando recursos computacionales, y no lo sabrás hasta que los usuarios se quejen.

Componentes de Observabilidad

El Strands Agents SDK incluye todas las APIs de observabilidad. Los siguientes son puntos de datos clave de observabilidad:

Metrics (Métricas) - Esenciales para entender el rendimiento del agente, optimizar el comportamiento y monitorear el uso de recursos.

Traces (Trazas) - Un componente fundamental del marco de observabilidad del SDK de Strands, que proporciona información detallada sobre la ejecución de tu agente.

Logs (Registros) - El SDK de Strands usa el módulo de registro estándar de Python para proporcionar visibilidad sobre las operaciones.

Evaluation (Evaluación) - Esencial para medir el rendimiento del agente, rastrear mejoras y asegurar que tus agentes cumplan con los estándares de calidad. Con el SDK de Strands, puedes realizar Evaluación Manual, Pruebas Estructuradas, Evaluación con LLM Judge y Evaluación Específica de Herramientas.

Integración con OpenTelemetry

Strands se integra nativamente con OpenTelemetry, un estándar de la industria para rastreo distribuido. Puedes visualizar y analizar trazas usando cualquier herramienta compatible con OpenTelemetry. Esta integración proporciona:

  • Compatibilidad con herramientas de observabilidad existentes: Envía trazas a plataformas como Jaeger, Grafana Tempo, AWS X-Ray, Datadog y más.
  • Nomenclatura de atributos estandarizada: Usa las convenciones semánticas de OpenTelemetry.
  • Opciones de exportación flexibles: Salida de consola para desarrollo, endpoint OTLP para producción.
  • Auto-instrumentación: El SDK crea trazas automáticamente cuando activas el rastreo.

🍽️🔍Observabilidad y Evaluación con Restaurant Agent

Este tutorial usa el notebook 06_Observability_with_LangFuse_and_Evaluation_with_RAGAS.ipynb para demostrar la construcción de un agente de recomendación de restaurantes con capacidades de observabilidad y evaluación. Este tutorial está diseñado para desarrolladores nuevos en agentes de IA, observabilidad y evaluación.

⭐ Basado en el código de 08-observability-and-evaluation/Observability-and-Evaluation-sample.ipynb del repositorio Strands Agents Samples

Qué Construirás

Crearás estos componentes clave:

  1. Base de Datos Vectorial Local: Una colección consultable de información de restaurantes que tu agente puede consultar
  2. Strands Agent: Un asistente de IA que puede recomendar restaurantes según las preferencias del usuario.
  3. LangFuse: Una herramienta que muestra cómo funciona tu agente y toma decisiones.
  4. RAGAS: Un framework que evalúa el rendimiento de tu agente (cubierto en la siguiente parte).

🚀 Comenzando

Clona el repositorio de ejemplo:

git clone https://github.com/aws-samples/sample-getting-started-with-strands-agents-course
cd Lab6
Enter fullscreen mode Exit fullscreen mode

Crea y activa un entorno virtual:

python -m venv .venv
source .venv/bin/activate  # En Windows: .venv\Scripts\activate
Enter fullscreen mode Exit fullscreen mode

Instala los paquetes requeridos:

pip install -r requirements.txt
Enter fullscreen mode Exit fullscreen mode

Cada paquete sirve un propósito específico:

  • langchain: Nos ayuda a construir aplicaciones con modelos de lenguaje
  • langfuse: Proporciona observabilidad para nuestro agente
  • ragas: Nos ayuda a evaluar el rendimiento de nuestro agente
  • chromadb: Una base de datos para almacenar y buscar embeddings vectoriales
  • docx2txt: Convierte documentos Word a texto
  • boto3: SDK de AWS para Python, usado para acceder a servicios de AWS y usar modelos de Amazon Bedrock
  • strands: Framework para construir agentes de IA

✅ Crear Base de Datos Vectorial desde Datos de Restaurantes

Crearás una base de datos vectorial usando archivos de datos de restaurantes en la carpeta restaurant-data. Estos archivos contienen información sobre diferentes restaurantes, sus menús y especialidades.

Para completar este paso, ejecuta las celdas correspondientes en el notebook

📊 Configurar Langfuse para Observabilidad

LangFuse es una plataforma de observabilidad de código abierto específicamente diseñada para aplicaciones LLM. Proporciona un seguimiento integral de las interacciones de tu agente, incluyendo:

  • Análisis de Trazas: Flujos de conversación completos desde la entrada hasta la salida
  • Métricas de Rendimiento: Tiempos de respuesta, uso de tokens y seguimiento de costos
  • Monitoreo de Errores: Solicitudes fallidas y manejo de excepciones
  • Análisis de Usuarios: Patrones de conversación y participación de usuarios

La plataforma se integra perfectamente con frameworks populares y proporciona opciones de implementación tanto alojadas como auto-alojadas.

Sigue los pasos para crear un nuevo proyecto en Langfuse

Configurando la Integración de LangFuse

Primero, configura tu agente para enviar trazas a LangFuse:

from langfuse import Langfuse
from strands import Agent, AgentConfig

# Inicializar cliente LangFuse
langfuse = Langfuse(
    secret_key="tu-clave-secreta",
    public_key="tu-clave-publica",
    #host = "https://cloud.langfuse.com" # 🇪🇺 Región EU
    host = "https://us.cloud.langfuse.com" # 🇺🇸 Región US
)

# Crear agente de recomendación de restaurantes con observabilidad
restaurant_agent = Agent(
    name = "Restaurant Recommendation Agent",
    model=model,
    tools=[search_restaurants],  # Dar al agente acceso a nuestra herramienta de búsqueda
    system_prompt="""Eres un asistente útil de recomendación de restaurantes. 
    Usa la herramienta search_restaurants para encontrar información sobre restaurantes basándote en las consultas del usuario.
    Proporciona recomendaciones detalladas basadas en los resultados de búsqueda.
    Si te preguntan sobre restaurantes que no están en la base de datos, explica amablemente que solo puedes proporcionar información sobre restaurantes en tu base de datos.
    Siempre sé amigable, útil y conciso en tus respuestas.
    """,
    record_direct_tool_call = True,  # Registrar cuando se usan herramientas
    trace_attributes={
        "session.id": str(uuid.uuid4()),  # Generar un ID de sesión único
        "user.id": "user-email-example@domain.com",  # Ejemplo de ID de usuario
        "langfuse.tags": [
            "Agent-SDK-Example",
            "Strands-Project-Demo",
            "Observability-Tutorial"
        ]
    }
)
Enter fullscreen mode Exit fullscreen mode

✅ Probar el Agente con Rastreo

Ahora probemos nuestro agente con una consulta simple y veamos cómo se desempeña. El agente usará la herramienta de búsqueda para encontrar información relevante y luego generará una respuesta.

# Probar el agente con una consulta simple
response = restaurant_agent("Estoy buscando un restaurante con buenas opciones vegetarianas. ¿Alguna recomendación?")
print(response)
Enter fullscreen mode Exit fullscreen mode

✅ Revisar las Trazas

Después de ejecutar el agente, puedes revisar las trazas en LangFuse:

  1. Ve al menú de rastreo en tu proyecto LangFuse

  1. Selecciona la traza que deseas ver

  1. Examina cómo el agente procesó la solicitud, qué herramientas usó y qué respuesta generó

Esto te da visibilidad sobre cómo está trabajando tu agente y te ayuda a identificar cualquier problema o áreas de mejora.

Mantente atento a la parte final: Evaluación con RAGAS (Retrieval Augmented Generation Assessment), ¡donde nos sumergiremos profundamente en la medición y mejora del rendimiento de tu agente usando métricas de evaluación sistemáticas!

🔗 ¿Qué Sigue?

En la parte de Evaluación con RAGAS, cubriremos:

  • Configuración del framework de evaluación RAGAS
  • Medición de fidelidad y relevancia de respuestas
  • Evaluación de rendimiento automatizada
  • Creación de bucles de retroalimentación para mejora continua

📚 Recursos


¡Gracias!

Repositorio GitHub

🇻🇪🇨🇱 Dev.to Linkedin GitHub Twitter Instagram Youtube
Linktr

Top comments (0)