Rastreo de respuestas de agente de OpenAI utilizando mlflow

MLFLOW es una plataforma de código abierto para administrar y rastrear experimentos de aprendizaje automático. Cuando se usa con el SDK de los agentes de Operai, MLFlow automáticamente:

  • Registra todas las interacciones de agente y llamadas API
  • Captura el uso de la herramienta, los mensajes de entrada/salida y las decisiones intermedias
  • Pistas se ejecutan para depuración, análisis de rendimiento y reproducibilidad

Esto es especialmente útil cuando está construyendo sistemas de múltiples agentes donde los diferentes agentes colaboran o llaman funciones dinámicamente

En este tutorial, atravesaremos dos ejemplos clave: una simple transferencia entre los agentes y el uso de barandillas de agentes, todo mientras traza su comportamiento usando MLFLOW.

Configuración de las dependencias

Instalación de las bibliotecas

pip install openai-agents mlflow pydantic pydotenv

Clave de API de OpenAI

Para obtener una llave de API de OpenAI, visite https://platform.openai.com/settings/organization/api-keys y generar una nueva clave. Si es un nuevo usuario, es posible que deba agregar detalles de facturación y realizar un pago mínimo de $ 5 para activar el acceso a la API.

Una vez que se genera la clave, cree un archivo .env e ingrese lo siguiente:

OPENAI_API_KEY = <YOUR_API_KEY>

Reemplace con la clave que generó.

Sistema de múltiples agentes (multi_agent_demo.py)

En este script (multi_agent_demo.py), construimos un asistente simple de múltiples agentes utilizando el SDK de agentes de OpenAI, diseñado para enrutar consultas de los usuarios a un experto en codificación o un experto en cocina. Habilitamos mlflow.openai.autolog ()que traza e registra automáticamente todas las interacciones de agente con la API de OpenAI, incluidas las entradas, salidas y las transferencias de agentes, lo que facilita el monitoreo y depuración del sistema. MLFLOW está configurado para usar un URI de seguimiento basado en archivos local (./mlruns) y registra toda la actividad bajo el nombre del experimento “Agente de codificación“.

import mlflow, asyncio
from agents import Agent, Runner
import os
from dotenv import load_dotenv
load_dotenv()

mlflow.openai.autolog()                           # Auto‑trace every OpenAI call
mlflow.set_tracking_uri("./mlruns")
mlflow.set_experiment("Agent‑Coding‑Cooking")

coding_agent = Agent(name="Coding agent",
                     instructions="You only answer coding questions.")

cooking_agent = Agent(name="Cooking agent",
                      instructions="You only answer cooking questions.")

triage_agent = Agent(
    name="Triage agent",
    instructions="If the request is about code, handoff to coding_agent; "
                 "if about cooking, handoff to cooking_agent.",
    handoffs=[coding_agent, cooking_agent],
)

async def main():
    res = await Runner.run(triage_agent,
                           input="How do I boil pasta al dente?")
    print(res.final_output)

if __name__ == "__main__":
    asyncio.run(main())

Mlflow ui

Para abrir la interfaz de usuario mlflow y ver todas las interacciones del agente registrado, ejecute el siguiente comando en un nuevo terminal:

Esto iniciará el servidor de seguimiento MLFLOW y mostrará un mensaje que indica la URL y el puerto donde se puede acceder a la interfaz de usuario, generalmente http: // localhost: 5000 por defecto.

Podemos ver todo el flujo de interacción en el Rastreo Sección: desde la entrada inicial del usuario hasta cómo el asistente enrutó la solicitud al agente apropiado, y finalmente, la respuesta generada por ese agente. Esta traza de extremo a extremo proporciona información valiosa sobre la toma de decisiones, las transferencias y los resultados, ayudándole a depurar y optimizar los flujos de trabajo de sus agentes.

Rastreo

En este ejemplo, implementamos un agente de atención al cliente protegido por la barandilla utilizando el SDK de los agentes de Operai con el rastreo de mlflow. El agente está diseñado para ayudar a los usuarios con consultas generales, pero está restringido de responder preguntas relacionadas con la médica. Un agente de barandilla dedicado verifica tales entradas, y si se detecta, bloquea la solicitud. MLFLOW captura todo el flujo, incluida la activación de la barandilla, el razonamiento y la respuesta del agente, que proporciona trazabilidad completa y visión de los mecanismos de seguridad.

import mlflow, asyncio
from pydantic import BaseModel
from agents import (
    Agent, Runner,
    GuardrailFunctionOutput, InputGuardrailTripwireTriggered,
    input_guardrail, RunContextWrapper)

from dotenv import load_dotenv
load_dotenv()

mlflow.openai.autolog()
mlflow.set_tracking_uri("./mlruns")
mlflow.set_experiment("Agent‑Guardrails")

class MedicalSymptons(BaseModel):
    medical_symptoms: bool
    reasoning: str


guardrail_agent = Agent(
    name="Guardrail check",
    instructions="Check if the user is asking you for medical symptons.",
    output_type=MedicalSymptons,
)


@input_guardrail
async def medical_guardrail(
    ctx: RunContextWrapper[None], agent: Agent, input
) -> GuardrailFunctionOutput:
    result = await Runner.run(guardrail_agent, input, context=ctx.context)

    return GuardrailFunctionOutput(
        output_info=result.final_output,
        tripwire_triggered=result.final_output.medical_symptoms,
    )


agent = Agent(
    name="Customer support agent",
    instructions="You are a customer support agent. You help customers with their questions.",
    input_guardrails=[medical_guardrail],
)


async def main():
    try:
        await Runner.run(agent, "Should I take aspirin if I'm having a headache?")
        print("Guardrail didn't trip - this is unexpected")

    except InputGuardrailTripwireTriggered:
        print("Medical guardrail tripped")


if __name__ == "__main__":
    asyncio.run(main())

Este script define a un agente de atención al cliente con una barandilla de entrada que detecta preguntas relacionadas con la médica. Utiliza una GuardRail_Agent separada para evaluar si la entrada del usuario contiene una solicitud de asesoramiento médico. Si se detecta dicha entrada, la barandilla desencadena y evita que el agente principal responda. Todo el proceso, incluidas las verificaciones y resultados de barandas, se registra automáticamente y se remonta utilizando MLFLOW.

Mlflow ui

Para abrir la interfaz de usuario mlflow y ver todas las interacciones del agente registrado, ejecute el siguiente comando en un nuevo terminal:

En este ejemplo, le preguntamos al agente: “¿Debería tomar aspirina si me duele la cabeza?”, Lo que desencadenó la barandilla. En la interfaz de usuario de MLFLOW, podemos ver claramente que la entrada fue marcada, junto con el razonamiento proporcionado por el agente de barandilla de por qué se bloqueó la solicitud.

Mira el Codos. Todo el crédito por esta investigación va a los investigadores de este proyecto. ¿Listo para conectarse con más de 1 millón de desarrolladores/investigadores/investigadores de AI? Vea cómo Nvidia, LG AI Research y las principales compañías de IA aprovechan a MarktechPost para llegar a su público objetivo [Learn More]


Soy un graduado de ingeniería civil (2022) de Jamia Millia Islamia, Nueva Delhi, y tengo un gran interés en la ciencia de datos, especialmente las redes neuronales y su aplicación en varias áreas.