> Az OpenAI Agents SDK értékelése: a runner-ciklus, a tracing, a guardrail-ek és a jóváhagyások, plusz mit fizet a kiadási tempó és a Responses-only funkciók.
>
> Web page: https://balazscsorba.com/hu/blog/openai-agents-sdk · Language: Magyar · Also available in: [English](https://balazscsorba.com/blog/openai-agents-sdk.md) · [Deutsch](https://balazscsorba.com/de/blog/openai-agents-sdk.md)
> Author: Balázs Csorba · Published: 2026-09-11 · Keywords: openai agents sdk, openai agents sdk vs langgraph, python agent framework comparison, openai agents sdk guardrails, agent run tracing tool calls, openai agents sdk human in the loop, openai-agents pypi, agents sdk vs responses api

[Blog](https://balazscsorba.com/hu/blog)/MI-ágensek

# OpenAI Agents SDK: könnyű agent-runtime éles szélekkel

Az OpenAI Agents SDK értékelése: a runner-ciklus, a tracing, a guardrail-ek és a jóváhagyások, plusz mit fizet a kiadási tempó és a Responses-only funkciók.

[Balázs Csorba](https://balazscsorba.com/hu/about)·2026\. szeptember 11.·10 perc olvasás

-   Agent runtime
-   Tracing
-   Guardrails
-   MCP
-   Python

![Négy négyzetből álló kis gyűrű nagyobb gyűrűben, kívül háromszögek és két pajzs.](https://balazscsorba.com/images/blog/openai-agents-sdk/cover.webp?v=e06895c0bd)

## A lényeg röviden

-   A Python csomag MIT licenc alatt áll, Python 3.10 vagy újabb kell hozzá, és 2026. október 2-én a 0.23.1 verziónál járt, 123 PyPI kiadással 2025. március óta.
-   A runner alapértelmezetten max\_turns=10 körre korlátoz, és MaxTurnsExceeded hibát dob, ez az ésszerű alapérték, amelyet a legtöbb csapatnak meg kell tartania.
-   A tracing alapértelmezetten be van kapcsolva, és hordozza a modellek és az eszközök bemeneteit és kimeneteit, ezért a production futásoknak trace\_include\_sensitive\_data=False értéket kell állítaniuk.
-   A guardrail-ek alapértelmezetten az ügynök mellett futnak, így a tripwire megtelésekor a tokenek már elmentek; a költségérzékeny útvonalakon a run\_in\_parallel=False a megfelelő beállítás.
-   A computer use, a hosted tool search és a programmatic tool calling elutasításra kerül a Chat Completions modelleken és a nem Responses alapú backenden, így a providerfüggetlenségi állítás halkabb a valóságnál.

Ezen az oldalon

1.  [Mi ez](https://balazscsorba.com/#what-it-is)
2.  [Hogyan működik a ciklus](https://balazscsorba.com/#how-it-works)
3.  [Első lépések](https://balazscsorba.com/#getting-started)
4.  [Guardrail-ek és jóváhagyások](https://balazscsorba.com/#guardrails-and-approvals)
5.  [Tracing és költségkontroll](https://balazscsorba.com/#tracing-and-cost)
6.  [Hol csikrik](https://balazscsorba.com/#where-it-shingles)
7.  [Ítélek](https://balazscsorba.com/#verdict)
8.  [Források](https://balazscsorba.com/#sources)

Cikk meghallgatása

0:000:00

**Az OpenAI Agents SDK** az a agent-runtime, amelyet az OpenAI Pythonra és TypeScriptra szállít: kevés primitív, egy fordulóciklus, és olyan tracing, amely már azelőtt be van kapcsolva, hogy bárki kérné. Jó alapérték azoknak a csapatoknak, amelyek OpenAI-modellekre egységesülnek, és a ciklust inkább egy könyvtárban, mint kézzel írt asyncióban látják. A rossz eszköz, amint a workflow állapotgéppé válik.

A nyers Responses API és egy teljes оркесztrációs keret közé ül. A Responses API a modell interfésze. Az SDK hozzáad egy runnert, amely a fordulókat, az eszközhívás-végrehajtást, a guardrail-eket, a handoffokat és a sessionöket kezeli. A LangGraphhez hasonló graph runtime-ok mindkettő fölött helyezkednek el, és kifejezetten kódolják a workflow-t. A dokumentáció maga húzza meg a határt: közvetlenül a Responses API-t kell használni, ha a ciklust, az eszköz-végrehajtást és az állapotkezelést saját kezünkbe akarjuk venni.

## Mi ez

A felépítés szándékosan vékony. Egy ügynök utasításokból, modellből és eszközökből áll. A delegációnak pontosan két formája van: az Agent.as\_tool() egy menedzserhez tartozik, amely megtartja a beszélgetést, a handoff() pedig egy szakemberhez, aki átveszi. A guardrail-ek szokásos függvények, amelyek tripwire-jelzőt adnak vissza. Minden más, a sessionök, az MCP, a sandbox-kliensek, a realtime és a voice, modulok e körül, nem új absztrakció, amit előbb tanulni kellene.

-   **Csomag**: `openai-agents` a PyPI-on, MIT licenc, Python 3.10 vagy újabb kell hozzá.
-   **Verzió**: 0.23.1, 2026. október 2. A 123. kiadás a 2025. március 4-i 0.0.1 óta; ezekből 77 csak 2026-ban jelent meg.
-   **Modellek**: alapértelmezetten az OpenAI Responses API, alternatívaként a Chat Completions, más szolgáltatókhoz LiteLLM- és AnyLLM-adapter.
-   **Eszközök**: egyszerű Python-függvények a @function\_tool dekorátor mögött, továbbá hosztolt eszközök, computer use, shell és apply patch.
-   **MCP**: stdio, Streamable HTTP, az elavult SSE szállítás és hosztolt MCP-szerverek, mindegyik eszköszűrőkkel és jóváhagyási szabályokkal.
-   **Memória**: SQLite, SQLAlchemy, Redis, MongoDB, Dapr, titkosított és az OpenAI Conversations API-re épülő sessionök.
-   **Tartós végrehajtás**: nincs a csomagban; a dokumentáció hosszú futásokhoz Temporal, DBOS, Dapr vagy Restate rendszert ajánl.

## Hogyan működik a ciklus

A Runner.run() ciklus, nem függvényhívás. Az aktuális bemenetet elküldi a modellnek, majd a válasszal hármat tesz: a várt kimeneti típusú, eszközhívás nélküli szöveget végső kimenetnek tekinti, handoff esetén másik ügynökre vált, vagy végrehajtja a kért eszközöket, hozzáfűzi az eredményeket, és kezdi újra.

![Az OpenAI Agents SDK runner-ciklusának egy fordulója A bemenet egy ügynökhöz, majd egy modellhíváshoz kerül. Ha a válasz a várt típusú szöveget tartalmazza és nincs eszközhívás, a futás végső kimenetként ér véget, és mindkettő trace-ként exportálódik. Ellenkező esetben a modell eszközhívásokat állít elő, amelyek eredménye a bemenethez fűződik, és a ciklus megismétlődik, a max_turns korláttal, amely alapértelmezetten 10. A guardrail-ek az ügynök mellett futnak.](https://balazscsorba.com/images/blog/openai-agents-sdk/diagram-7.webp?v=0f88cd58bc)

A futás a várt típusú szövegnél és eszközhívás nélkül ér véget. Minden más újabb forduló, a tízes alapértelmezett korlátig.

Ezt a végső kimenet definícióját érdemes kétszer elolvasni, mert ez teszi a ciklust ciklussá. Egy futás akkor ér véget, amikor a modell a kért típusú szöveget adja és nem kér semmit. Minden más életben tartja, ezért a max\_turns az első beállítás, amit szándékosan kell eldönteni, nem örökölni. A max\_turns=None teljesen eltávolítja a korlátot.

**Három belépési pont, egy RunConfig**

**A Runner.run()** aszinkron. **A Runner.run\_sync()** szkriptekhez és jegyzetfüzetekhez csomagolja. **A Runner.run\_streamed()** RunResultStreaming eredményt ad, amelynek stream\_events() iterátora típusos eseményeket szolgáltat, miközben a modell dolgozik. Mindhárom RunConfig-ot fogad, amely egy futásra felülírja a modellt, a szolgáltatót, a guardrail-eket, a tracinget és az eszközhiba-viselkedést.

## Első lépések

A pip install openai-agents az egész beállítás, és az SDK az OPENAI\_API\_KEY-t az első kliens létrehozásakor olvassa. Egy minimális ügynök egy eszközzel és tipizált válasszal körülbelül húsz sor:

```
from pydantic import BaseModel

from agents import Agent, Runner, function_tool

@function_tool
def order_status(order_id: str) -> str:
    """Look up the fulfilment status of an order."""
    return STATUS.get(order_id, "unknown")

class Reply(BaseModel):
    answer: str
    order_id: str

agent = Agent(
    name="Order assistant",
    instructions="Answer with the status of the order the customer names.",
    tools=[order_status],
    output_type=Reply,
)

result = Runner.run_sync(agent, "Where is order A-1024?", max_turns=6)
print(result.final_output)
print(result.context_wrapper.usage.total_tokens)
```

A dekorátor a szignatúrából és a docstringből állítja elő a JSON sémát, így a modell pontosan annyit lát, amennyit a docstring állít. Az output\_type validált Pydantic modellt csinál a végső üzenetből string helyett. Az usage összesíti az összes modellhívást a futásban, azokat is, amelyek eszközhívásokat és handoffokat termeltek.

**A tracing be van kapcsolva, és adatokat tárol**

A tracing alapértelmezetten be van kapcsolva, és a trace\_include\_sensitive\_data értékén True hagyásával exportál az OpenAI backendre, így a generation spanek a modell bemeneteit és kimeneteit, a function spanek pedig az eszköz argumentumait és eredményeit hordozzák. Az ügyféladatokat érintő production futásoknak a RunConfig.trace\_include\_sensitive\_data=False értéket kell állítaniuk, vagy az OPENAI\_AGENTS\_TRACE\_INCLUDE\_SENSITIVE\_DATA=0 környezeti változót a folyamat indítása előtt.

## Guardrail-ek és jóváhagyások

A guardrail-eket értik félre a leggyakrabban, mert nem mind ugyanazon a ponton lépnek közbe. A bemeneti guardrail-ek csak a lánc első ügynökére futnak, a kimenetiek csak arra az ügynökre, amelyik a végső kimenetet állítja elő, és egyik sem látja a köztük lévő delegált munkát.

-   A run\_in\_parallel=False egy bemeneti guardrail-on megállítja az ügynököt, mielőtt elindul. Az alapértelmezés az ügynök mellett futtatja a guardrail-t, ami csökkenti a késleltetést, de a tripwire megtelésekor a tokenek már elmentek.
-   Az eszköz guardrail-ek egyedi function toolokat és lokális MCP-eszközöket ölelnek körül, és az egyetlen fajta, amely a multi-agent lánc minden hívását látja.
-   A tripwire InputGuardrailTripwireTriggered vagy OutputGuardrailTripwireTriggered hibát dob. Ha maga a guardrail-függvény dob, az ítélet ismeretlennek számít, és a runner a hiba megjelenítése előtt menti a befejezett fordulót.
-   A needs\_approval egy eszközön, az Agent.as\_tool() híváson, a ShellTool vagy az ApplyPatchTool eszközön megállítja a futást; a függőben lévő hívások a result.interruptions mezőben jelennek meg.
-   A hívható jóváhagyási szabályok zárt ajtóként működnek. Ha az argumentumok hiányoznak, hibásak vagy nem JSON-objektumok, a hívás kézi jóváhagyást igényel, nem megy át automatikusan.

A jóváhagyási állapot a RunState-en keresztül sorosítható, így egy leállt futás egy sorban várakozhat, és másik folyamatban folytatható. A dokumentáció egyértelműen kimondja, hogy a RunState.from\_json() nem hitelesít semmit: egy nem megbízható helyen tárolt pillanatkép utasításkészlet, amelyet a szerver végrehajt, ezért szerveroldali tárolóba kell kerüljön, a jóváhagyót pedig az alkalmazásnak kell hitelesítenie. Ez ugyanaz a jóváhagyási minta, mint a [human-in-the-loop értékelésben](https://balazscsorba.com/hu/blog/human-in-the-loop-ai-agents), csak állapotfájl helyett socket.

## Tracing és költségkontroll

A tracing a legerősebb érv emellett, és egyben a legkevésbé kontrollált része. A spanek lefedik a runnert, a taskot és a fordulót, minden ügynököt, minden generálást, minden függvényhívást, a guardrail-eket, a handoffokat és a hangot. Az alapértelmezett BatchTraceProcessor a háttérben másodpercenként exportál, így egy worker befejezheti a munkát és kiléphet, mielőtt a dashboard megjeleníti a futást.

-   Alapértelmezetten keletkező spanek: runner, task, turn, agent, generation, function, guardrail, handoff, transzkripció és beszéd.
-   Globálisan kikapcsolható az OPENAI\_AGENTS\_DISABLE\_TRACING=1 vagy a set\_tracing\_disabled(True) hívással, egy futásra a RunConfig(tracing\_disabled=True) értékkel.
-   Szállítási garanciához a flush\_traces() hívást a trace kontextus elhagyása után kell meghívni. A tracing kikapcsolása nem dobja el a már pufferezett spaneket.
-   Az add\_trace\_processor() hozzáad egy célpontot, és az OpenAI exportőrt regisztráltan hagyja. A set\_trace\_processors() lecseréli az alapértelmezést, saját BatchTraceProcessorrel és exportőrrel kell.
-   A dokumentáció körülbelül 27 külső processzort sorol fel, köztük a Langfuse-ot, az MLflow-t, az Arize Phoenixot, a LangSmith-et, a Braintrustot, a Datadogot és a Pydantic Logfire-t.

A költségkontroll számolás, nem konfiguráció. A result.context\_wrapper.usage a requests, input\_tokens, output\_tokens, total\_tokens értékeket, a kérésenkénti bejegyzéseket, valamint a gyorsítótárazott és reasoning token részleteket tartalmazza; a Responses session tömörítési kérése ugyanazokba az összegekbe kerül. A fontos szám a sikeres futásonkénti költség, és a legnagyobb hatású kar a max\_turns, mert egy olyan ciklus, amelynek tizenkét forduló kell a kudarchoz, minden alkalommal tizenkettőt tölt.

**Zero Data Retention**

A tracing nem érhető el azoknál a szervezeteknél, amelyek Zero Data Retention irányelvet követnek, tehát a beépített dashboard ott nem opció. Ugyanez az érv érvényes minden saját üzemeltetésű exportőrre: a redakciót és a kézbesítést ugyanabba az exportőrbe kell tenni. A külön regisztrált redaktor nem akadályozza meg, hogy egy másik processor megkapja a nem redaktált adatot, mert a trace processzorfüggetlen megfigyelők.

## Hol csikrik

Kezdjük a gyengeségekkel. A tartós végrehajtás nincs a csomagban: egy olyan futásnak, amelynek túl kell élnie egy folyamat újraindítását, órákig kell várnia jóváhagyásra, vagy új konténerben kell folytatnia, Temporal, DBOS, Dapr vagy Restate kell mellé. A Python szandbox- és harness-munka 0.14.0-ban, 2026 áprilisában érkezett, a TypeScript-támogatást az írás időpontjában még jövőbeli munkaként írta le a vendor. A tracing alapértelmezetten hasznos adatokat küld az OpenAI-nak, és ZDR alatt egyszerűen nem elérhető. És a providerfüggetlenségi állítás halkabb, mint amennyire hangzik: a computer use, a hosted tool search és a programmatic tool calling elutasításra kerül a Chat Completions modelleken és a nem Responses backenden.

Ezután jön a kiadási tempó. A projekt 2026 első kilenc hónapjában hetvenhét kiadást adott ki, és a 0.21.0 az openai>=3.0.0,<4 alsó korlátra emelte, ami az alapértelmezett szolgáltatót HTTPX2-re váltotta, és eltörte azokat az alkalmazásokat, amelyek legacy httpx klienst adtak át. Egy ilyen tempóban továbbra is 0.x verziószámú könyvtár a rögzített verzió és a changelog olvasásának érve, nem a release-címsor olvasásáé.

**Opció**

**Vezérlési modell**

**Tartós végrehajtás**

**Legutóbbi kiadás, 2026. október**

**OpenAI Agents SDK**

Modellirányított ciklus, handoffok, ügynökök eszközként

Külső: Temporal, DBOS, Dapr, Restate

0.23.1

**LangGraph**

Kifejezett graph checkpointokkal

Beépített

1.2.14

**Pydantic AI**

Kód-orchestráció, tipizált ügynökök

Külső: Temporal, DBOS, Prefect, Restate

2.54.0

**Google ADK**

Modellirányított ügynökök plusz workflow-ügynökök

Beépített, ADK 2.0 workflow runtime

2.11.0

A negyedik oszlopot olvassa a második előtt. A LangGraph 1.x-nél és az ADK 2.x-nél kompatibilitási ígéret van, a 0.23.1-nél az OpenAI egy patch kiadásban is mozgathat egy konstruktor-aláírást, amit az openai kliens alsó korlátjával már megtett. A vezérlési modell oszlopa kevésbé fontos, mint látszik: egy modellirányított ciklus gyorsabban épül, és egy graph csak addig könnyen követhető, amíg a graph kicsi marad.

## Ítélek

Az SDK ott nyer, amit később nehéz pótolni. A tracing, amely már a megfigyelhetőségi kód megírása előtt létezik, a tisztán sorosítható jóváhagyási megszakítások és az MCP négy szállításon át, saját kliens nélkül, mindegyik valódi fejlesztési időt takarít meg. Ott veszít, amit később nem lehet átírás nélkül pótolni: a tartós végrehajtást és azt a kifejezett vezérlési folyamat, amely naprakésszé teszi a workflow-t.

1.  Vedd fel, ha a csapat OpenAI-modellekre egységesül, és a workflow egy guardrail-ekkel és jóváhagyásokkal rendelkező eszközciklus. Erre tervezték.
2.  Vedd fel, ha a tracing nem tárgyalható, mert a span modell és a dashboard már a runtime-ra van kötve, nem utólag lett ragasztva.
3.  Vedd fel MCP-dús ügynökökhöz, ahol a négy szállítás és a szerverenkénti eszköszűrők több kódot spárnak, mint amennyibe a framework kerül.
4.  Ne vetted fel egyetlen runtime-ként, ha a futásoknak túl kell élniük egy újraindítást, órákig kell várniuk egy emberre, vagy friss konténerben kell folytatniuk. Párosítsd Temporal-lal vagy DBOS-sel az első naptól.
5.  Ne vetted fel olyan workflow-hoz, amelynek következő lépése üzleti szabály. Ha a sorrend ismert, egy graph runtime vagy egyszerű kód őszintébben mondja ki, mint egy modell, amely talán nem is követi.
6.  Hagyd ki teljesen, ha az egész feladat egy modellhívás, amely egyetlen választ ad. A Responses API plusz Pydantic kisebb és olcsóbb.

Ebből semmi nem hibája a csomagnak. Ez egy kis, olvasható, MIT-licencű könyvtár, amely egy szűk feladatot rendesen elvégez, és ezt a saját dokumentációjában be is mondja. Az elkerülendő hiba nem az, hogy ezt választod, hanem hogy azért választod, mert a tracing ingyenes, és egy év múlva felderül, hogy a workflow logika olyan promptokban él, amelyeket senki nem diffel. A tartós végrehajtás és az üzleti szabályok maradjanak a runneren kívül.

> _Elég funkció ahhoz, hogy érdemes legyen használni, de elég kevés primitív ahhoz, hogy gyorsan megtanulható legyen._ — a két tervezési alapelv az OpenAI Agents SDK dokumentációjából.

## Források

1.  [OpenAI Agents SDK documentation](https://openai.github.io/openai-agents-python/)
2.  [OpenAI Agents SDK documentation](https://openai.github.io/openai-agents-python/running_agents/)
3.  [OpenAI Agents SDK documentation](https://openai.github.io/openai-agents-python/guardrails/)
4.  [OpenAI Agents SDK documentation](https://openai.github.io/openai-agents-python/human_in_the_loop/)
5.  [OpenAI Agents SDK documentation](https://openai.github.io/openai-agents-python/tracing/)
6.  [OpenAI Agents SDK documentation](https://openai.github.io/openai-agents-python/config/)
7.  [openai-agents 0.23.1 on PyPI, release history and licence](https://pypi.org/project/openai-agents/)
8.  [OpenAI](https://openai.com/index/the-next-evolution-of-the-agents-sdk/)
9.  [OpenAI API documentation](https://developers.openai.com/api/docs/guides/agents)
10.  [Arize](https://arize.com/ai-agents/agent-frameworks/)

## Gyakori kérdések

Ingyenes az OpenAI Agents SDK?

Az SDK maga MIT licenc alatt áll, és a pip install openai-agents telepíti. A költség az API-nál keletkezik: a ciklus által hívott modellek tokenenként számolnak, és az OpenAI szerint az 2026. áprilisi harness- és sandbox-képességek a tokenre és eszközhívásra basierende szokásos API-árazást használják.

Használható-e nem OpenAI modellekkel?

Igen. A csomag LiteLLM- és AnyLLM-adaptert szállít, olvassa az OPENAI\_BASE\_URL változót, és a projekt README-je több mint 100 támogatott modellt említ. Több képesség azonban Responses-only, és elutasításra kerül a Chat Completions modelleken és a nem Responses backenden, ezért egyetlen modellhívás helyett a teljes agent futását kell tesztelni.

Miben különbözik az Agents SDK a Responses API-tól?

A Responses API a modell interfésze; az SDK köré runtime épül, amely a fordulókat, az eszközhívás-végrehajtást, a guardrail-eket, a handoffokat és a sessionöket kezeli. Ha a feladat egyetlen hívás, amely egyetlen választ ad, az SDK csak felesleges gépezetet ad hozzá, és a Responses API a kisebb választás.

Hogyan működik az eszközhívások emberi jóváhagyása?

Ha egy function toolon, az Agent.as\_tool() híváson, a ShellTool vagy az ApplyPatchTool eszközön beállítják a needs\_approval értéket, a futás ToolApprovalItem elemekkel áll meg a result.interruptions mezőben. Az eredményt a to\_state() szerializálja, a state.approve() vagy state.reject() dönt, majd a Runner.run(agent, state) folytatja. A hívható jóváhagyási szabályok zárt ajtóként működnek, ha az argumentumok nem értelmezhetők.

Írta: Csorba Balázs

Senior fullstack és AI mérnök Stájerországban – több mint 10 év Vue, Nuxt, Node.js és PHP, ma AI-ügynököknek építek eszközöket.

[AI fejlesztés és MCP szerverek →](https://balazscsorba.com/hu/expertise/ai-engineer)[Rólam →](https://balazscsorba.com/hu/about)

## További cikkek

-   [Eszközök tervezése AI-ágenseknek: nevek, leírások, sémák és hibaüzenetek](https://balazscsorba.com/hu/blog/agent-tool-design-descriptions-errors)
-   [Legacy kódbázis migrálása coding agentekkel: strangler fig playbook](https://balazscsorba.com/hu/blog/coding-agents-legacy-codebase-migration)
-   [Háttérben futó kódoló ügynökök: PR-ek, sorok és review](https://balazscsorba.com/hu/blog/background-agents-async-pr-workflow)
-   [Kontextusromlás hosszan futó ügynököknél: törlés, tömörítés, memória és al-ügynökök](https://balazscsorba.com/hu/blog/context-rot-compaction-long-running-agents)

## Pont erre van szükséged?

Írj a projektedről vagy a pozícióról – szívesen hallok felőled.

[Lépj velem kapcsolatba](mailto:contact@balazscsorba.com) [Kapcsolódjunk LinkedInen](https://www.linkedin.com/in/balazs-csorba)
