OpenAI Agents SDK: когда готовый harness выгоднее
Agents SDK добавляет небольшой набор primitives для agents, tools, sessions, handoffs, guardrails, tracing и human in the loop. Он экономит код цикла, но не отменяет главного: бизнес-правила по-прежнему живут в ваших handlers, а не в SDK.
npm install @openai/agents zodАгент собирается из tools и инструкции, а run крутит цикл за вас.
import { Agent, run, tool } from "@openai/agents";
import { z } from "zod";
export function makeSupportAgent(context: TrustedToolContext) {
const orderTool = tool({
name: "order_read",
description: "Read a verified public view of the current user's order.",
parameters: z.object({ order_id: z.string() }),
async execute(input) {
return JSON.stringify(await orderRead(input, context));
}
});
return new Agent({
name: "Commerce Support",
instructions: buildPrompt(context.locale),
tools: [orderTool]
});
}
const result = await run(makeSupportAgent(context), userMessage, {
maxTurns: 6,
context
});
console.log(result.finalOutput);Когда готовый harness действительно выгоден, видно по потребностям.
Нужно · Возможность SDK
- Долгий multi-turn - Sessions и provider-backed conversation sessions
- Передача специалисту - Handoffs или agent as tool
- Подтверждение действия - Human in the loop с pause и resume state
- Диагностика - Tracing включен по умолчанию в server runtimes
- Проверка входа и результата - Guardrails и output schemas
Долгий multi-turn закрывают sessions, передачу специалисту - handoffs, подтверждение действия - human in the loop с pause и resume, диагностику - tracing по умолчанию. И развилка про multi-agent, которую стоит решать по владению результатом, а не по моде.
Manager или handoff. Agent as tool оставляет управление у менеджера и хорошо подходит для общей финальной формулировки. Handoff передаёт активный разговор специалисту. Выбирайте по ownership результата, а не по моде на multi-agent.
OpenAI разобран. Anthropic устроен иначе - его Messages API stateless, и это меняет адаптер.