Kihagyás

Agent Architecture Mental Model

Egy agentic application nem egyszerűen „egy LLM néhány toollal”. Olyan szoftverrendszer, amelyben egy probabilisztikus döntési komponens determinisztikus runtime-on belül működik, miközben a runtime tulajdonolja a state-et, policyt, executiont, persistence-et és observabilityt.

Hasznos kiinduló modell:

User / API / Event
        ↓
Application Use Case
        ↓
Agent Runtime / Orchestrator
        ↓
Context Builder → Model Gateway
        ↓                ↓
   state projection   decision proposal
                         ↓
              Policy / Validation Layer
                         ↓
             Skill / Tool / Workflow
                         ↓
                 External World
                         ↓
                    Observation
                         ↓
                  Runtime State

Az LLM tehát egy komponens a döntési útvonalban, nem az application tulajdonosa.

Model vs agent vs runtime

Ezeket a fogalmakat érdemes külön tartani:

Model
  probabilistic inference component

Agent
  goal-directed execution capability built around a model

Agent Runtime
  software that owns lifecycle, state, tools, policies, budgets and loop control

Application
  business/domain system that decides why the agent exists and what it may accomplish

Egy model tud szöveget generálni anélkül, hogy agent lenne. Agent azért létezik, mert egy runtime state-et, capabilityket és execution loopot ad köré. A tényleges business contract továbbra is az application felelőssége.

Probabilistic core, deterministic shell

A központi engineering pattern:

        deterministic shell
┌────────────────────────────────────┐
│ auth / policy / state / budgets    │
│ validation / retries / audit       │
│                                    │
│       probabilistic core           │
│      ┌──────────────────┐          │
│      │      LLM         │          │
│      │ plan / classify  │          │
│      │ decide / draft   │          │
│      └──────────────────┘          │
│                                    │
│ tool execution / persistence       │
└────────────────────────────────────┘

A modellt ott használd, ahol a semantic reasoning értéket ad:

  • ambiguous request értelmezése,
  • planning hiányos információból,
  • hasznos következő action kiválasztása,
  • információ összefoglalása vagy transzformálása,
  • jelentés kinyerése unstructured adatból,
  • több valid stratégia közötti választás.

A determinisztikus software feleljen a hard guarantee-kért:

  • authorization,
  • data integrity,
  • pénzmozgás,
  • permission check,
  • schema validation,
  • state transition,
  • idempotency,
  • resource budget,
  • approval gate,
  • audit logging,
  • cancellation és timeout enforcement.

A model ajánlhat SEND_REFUND actiont; az application code dönti el, hogy a caller jogosult-e, refundable-e az order, kell-e approval, és megtörtént-e már a művelet.

Control plane vs execution plane

Hasznos két fogalmi síkot megkülönböztetni.

Control plane

A control plane azt dönti el, mi történjen következőnek, milyen constraint-ek mellett.

Tipikus responsibilityk:

  • run creation,
  • goal és policy resolution,
  • context construction,
  • planning,
  • next-action selection,
  • routing skills/tools felé,
  • budget accounting,
  • stop-condition evaluation,
  • checkpointing.

Execution plane

Az execution plane tényleges műveleteket végez a rendszereken.

Példák:

  • GitHub repository olvasása,
  • SQL végrehajtása kontrollált data service-en keresztül,
  • email küldése,
  • fájl írása,
  • deployment API hívása,
  • search index lekérdezése.

Ehhez nem kell külön microservice. A distinction egy modular monolithon belül is létezhet. Először responsibility boundary, és csak másodsorban deployment boundary.

Canonical state a modellen kívül éljen

Production runtime ne támaszkodjon a conversation contextre canonical state store-ként.

Rossz mental model:

LLM conversation
      =
current truth about the run

Jobb:

State Store
   ↓
selected projection
   ↓
Model Context

A runtime state például tartalmazhatja:

run_id
status
goal
success_conditions
current_plan
completed_steps
pending_steps
observations
artifacts
budgets
approvals
tool_results
failure_history
state_version

A model csak a current decisionhöz releváns projectiont kapja.

Ez lehetővé teszi:

  • resumability,
  • concurrency control,
  • auditálhatóság,
  • replay/debugging,
  • context compaction,
  • model/provider cserét,
  • deterministic state transitionöket.

Fő architekturális boundaryk

Application boundary

A business use case-eket és domain rule-okat definiálja. Az agent nem lehet kerülőút az application service-ek körül.

Model boundary

A provider-specifikus viselkedés model gateway vagy port mögött legyen. Ne szóródjanak provider SDK callok a business module-okban.

Capability boundary

Tools és skills szűk, typed capabilityket expose-oljanak, ne raw infrastructure hozzáférést.

Preferáld:

create_support_ticket(input)

az ilyen helyett:

execute_arbitrary_http_request(url, method, body)

State boundary

A runtime tulajdonolja a durable execution state-et. Model context nem adatbázis.

Policy boundary

Authorization és safety rule-ok a model compliance-től függetlenül enforce-olhatók legyenek.

External-system boundary

Minden side effect adapteren menjen át, ahol timeout, retry, idempotency, credential és observability kontrollálható.

Failure boundaryk AI mellett

A hagyományos code/infrastructure failure mellé bekerül a semantic failure: a model syntactically valid, de rossz döntést hozhat.

Hasznos kategóriák:

Model failure
  invalid / low-quality decision

Contract failure
  schema or business validation fails

Policy failure
  action not authorized

Tool failure
  dependency unavailable / timeout

State conflict
  stale observation / optimistic lock conflict

Execution failure
  side effect partially or ambiguously completed

Ezek ne egyetlen generic agent failed exceptionbe essenek.

Először application, csak utána distributed system

Az AI nem jelenti automatikusan azt, hogy microservice architecture kell.

Erős kezdeti struktúra lehet:

Modular Monolith
├── domain modules
├── application/use cases
├── agent_runtime
├── skills
├── retrieval
├── policy
└── infrastructure adapters

A service extractionnek konkrét oka legyen:

  • independent scaling,
  • külön ownership,
  • erősebb isolation,
  • eltérő availability requirement,
  • special infrastructure,
  • independent deployment lifecycle,
  • security/tenant boundary.

Példa: support agent

HTTP API
  ↓
ResolveCustomerIssue Use Case
  ↓
Agent Runtime
  ├── Model Port
  ├── CustomerLookup Skill
  ├── OrderRead Skill
  ├── RefundProposal Skill
  └── TicketCreation Skill
          ↓
      Policy Layer
          ↓
Application Services
          ↓
CRM / Orders / Payments

Az agent reasoning alapján mondhatja, hogy refund indokolt. De nem kerüli meg a refund application service-t: ugyanaz a deterministic refund policy fut, mint normál UI/API útvonalon.

Anti-patternök

Az LLM maga az application

request → giant prompt → tool access → hope

Nincs explicit state, policy vagy use-case boundary.

Provider SDK mindenhol

Business code sok modulban közvetlenül importál egy model providert. Nehéz lesz tesztelni és cserélni.

Raw infrastructure toolként

A model generic shell/database/network hozzáférést kap, amikor domain-specific capability biztonságosabb lenne.

Hidden state a promptokban

Fontos execution state csak message-ekben vagy model-created note-okban létezik.

Agent megkerüli a domaint

A normál application path validál, az agent viszont közvetlen infrastruktúrát hív és kihagyja a rule-okat.

Gyakorlati design rule

Minden responsibilitynél kérdezd meg:

Semantic judgement kell, vagy guarantee?

Ha judgement kell, az LLM részt vehet benne.

Ha guarantee kell, deterministic software tulajdonolja.

Takeaways

  • A model nem az agent runtime.
  • Az agent runtime nem az egész application.
  • Probabilistic reasoning determinisztikus boundarykon belül működjön.
  • Canonical state a model contexten kívül legyen.
  • Legyen explicit application, model, capability, policy és state boundary.
  • Ne vezess be microservice-eket csak azért, mert AI van a rendszerben.
  • Az architecture fontosabbá válik, nem kevésbé fontossá, amikor a rendszer egy része probabilisztikus.