O agente é a unidade básica de um fluxo de trabalho criado com o SDK. Ele reúne um modelo, instruções e recursos opcionais que definem seu comportamento durante a execução, como ferramentas, mecanismos de proteção, servidores MCP, transferências entre agentes e saídas estruturadas.
O que configurar no agente
Use a configuração do agente para definir o que é específico daquele especialista.
| Propriedade | Para que serve | Saiba mais |
|---|---|---|
name |
Identificar o agente com um nome legível nos rastreamentos e nas interfaces de ferramentas e transferências | Esta página |
instructions |
Definir a função, as restrições e o estilo do agente | Esta página |
prompt |
Usar uma configuração de prompt armazenada em execuções que usam a API Responses | Modelos e provedores |
model e configurações do modelo |
Escolher o modelo e ajustar seu comportamento | Modelos e provedores |
tools |
Definir quais recursos o agente pode chamar diretamente | Uso de ferramentas |
handoffDescription |
Indicar quando outro agente deve delegar uma tarefa a este especialista | Orquestração e transferências entre agentes |
handoffs |
Delegar tarefas a outro agente | Orquestração e transferências entre agentes |
outputType |
Retornar uma saída estruturada em vez de texto simples | Esta página |
| Mecanismos de proteção e aprovações | Validar, bloquear e encaminhar para revisão | Mecanismos de proteção e revisão humana |
| Servidores MCP e ferramentas MCP hospedadas | Integrar recursos que usam MCP | Integrações e observabilidade |
Comece com um agente dedicado a uma tarefa
Defina o agente mais simples capaz de assumir uma tarefa bem delimitada. Adicione outros agentes apenas quando precisar dividir responsabilidades ou usar instruções, conjuntos de ferramentas ou políticas de aprovação diferentes.
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],
});Configure instruções, transferências e saídas
Três decisões de configuração merecem atenção especial.
- Comece com instruções estáticas em
instructions. Se as orientações dependerem do usuário, do tenant ou do contexto de execução atual, use uma função de callback para gerar as instruções dinamicamente em vez de concatenar strings no ponto de chamada. - Escreva uma descrição breve e específica em
para que os agentes responsáveis pelo roteamento saibam quando escolher esse especialista.handoffDescription - Use
quando o código que consome a saída precisar de dados tipados em vez de texto livre.outputType
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);Use prompt para fazer referência a uma configuração de prompt armazenada na API Responses em vez de incluir o prompt de sistema inteiro no código.
Separe o contexto local do contexto do modelo
O SDK permite passar o estado do aplicativo e suas dependências para uma execução sem enviá-los ao modelo. Use esse recurso para disponibilizar informações sobre o usuário autenticado, clientes de banco de dados, objetos de log e funções auxiliares.
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);A distinção está em quem tem acesso às informações.
- O modelo tem acesso ao histórico da conversa.
- Seu código tem acesso ao contexto da execução.
Se o modelo precisar de uma informação, inclua-a nas instruções ou na entrada, ou disponibilize-a por meio de recuperação de informações ou de uma ferramenta. Se apenas o ambiente de execução precisar dela, mantenha-a no contexto local.
Quando dividir um agente em vários
Divida um agente quando um único especialista não deva assumir a responsabilidade pela resposta inteira ou quando houver diferenças significativas entre os recursos necessários. Considere a divisão nas situações a seguir.
- Um especialista precisa de um conjunto diferente de ferramentas ou de recursos MCP.
- Um especialista precisa de outra política de aprovação ou de outro mecanismo de proteção.
- Uma ramificação do fluxo de trabalho exige outro modelo ou estilo de saída.
- Você quer que o roteamento apareça explicitamente nos rastreamentos em vez de concentrá-lo em um único prompt extenso.
Próximos passos
Depois de definir o primeiro especialista, escolha o guia que aborda a próxima decisão sobre o fluxo de trabalho.
Escolha os modelos, as configurações padrão e a estratégia de transporte para este agente.
Adicione recursos que o agente possa chamar diretamente.
Defina como os especialistas vão colaborar quando um único agente já não for suficiente.
Entenda como funcionam o ciclo de execução, o estado e a transmissão de dados em tempo real.