Orquestación de IA: Una Introducción al SDK de Agents de OpenAI

Descripción del Proyecto

El SDK de OpenAI Agents es un framework de Python diseñado para crear flujos de trabajo multiagente. Es independiente de proveedores, compatible con las API de respuestas y compleciones de chat de OpenAI, así como con más de 100 otros modelos de lenguaje grandes (LLMs). El SDK se distingue por su diseño ligero y potentes capacidades para orquestar interacciones entre múltiples agentes.

Imagen de la interfaz de usuario de trazabilidad de los agentes

Conceptos Clave: - Agentes: LLMs configurados con instrucciones específicas, herramientas, barreras de seguridad y traspasos. - Traspasos (Handoffs): Una llamada de herramienta especializada utilizada para transferir el control entre diferentes agentes. - Barreras de Seguridad (Guardrails): Comprobaciones de seguridad configurables para validar entradas y salidas. - Trazabilidad (Tracing): Funcionalidad integrada para rastrear, depurar y optimizar las ejecuciones de los agentes.

Instrucciones de Uso

1. Configura tu entorno Python:

python -m venv env
source env/bin/activate

2. Instala el SDK de Agents:

pip install openai-agents
Para soporte de voz, instala con el grupo de voz opcional:
pip install 'openai-agents[voice]'

3. Ejemplo "Hola Mundo": Para ejecutar un agente básico:

from agents import Agent, Runner

agent = Agent(name="Assistant", instructions="You are a helpful assistant")

result = Runner.run_sync(agent, "Write a haiku about recursion in programming.")
print(result.final_output)
(Asegúrate de que la variable de entorno OPENAI_API_KEY esté configurada.)

4. Ejemplo de Traspasos (Handoffs): Para demostrar traspasos de agente según el idioma:

from agents import Agent, Runner
import asyncio

spanish_agent = Agent(
    name="Spanish agent",
    instructions="You only speak Spanish.",
)

english_agent = Agent(
    name="English agent",
    instructions="You only speak English",
)

triage_agent = Agent(
    name="Triage agent",
    instructions="Handoff to the appropriate agent based on the language of the request.",
    handoffs=[spanish_agent, english_agent],
)

async def main():
    result = await Runner.run(triage_agent, input="Hola, ¿cómo estás?")
    print(result.final_output)

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

5. Ejemplo de Funciones: Para integrar funciones personalizadas como herramientas para los agentes:

import asyncio
from agents import Agent, Runner, function_tool

@function_tool
def get_weather(city: str) -> str:
    return f"The weather in {city} is sunny."

agent = Agent(
    name="Hello world",
    instructions="You are a helpful agent.",
    tools=[get_weather],
)

async def main():
    result = await Runner.run(agent, input="What's the weather in Tokyo?")
    print(result.final_output)

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

Desarrollo (para contribuir al SDK): 1. Asegúrate de que uv esté instalado. 2. Instala las dependencias: make sync 3. Analiza/prueba: make tests, make mypy, make lint

Características Clave

  • Flujos de Trabajo Multiagente: Framework para construir interacciones complejas entre múltiples agentes LLM.
  • Independiente de Proveedores: Compatible con las API de OpenAI y con más de 100 LLMs adicionales.
  • Configuración de Agentes: Los agentes se pueden configurar con instrucciones, herramientas, barreras de seguridad y traspasos.
  • Mecanismo de Traspaso (Handoff): Llamadas de herramienta especializadas para una transferencia de control fluida entre agentes.
  • Barreras de Seguridad (Guardrails): Implementa comprobaciones de seguridad configurables para la validación de entradas y salidas.
  • Trazabilidad Integrada: Seguimiento y depuración automáticos de las ejecuciones de los agentes, con extensibilidad para tramos personalizados y destinos externos (por ejemplo, Logfire, AgentOps, Braintrust).
  • Salidas Estructuradas: Permite definir output_type para que los agentes produzcan salidas finales estructuradas.
  • Bucle de Agente Flexible: Se ejecuta hasta que se produce una salida final, gestionando llamadas de herramientas y traspasos de forma iterativa, con un parámetro max_turns para el control.
  • Integración de Herramientas: Permite a los agentes usar funciones personalizadas como herramientas.

Usuarios Objetivo

  • Desarrolladores que construyen aplicaciones de IA multiagente.
  • Investigadores y profesionales que trabajan con LLMs y flujos de trabajo de IA.
  • Usuarios que necesitan orquestar tareas complejas que involucran a múltiples agentes de IA.

Enlaces del Proyecto

Escenarios de Aplicación

  • Extracción y Procesamiento de Información Complejo: Los agentes pueden colaborar para extraer, procesar y resumir información de diversas fuentes.
  • Servicio al Cliente Automatizado: Un agente de clasificación puede dirigir consultas a agentes especializados, o los agentes pueden manejar diferentes etapas de la interacción con el cliente (por ejemplo, saludo inicial, diagnóstico del problema, propuesta de solución).
  • Generación y Depuración de Código: Los agentes pueden especializarse en diferentes lenguajes de programación o tareas de depuración, con traspasos según sea necesario.
  • Flujos de Trabajo de Creación de Contenido: Los agentes pueden colaborar en la redacción, edición y refinamiento de contenido creativo, con barreras de seguridad que aseguren el cumplimiento de guías de estilo o protocolos de seguridad.
  • Análisis de Datos e Informes: A los agentes se les pueden asignar roles para la recuperación, análisis, visualización y generación de informes de datos.
  • Tutoriales Interactivos y Entornos de Aprendizaje: Los agentes pueden guiar a los usuarios a través de los pasos, proporcionar retroalimentación y adaptar sus respuestas en función de la entrada o el progreso del usuario.

Compartir este artículo