OpenAI Agents SDK, OpenAI Agents API și Responses API sunt cele trei căi prin care construiești un agent pe platforma OpenAI, iar diferența dintre ele se reduce la două întrebări: cine rulează bucla agentului și cine îi păstrează starea. Cu Responses API apelezi modelul și scrii tu bucla; cu OpenAI Agents SDK bucla rulează în procesul tău, dintr-o bibliotecă open-source; cu Agents API o rulează OpenAI, care păstrează și sesiunea. Ghidul le compară pe criterii de producție, cu documentația oficială citită la 8 octombrie 2026.
| Pe scurt | Responses API | Agents SDK | Agents API |
|---|---|---|---|
| Ce este | API-ul de bază pentru apeluri către model | bibliotecă open-source, Python și TypeScript | serviciu găzduit, în public beta |
| Cine ține bucla | codul tău | Runner-ul bibliotecii, în procesul tău |
OpenAI, printr-un harness gestionat |
| Unde stă starea | la tine sau, opțional, la OpenAI | în stocarea ta sau, opțional, la OpenAI | la OpenAI, în sesiune, până o ștergi |
| Procesarea datelor în UE | disponibilă, cu aprobare | cea a API-ului apelat | nu: rezidență doar în SUA, fără ZDR |
OpenAI Agents SDK, Agents API, Responses API: ce desparte cele trei căi
Un agent are trei piese: modelul, bucla care execută uneltele cerute de model și starea care trece de la un pas la altul. Modelul este același pe toate cele trei căi; se schimbă cine deține celelalte două piese. Ghidul oficial de alegere pune problema la fel: alegi un runtime după locul în care rulează orchestrarea și după cine administrează starea între sarcini. Al patrulea punct de pornire de pe pagină, ChatKit, este o interfață de chat, nu un runtime.
Cele trei sunt straturi, nu trepte: Agents SDK apelează implicit Responses API, iar cheia pentru Agents API cere și permisiunea de scriere pe Responses, pentru inferență.
Responses API: apelezi modelul și ții tu bucla
Responses API este interfața recomandată de OpenAI pentru toate proiectele noi; Chat Completions rămâne suportat. Intrarea și ieșirea nu mai sunt mesaje, ci Items tipizate: mesaj, apel de funcție, rezultat de funcție, raționament. Pentru agenți contează un detaliu din documentație: GPT-6 Astra și GPT-6.1 Sol cer Responses API pentru tool calling. Migrarea, costul și cache-ul sunt în ghidul de migrare pe GPT-6 Sol și Luna.
Primești, fără cod de orchestrare:
- Unelte găzduite: web search, file search, code interpreter, computer use, generare de imagini, shell și servere MCP la distanță. Modelul poate chema mai multe într-o singură cerere.
- Funcțiile tale: modelul întoarce un Item
function_call, tu execuți funcția și trimiți înapoi unfunction_call_output. - Trei feluri de a ține starea: retrimiți tu istoricul, înlănțui răspunsurile cu
previous_response_idsau folosești Conversations API. Răspunsurile se stochează implicit, cu retenție de 30 de zile;store: falseoprește stocarea.
Nu primești bucla. Exemplul este fluxul din ghidul oficial de function calling, adaptat minim: altă funcție, iar cei doi pași din documentație sunt puși într-o buclă cu limită.
import json
from openai import OpenAI
client = OpenAI()
tools = [
{
"type": "function",
"name": "stare_comanda",
"description": "Întoarce starea unei comenzi după numărul ei.",
"parameters": {
"type": "object",
"properties": {"numar_comanda": {"type": "string"}},
"required": ["numar_comanda"],
},
},
]
def stare_comanda(numar_comanda: str) -> str:
return f"Comanda {numar_comanda}: predată curierului, livrare estimată mâine."
input_list = [{"role": "user", "content": "Unde este comanda RO-1042?"}]
for _ in range(6): # frâna o pui tu
response = client.responses.create(
model="gpt-6-astra",
instructions="Răspunzi doar pe baza rezultatului întors de tool.",
tools=tools,
input=input_list,
)
input_list += response.output # istoricul îl ții tu
apeluri = [item for item in response.output if item.type == "function_call"]
if not apeluri:
break
for item in apeluri:
argumente = json.loads(item.arguments)
input_list.append(
{
"type": "function_call_output",
"call_id": item.call_id,
"output": stare_comanda(**argumente),
}
)
print(response.output_text)
Condiția de oprire, limita de pași și istoricul sunt ale tale, la fel și cazurile netratate aici: argumente JSON malformate, o funcție care aruncă o excepție, un istoric care depășește fereastra de context. Acolo se desparte bucla de demo de cea de producție, iar cursul Construire de Aplicații AI cu Python și SDK-uri parcurge drumul în ordinea firească: întâi scrii bucla de tool use de mână, pe Chat Completions și pe API-ul Anthropic, apoi o predai unui Runner, în modulul „Primul agent cu OpenAI Agents SDK”. Handoff-urile și orchestrarea multi-agent nu intră în acel curs. Pentru primul apel de API, streaming și function calling, vezi ghidul de la API la produs.
OpenAI Agents SDK: bucla rulează în procesul tău
OpenAI Agents SDK este o bibliotecă open-source, sub licență MIT, cu două implementări: openai-agents pentru Python (0.23.1 pe PyPI la 8 octombrie 2026, Python 3.10 sau mai nou) și @openai/agents pentru TypeScript (0.19.0 pe npm, instalat împreună cu zod). Ambele sunt la versiuni 0.x, deci fixează versiunea în proiect.
Bucla scrisă de mână devine un apel, Runner.run(...) în Python și run(...) în TypeScript: cheamă modelul, execută uneltele cerute, schimbă agentul la un handoff și se oprește la răspunsul final. Peste ea stau primitivele din documentația de azi:
- Agenți și unelte: funcții decorate cu
@function_tool, cu schema generată din semnătură, unelte găzduite, alți agenți expuși ca unelte. - Handoff-uri: un agent predă conversația unui specialist, care devine proprietarul răspunsului.
- Guardrails și aprobare umană: verificări pe intrare, pe ieșire sau în jurul unei unelte, plus întreruperi în care rularea așteaptă decizia unui om.
- Sesiuni: biblioteca încarcă și salvează istoricul într-o stocare pe care o controlezi.
- Tracing: activ implicit pe server, cu urmele vizibile în panoul Traces al platformei.
- Sandbox agents: mediu izolat, cu fișiere și shell, prin integrări cu furnizori de sandbox.
Pentru stare, documentația dă patru strategii și recomandă una singură per conversație: istoricul ținut de aplicație, o sesiune, un conversationId sau previous_response_id. Primele două țin starea la tine, ultimele două la OpenAI.
La MCP există două variante. Un server public se atașează ca unealtă găzduită (HostedMCPTool), iar apelul trece prin platforma OpenAI. Un server local sau privat se conectează din procesul tău, prin stdio sau streamable HTTP. Protocolul este explicat în articolul despre MCP.
Exemplul pornește de la quickstart-ul oficial al Agents SDK și combină o unealtă, un handoff și o sesiune.
import asyncio
from agents import Agent, Runner, SQLiteSession, function_tool
@function_tool
def stare_comanda(numar_comanda: str) -> str:
"""Întoarce starea unei comenzi după numărul ei."""
return f"Comanda {numar_comanda}: predată curierului, livrare estimată mâine."
agent_livrari = Agent(
name="Livrari",
handoff_description="Specialist pentru starea comenzilor și livrare.",
instructions="Răspunzi doar pe baza tool-ului stare_comanda. Nu inventezi date.",
model="gpt-6-astra",
tools=[stare_comanda],
)
agent_triaj = Agent(
name="Triaj suport",
instructions="Trimiți fiecare întrebare la specialistul potrivit.",
model="gpt-6-astra",
handoffs=[agent_livrari],
)
session = SQLiteSession("conversatie_123")
async def main() -> None:
rezultat = await Runner.run(
agent_triaj,
"Unde este comanda RO-1042?",
session=session,
max_turns=6,
)
print(rezultat.final_output)
print(rezultat.last_agent.name)
if __name__ == "__main__":
asyncio.run(main())
O capcană de producție: guardrails definite pe agent nu rulează peste tot. Cele de intrare rulează doar pentru primul agent din lanț, cele de ieșire doar pentru agentul care dă răspunsul final, deci validarea unei acțiuni cu efect se pune lângă unealta care o execută. Proiectarea lor, împreună cu handoff-urile și tracing-ul, pe un scenariu de suport pentru un magazin online, este materia lecției „OpenAI Agents SDK: Arhitectura Multi-Agent Nativă” din cursul AI Agents: Arhitectura și Automatizarea Sistemelor Autonome.
La Anthropic, împărțirea este alta: Claude Agent SDK aduce în procesul tău chiar harness-ul agentului de cod, cu uneltele lui de fișiere și terminal. La OpenAI, biblioteca îți dă bucla și primitivele, iar harness-ul Codex se consumă ca serviciu, prin Agents API. Comparația cu LangGraph și CrewAI este în ghidul de framework-uri de agenți.
OpenAI Agents API: OpenAI rulează agentul și îi păstrează sesiunea
Agents API este în public beta: jurnalul de modificări al API-ului îl consemnează la 10 septembrie 2026, iar la 29 septembrie adaugă computer use. Se vede și în cod: metodele stau în spațiul beta.agents, iar cererile poartă antetul OpenAI-Beta: agents=v1.
Serviciul dă aplicației tale acces la harness-ul Codex printr-un API administrat de OpenAI, care gestionează sesiunile, orchestrarea, compactarea contextului și reluarea după erori; aplicația ta furnizează uneltele și alege mediul de execuție. Este harness-ul agentului de cod din ghidul practic Codex, oferit aici ca infrastructură. Lucrezi cu patru concepte: agentul, mediul opțional de execuție (openai_hosted, self_hosted sau none), sesiunea durabilă și evenimentele, urmărite prin streaming sau webhooks.
Capabilitățile, citite la sursă:
- Execuție găzduită. În sandbox-ul OpenAI agentul rulează cod, editează fișiere și produce artefacte; fișierele din
/workspace/outputsrămân descărcabile după expirarea sandbox-ului. - Memorie. Documentația nu descrie o funcție separată cu acest nume. Persistă sesiunea, cu tururile și itemii ei, iar harness-ul rezumă munca anterioară ca să încapă în context.
- Multi-agent. Cu
multi_agent.enabled, agentul deleagă sarcini independente unor subagenți paraleli, implicit cel mult șase simultan. - Computer use. Agentul navighează într-un browser găzduit de OpenAI; aprobarea accesului la fiecare site și autentificarea le tratează aplicația ta.
- Uneltele tale. Serverele MCP la distanță sunt apelate direct de harness. Funcțiile rămân la tine: codul tău primește fiecare apel, iar dacă handlerul nu răspunde, agentul rămâne în așteptare.
Exemplul din quickstart-ul Agents API, cu instrucțiunile traduse:
from openai import OpenAI
with OpenAI() as client:
with client.beta.agents.sessions.create(
agent={
"model": "gpt-6-astra",
"instructions": "Scrii cod curat, îl rulezi și raportezi rezultatul real.",
},
environment={"type": "openai_hosted"},
input="Creează tree.py, un script care afișează arborele de fișiere din directorul curent. Rulează-l și arată-mi rezultatul.",
stream=True,
).with_result_collection() as stream:
for event in stream:
print(event.type)
result = stream.get_final_result()
print(result.output_text)
session_id = result.session_id # cu el continui sau ștergi sesiunea
Nu există buclă în cod: creezi sesiunea, trimiți sarcina, citești evenimentele. Un tur încheiat nu garantează că fiecare unealtă a reușit, avertizează documentația.
Cât costă OpenAI Agents API
Documentația enumeră trei componente: tokenii modelului ales, la tarifele lui de API; uneltele OpenAI, la tarifele lor standard; sandbox-urile găzduite, la tarifele standard de containere. O taxă separată pentru serviciu nu apare. Pe pagina de prețuri (developers.openai.com/api/docs/pricing), la 8 octombrie 2026, containerele erau listate la 0,03 dolari pentru 1 GB, 0,12 dolari pentru 4 GB și 0,48 dolari pentru 16 GB, pe sesiune de 20 de minute. Sandbox-ul găzduit are 1, 4 sau 16 GB de memorie, implicit 4 GB.
Unde stau datele
Pentru o echipă din România, acesta este criteriul care scoate cel mai des Agents API din discuție. Documentația spune că serviciul suportă deocamdată rezidența datelor doar în Statele Unite și nu suportă Zero Data Retention; un sandbox propriu nu schimbă asta, fiindcă harness-ul și inferența rămân în serviciul OpenAI. Starea sesiunii se păstrează până o ștergi. Despre o restricție de acces din UE documentația nu spune nimic. Există și o variantă pe AWS, Bedrock Managed Agents, de verificat în documentația AWS.
Aceeași idee la Anthropic, agentul rulat de furnizor cu execuția uneltelor în sandbox-ul tău, este descrisă în ghidul despre Managed Agents, MCP și guvernanță.
AgentKit, Agent Builder, ChatKit și Assistants API: starea la 8 octombrie 2026
- Assistants API a fost închis la 26 august 2026; înlocuitorii indicați sunt Responses API și Conversations API.
- Agent Builder, editorul vizual de fluxuri, este depreciat din 3 iunie 2026 și are închiderea programată la 30 noiembrie 2026. Ghidul de migrare exportă fluxul sub formă de cod Agents SDK, fără garanția aceluiași comportament; continui cu Agents SDK sau cu un agent de workspace în ChatGPT, pe planurile Business, Enterprise sau Edu. Un tutorial de Agent Builder sau o comparație cu n8n nu mai are rost pentru un proiect nou.
- ChatKit rămâne disponibil. Pentru proiecte noi, documentația recomandă integrarea cu serverul tău: ChatKit este interfața, iar agentul din spate este al tău.
- AgentKit nu mai apare ca produs în ghidurile de agenți. În documentația API citită azi, numele apare doar într-un rând din tabelul de prețuri („Agent Kit”, stocarea fișierelor încărcate prin ChatKit) și într-o intrare din mai 2026 a jurnalului de modificări.
Dacă nu scrii cod, discuția este alta: ghidul ChatGPT Work.
Decisions API este în public beta din 6 octombrie 2026, pe POST /v1/decisions, cu un singur model, gpt-6-luna. Nu este un runtime de agenți: primește text și imagini și întoarce răspunsuri tipizate (probabilitatea unei condiții, o alegere dintr-o listă fixă, un scor pe o grilă). Lângă un agent, locul lui este la margini: rutare, clasificare, verificare înaintea unei acțiuni.
Tabel comparativ: OpenAI Agents SDK vs Responses API vs Agents API
| Criteriu | Responses API | Agents SDK | Agents API |
|---|---|---|---|
| Cine ține bucla | codul tău | Runner-ul, în procesul tău |
harness-ul gestionat de OpenAI |
| Unde stă starea | istoricul tău, previous_response_id sau Conversations API |
sesiuni în stocarea ta; opțional, la OpenAI | sesiunea de la OpenAI: configurație, tururi, itemi |
| Unelte | unelte găzduite și funcțiile tale, executate de tine | funcții, unelte găzduite, MCP local sau găzduit, agenți ca unelte | unelte ale serviciului, MCP, funcții tratate de aplicația ta |
| Observabilitate | ce loghezi tu | tracing încorporat, activ implicit | jurnal de sesiuni și trase, cu export OTLP JSON |
| Facturare | tokeni și unelte găzduite | biblioteca e open-source; plătești API-ul apelat | tokeni, unelte și containere pentru sandbox-ul găzduit |
| Alt furnizor de model | rescrii integrarea | adaptoare pentru alte modele, în pachetul Python | harness și inferență în serviciul OpenAI; variantă pe AWS |
| Procesarea datelor | globală, SUA sau UE, cu aprobare | cea a API-ului apelat | rezidență doar în SUA, fără ZDR |
Ce alegi: cinci scenarii
- Un endpoint care răspunde dintr-o singură cerere, cu căutare pe web sau în documente. Responses API. Uneltele găzduite acoperă cazul.
- Un asistent în produsul tău, cu unelte interne, aprobare umană pentru acțiunile cu efect și istoricul în baza ta de date. Agents SDK, pentru sesiuni, aprobări și guardrails.
- Sarcini lungi pe fișiere și cod: rapoarte din date, investigarea unui incident. Agents API cu sandbox găzduit, dacă datele pot sta în SUA și îți asumi un API în beta. Altfel, Agents SDK cu sandbox agents, pe infrastructura ta.
- Date personale din UE, cu cerință contractuală de procesare în UE sau de ZDR. Responses API pe endpointul regional, cu bucla ta sau cu Agents SDK deasupra, fără Conversations API și fără Agents API.
- Vrei să poți schimba furnizorul de model. Agents SDK, cu uneltele ținute ca funcții și servere MCP, sau o bibliotecă neutră din ghidul de framework-uri citat mai sus.
Criteriile pe care tutorialele le sar
Costul unei rulări lungi
Un agent face mai multe apeluri de model pentru o sarcină, iar fiecare reprocesează instrucțiunile, uneltele și istoricul. Trei precizări din documentație, uitate în estimări: previous_response_id nu reduce factura, fiindcă tokenii de intrare din tot lanțul se facturează din nou; tokenii de raționament se facturează ca ieșire, iar subagenții fac propriile apeluri; un procent mare de intrare citită din cache nu măsoară economia pe sarcină. La Agents API, câmpul usage este orientativ și nu reprezintă factura finală. Măsoară costul pe sarcină dusă la capăt, nu pe apel.
Evaluarea înainte de lansare
Trasele arată dacă agentul a ales unealta potrivită. Pasul următor, un set de date de referință și rulări repetabile, nu mai merită construit pe platforma OpenAI: Evals platform a fost depreciată la 3 iunie 2026, evaluările existente devin doar-citire la 31 octombrie, iar panoul și API-ul au închiderea programată la 30 noiembrie 2026. Calea de migrare indicată de OpenAI este Promptfoo. Ține setul de referință și aserțiunile în depozitul tău. Construcția lui, calibrarea unui model-judecător și porțile de calitate din CI, cu DeepEval și Promptfoo, sunt subiectul cursului AI Evals pentru LLM-uri în Producție.
Dependența de furnizor
La Responses API, specifice OpenAI sunt formatul de Items și uneltele găzduite. La Agents SDK, uneltele tale rămân funcții și servere MCP, deci se mută ușor; orchestrarea se rescrie. La Agents API, la OpenAI stau și bucla, și starea sesiunii, pe un API în beta. Istoria recentă este un argument: Assistants API a fost închis, iar Agent Builder depreciat, ambele în 2026.
Rezidența datelor în UE și ZDR
România intră în regiunea „Europe (EEA + Switzerland)” din documentația OpenAI. La 8 octombrie 2026:
- Responses API suportă stocare și procesare regională în Europa, prin
eu.api.openai.com. Condițiile: eligibilitate stabilită cu echipa de vânzări, aprobare pentru un control de retenție (ZDR sau Modified Abuse Monitoring), un amendament contractual și un adaos de 10 % la tarif pentru modelele eligibile lansate începând cu 5 martie 2026. - Conversations API nu este eligibil pentru ZDR și nu figurează printre serviciile regiunii europene.
- Agents API: rezidență doar în SUA, fără ZDR.
- Agents SDK moștenește regimul API-ului apelat. Regimul traselor trimise în platformă nu este precizat; biblioteca permite dezactivarea trasării.
Acestea sunt fapte de documentație, nu o analiză juridică.
Întrebări frecvente
Care este diferența dintre OpenAI Agents SDK și Responses API? Responses API este apelul către model: scrii tu bucla, oprirea și istoricul. OpenAI Agents SDK este o bibliotecă open-source care rulează bucla în procesul tău și adaugă handoff-uri, guardrails, sesiuni și tracing. SDK-ul apelează implicit Responses API, deci alegi între a scrie orchestrarea și a o prelua.
OpenAI Agents API este disponibil general sau în beta?
În public beta, din 10 septembrie 2026. La 8 octombrie 2026, metodele erau în spațiul beta.agents, iar cererile cereau antetul OpenAI-Beta: agents=v1.
Cât costă OpenAI Agents API? Plătești tokenii modelului ales la tarifele lui de API, uneltele OpenAI la tarifele standard și, dacă folosești sandbox-ul găzduit, tariful standard de containere. Documentația nu listează o taxă separată pentru serviciu.
Pot folosi OpenAI Agents SDK în TypeScript sau doar în Python?
În ambele. Pachetul Python este openai-agents, iar cel TypeScript este @openai/agents, instalat împreună cu zod. Conceptele sunt aceleași: Runner.run și final_output în Python, run și finalOutput în TypeScript.
Responses API înlocuiește Chat Completions?
Chat Completions rămâne suportat, dar OpenAI recomandă Responses API pentru proiectele noi. Pentru agenți diferența este practică: GPT-6 Astra și GPT-6.1 Sol cer Responses API pentru tool calling, iar începând cu GPT-5.4, Chat Completions acceptă tool calling doar cu reasoning_effort setat pe none.
Concluzie
Alegerea se face după cine ține bucla și unde stă starea, nu după model. Responses API îți lasă tot controlul și tot codul. OpenAI Agents SDK preia bucla, handoff-urile, guardrails și trasarea și le rulează în procesul tău. Agents API mută și bucla, și sesiunea la OpenAI: cel mai puțin cod, dar un serviciu în beta, cu rezidența datelor doar în SUA și fără ZDR la 8 octombrie 2026. Ordinea verificărilor: unde au voie să stea datele, cât costă o sarcină dusă la capăt, cum evaluezi agentul și abia apoi câte linii de cod economisești.
Surse
Toate sursele au fost citite la 8 octombrie 2026.
- OpenAI: Agents, ghidul de alegere a runtime-ului
- OpenAI: Function calling
- OpenAI: Agents SDK quickstart
- OpenAI: Agents API quickstart
- OpenAI: Deprecations
- OpenAI: Data controls in the OpenAI platform
Consultate și: jurnalul de modificări, paginile de prețuri și de modele, documentația Agents API și Agents SDK, ghidurile Decisions și ChatKit, PyPI, npm și depozitele oficiale de pe GitHub.
Articol redactat la 8 octombrie 2026. Agents API și Decisions API sunt în beta, iar Agents SDK este la versiuni 0.x: parametrii, limitele și tarifele se pot schimba. Exemplele de cod au fost verificate local la nivel de importuri și de construire a obiectelor; niciunul nu a fost rulat pe API-ul real. Cursuri-AI.ro este furnizor de cursuri plătite, deci parte interesată.
Cursul care continuă acest articol
Construire de Aplicații AI cu Python și SDK-uri (OpenAI, Anthropic): de la API la Produs
Ai citit teoria. În curs o aplici: lecții structurate pe module, exerciții și quiz-uri cu feedback imediat, Profesorul AI integrat în fiecare lecție și progres salvat automat. La final primești o atestare privată de finalizare.
Din programa cursului
- Fundamente: de la API de LLM la mediul tău Python
- Primul apel: chat completions, mesaje și parametri
- Streaming și UX: răspunsuri în timp real
- Function calling / tool use: conectează modelul la codul tău
+ încă 7 module în programa completă
499 lei pe lună pentru acest curs, TVA 21% inclus · sau 1.999 lei pe lună pentru toate cele 25 de cursuri IT Pro (vezi ce înveți în tot parcursul).
Abonament lunar, cu reînnoire automată · anulezi oricând din contul tău · conținut digital cu acces imediat, vezi condițiile de retragere. Atestarea confirmă parcurgerea cursului și este privată — nu este diplomă și nu este calificare recunoscută de stat.