For the complete documentation index, see llms.txt. Markdown versions of documentation pages are available by appending .md to the page URL.
Navegación principal
Theme

Definición de agentes

Configura bien un solo agente antes de ampliar el flujo de trabajo.

Un agente es la unidad básica de un flujo de trabajo que usa el SDK. Reúne un modelo y sus instrucciones, y puede incorporar herramientas, mecanismos de protección, servidores MCP, transferencias de control y resultados estructurados para definir cómo se comporta durante la ejecución.

Qué configurar en un agente

Usa la configuración del agente para definir los aspectos propios de ese especialista.

Propiedad Para qué sirve Dónde leer más
name Identificar al agente con un nombre legible en las trazas y en las interfaces de herramientas y transferencias de control Esta página
instructions Definir la tarea, las restricciones y el estilo del agente Esta página
prompt Usar una configuración de prompt guardada en ejecuciones basadas en la API de Responses Modelos y proveedores
model y ajustes del modelo Elegir el modelo y ajustar su comportamiento Modelos y proveedores
tools Definir qué herramientas puede invocar directamente el agente Uso de herramientas
handoffDescription Indicar cuándo conviene que otro agente delegue una tarea en este especialista Orquestación y transferencias de control
handoffs Delegar una tarea en otro agente Orquestación y transferencias de control
outputType Devolver un resultado estructurado en lugar de texto sin formato Esta página
Mecanismos de protección y aprobaciones Configurar flujos de validación, bloqueo y revisión Mecanismos de protección y revisión humana
Servidores MCP y herramientas MCP alojadas Incorporar funciones basadas en MCP Integraciones y observabilidad

Empieza con un agente especializado

Define el agente más sencillo que pueda encargarse de una tarea concreta. Agrega más agentes solo cuando necesites separar responsabilidades, darles instrucciones distintas o usar diferentes interfaces de herramientas o políticas de aprobación.

Define un solo agente
import { Agent, tool } from "@openai/agents";
import { z } from "zod";

const getWeather = tool({
  name: "get_weather",
  description: "Return the weather for a given city.",
  parameters: z.object({ city: z.string() }),
  async execute({ city }) {
    return `The weather in ${city} is sunny.`;
  },
});

const agent = new Agent({
  name: "Weather bot",
  instructions: "You are a helpful weather bot.",
  model: "gpt-6-astra",
  tools: [getWeather],
});

Define las instrucciones, las transferencias de control y los resultados

Presta especial atención a estas tres decisiones de configuración.

  • Empieza con instrucciones estáticas en instructions. Cuando las instrucciones dependan del usuario, del tenant o del contexto de la ejecución en curso, usa una función de callback que genere las instrucciones de forma dinámica en lugar de concatenar cadenas en el punto de llamada.
  • Escribe una descripción breve y concreta en handoffDescription para que los agentes que distribuyen las tareas sepan cuándo elegir a este especialista.
  • Usa outputType cuando el código que procesa el resultado necesite datos tipados en lugar de texto libre.
Devuelve un resultado estructurado
import { Agent, run } from "@openai/agents";
import { z } from "zod";

const calendarEvent = z.object({
  name: z.string(),
  date: z.string(),
  participants: z.array(z.string()),
});

const agent = new Agent({
  name: "Calendar extractor",
  instructions: "Extract calendar events from text.",
  outputType: calendarEvent,
});

const result = await run(agent, "Dinner with Priya and Sam on Friday.");

console.log(result.finalOutput);

Usa prompt cuando quieras hacer referencia a una configuración de prompt guardada en la API de Responses en lugar de incluir todo el prompt del sistema en el código.

Separa el contexto local del contexto del modelo

El SDK te permite pasar el estado y las dependencias de la aplicación a una ejecución sin enviarlos al modelo. Usa el contexto local para pasar información del usuario autenticado, clientes de bases de datos, componentes de registro y funciones auxiliares.

Pasa el contexto local a las herramientas
import { Agent, run, tool } from "@openai/agents";
import { z } from "zod";

const fetchUserAge = tool({
  name: "fetch_user_age",
  description: "Return the age of the current user.",
  parameters: z.object({}),
  // TypeScript users can type this as RunContext<{ name: string; uid: number }>.
  async execute(_args, runContext) {
    return `User ${runContext?.context.name} is 47 years old`;
  },
});

const agent = new Agent({
  name: "Assistant",
  tools: [fetchUserAge],
});

const result = await run(agent, "What is the age of the user?", {
  context: { name: "John", uid: 123 },
});

console.log(result.finalOutput);

Ten presente a qué información tiene acceso cada uno.

  • El modelo ve el historial de la conversación.
  • Tu código ve el contexto de la ejecución.

Si el modelo necesita un dato, inclúyelo en las instrucciones o en la entrada, o haz que esté disponible mediante la recuperación de información o una herramienta. Si solo lo necesita el entorno de ejecución, mantenlo en el contexto local.

Cuándo dividir un agente en varios

Divide un agente cuando un solo especialista no deba encargarse de toda la respuesta o cuando las funciones que cumple sean muy distintas entre sí. Estos son algunos motivos habituales.

  • Un especialista necesita una interfaz de herramientas o de MCP diferente.
  • Un especialista necesita una política de aprobación o un mecanismo de protección diferente.
  • Una rama del flujo de trabajo necesita otro modelo u otro estilo de respuesta.
  • Quieres que las trazas muestren explícitamente cómo se asignan las tareas en lugar de usar un solo prompt extenso.

Próximos pasos

Una vez que hayas definido bien al primer especialista, consulta la guía que responda a tu siguiente pregunta de diseño.