Vissza a bloghoz
Megvalósítás2026. augusztus 19.9 perc olvasásFrissítve 2026. augusztus 23.

Strukturált AI-chatbot-kimenetek: JSON-Séma, validálás és biztonságos tartalékútvonalak

A JSON Schema formába önti a chatbot-válaszokat. A folyamatok azonban csak a szemantikai ellenőrzés, a biztonságos kimenetkezelés és a világos hibakezelési útvonalak révén válnak igazán megbízhatóvá.

Egy AI-chatbot képes lehet meggyőző választ megfogalmazni, mégis kárt tehet egy mögöttes üzleti folyamatban. Egy hiányzó mező, egy kitalált kategória vagy egy ellenőrizetlen hivatkozás elég ahhoz, hogy a CRM, a hibajegykezelő rendszer vagy a weboldal frontendje téves adatokat dolgozzon fel. A strukturált AI-chatbot-kimenetek csökkentik ezt a kockázatot azáltal, hogy kötelező érvénnyel írják le a formátumot és az adattípusokat. Igazán megbízhatóvá azonban csak akkor válnak, ha a sémát, a szakmai jelentéstartalmat, a jogosultságokat és a hibalehetőségeket egymástól függetlenül ellenőrizzük.

Felnőtt minőségellenőr ellenőriz egy fém tengelykapcsolót egy mechanikus idomszerrel egy világos precíziós műhelyben
Egy rögzített idomszer felismeri a megfelelő formát; az anyag, a származás és a jóváhagyás ellenőrzéséhez azonban további vizsgálatokra van szükség.

Ez az útmutató azoknak a weboldal-, termék- és üzemeltetési csapatoknak szól, amelyek a modellkimeneteket gépi úton dolgozzák fel tovább. Megmutatja, mire képes a JSON Schema, hol húzódnak a korlátai, és hogyan építhető ki egy biztonságos útvonal a modell válaszától a tényleges műveletig.

A érvényes JSON még nem jelent megbízható szerződést

Számos modell-API régebbi JSON-módja főként azt biztosítja, hogy a válasz JSON-ként beolvasható (parse-olható) legyen. Azt viszont nem garantálja, hogy az elvárt mezők jelen vannak, vagy hogy a megállapodott típusokat betartja a rendszer. A hivatalos OpenAI dokumentáció a Structured Outputs témakörben ezért kifejezetten különbséget tesz a valid JSON és a sémahűség között. A Microsoft Foundry is úgy írja le a Structured Outputskat, mint a válasz hozzárendelését egy vele együtt elküldött JSON Schema-hoz.

Ez fontos előrelépés: ahelyett, hogy utólag kellene kitalálni a változó mezőneveket, az alkalmazás egy kiszámítható struktúrát kap. Ennek ellenére a szolgáltatók gyakran csak a teljes specifikáció egy részét támogatják. A Gemini strukturált kimenetekre vonatkozó dokumentációja felsorolja a támogatott típusokat és tulajdonságokat, de egyúttal rámutat a részhalmazokra és a komplexitási korlátokra is. A sémát ezért a ténylegesen használt modellre és a konkrét API-útvonalra vonatkozóan kell tesztelni.

A séma a formát írja le, nem az igazságot

A JSON Schema egy deklaratív nyelv a JSON-adatok struktúrájának és korlátozásainak leírására. Egy mező meghatározható például kötelező mezőként, számként, felsorolásként (enum) vagy tömbként. Ebből azonban nem következik az, hogy az érték szakmailag is helyes. A 2026-02-31 karaktersorozat alaktanilag megfelelhet szövegként, annak ellenére, hogy ez a dátum nem létezik. Egy engedélyezett termék-ID szintaktikailag lehet helyes, a jelenlegi ügyfélfiókban (tenant) mégis ismeretlen.

A produktív chatbotok esetében ezért több ellenőrzési rétegre van szükség:

Ellenőrzési réteg Jellemző kérdés Példa
Atvitel (Transport) A válasz hiánytalan és feldolgozható? nincs megszakadás a JSON közepén
Séma (Schema) Egyeznek a mezők, a típusok és az engedélyezett értékek? a priority csak low, medium vagy high lehet
Szemantika A tartalom szakmailag plauzibilis és belsőleg konzisztens? a befejezési dátum nem előzi meg a kezdési dátumot
Szabályzat és hozzáférés Láthatja vagy használhatja ezt az értéket ez a felhasználó? a hibajegy az hitelesített ügyfélfiókhoz tartozik
Kimeneti kontextus Az érték biztonságosan kerül megjelenítésre vagy továbbításra? a szöveg HTML-kódolást kap, nem kerül szkriptként értelmezésre

Ez a szétválasztás megakadályozza, hogy a sémahűséget összetévesszük a szakmai jóváhagyással. Méréshez és regressziós tesztekhez ez összekapcsolható egy AI-chatbot válaszminőségi Golden Set-tel.

Kicsi, feladatspecifikus sémák tervezése

Egyetlen univerzális válaszobjektum gyorsan mélyen egymásba ágyazottá, nehezen érthetővé és drágán karbantarthatóvá válik. Jobb megoldás egy-egy kis séma használata minden egyes egyértelmű feladathoz – például a visszajelzések osztályozásához, egy támogatási kérés előstruktúrálásához vagy a hiányzó adatok megjelöléséhez a visszakérdezéshez. Minden mező nevének és leírásának magyaráznia kell annak szakmai jelentését.

  • A kötelező mezők megfontolt kiválasztása: Csak olyan értékeket kérjünk el, amelyekre a folyamatnak valóban szüksége van. Az ismeretlen értékeket jelenítsük meg kifejezetten null-ként vagy saját státuszként, ahelyett, hogy hagynánk a modellt kitalálni azokat.
  • Felsorolások használata szabad szöveg helyett: Egy rövid, verziózott lista megakadályozza az eltérő írásmódokat a státusz, kategória vagy a következő lépés esetében.
  • A további mezők visszautasítása: Ahol a szolgáltató támogatja, az additionalProperties: false beállítás megakadályozza a váratlan kulcsok megjelenését.
  • A korlátok megismétlése az alkalmazáskódban: A hosszokat, értéktartományokat, URL-hostokat és keresztösszefüggéseket ne bízzuk kizárólag a modellre vagy egy szolgáltató-specifikus séma-részhalmazra.
  • A séma verziózása: Egy stabil azonosító és egy hash láthatóvá teszi, hogy melyik szerződés hozta létre és ellenőrizte a választ.

Az ismeretlen egy önálló állapot

Egy üres mező, egy hiányzó mező és egy kifejezetten ismeretlen érték nem ugyanazt jelenti. Ha egy információ hiányzik a forrásból, a sémának megengedett állapotot kell biztosítania erre. Ellenkező esetben a szerződés közvetve arra ösztönzi a modellt, hogy egy plauzibilis karaktersorozatot találjon ki. A kritikus értékek esetében a value, status és az opcionális reason kombinációja gyakran megbízhatóbb, mint egyetlen szabad szöveges mező.

A verzió és a hash együttes igazolása

A válaszhoz ezért nemcsak a modell és a prompt verziója tartozik hozzá, hanem a séma verziója és a validátor verziója is. A ténylegesen elküldött séma hash-értéke védelmet nyújt a build- vagy konfigurációváltozások miatti csendes eltolódás ellen. Migráció során az ugyanabból a modellből származó kimenet először mindkét szerződésverzióval szemben ellenőrizhető. Az írás továbbra is csak az aktív útvonalon keresztül történik; az eltérések összehasonlító adatként a QA-hoz kerülnek.

A promptok nem mozgathatnak titkokat vagy belső jogosultsági döntéseket a sémába. A modell például osztályozhat egy kért következő lépést. Azt azonban, hogy ez a lépés engedélyezett-e, ezt követően a szerver dönti el a jelenlegi identitás és szabályzat alapján.

A megszakítás és az elutasítás kezelése önálló állapotként

Előfordulhat, hogy a szigorúan formázott válasz elmarad. A kimeneti korlátok, az időtúllépések, a tartolomszűrők, a szolgáltatói hibák vagy a modell szándékos elutasítása normális működési állapotok. Az OpenAI a Structured Outputsnál leírja a hiányos válaszokat és a saját elutasítási útvonalat is, amely nem feltétlenül követi a kért sémát. Az alkalmazások ezért nem nyúlhatnak vakon az első elvárt mezőhöz.

Egy szolgáltatófüggetlen belső burkolómodell (wrapper) legalább a success, refused, incomplete, provider_error és validation_failed állapotokat különíti el. A strukturált tartalom csak success esetén kerül átadásra a következő ellenőrzési rétegnek. A többi állapot esetén a felhasználók rövid, őszinte visszajelzést vagy biztonságos átadást látnak, de nem kitalált pótadatokat.

Szemantikai szabályok ellenőrzése szerveroldalon

A séma-ellenőrzés után kezdődik a szakmai validálás. Ennek determinisztikusnak és a modelltől a lehető legfüggetlenebbnek kell lennie. A termékazonosítókat a legfrissebb adatforrással szemben ellenőrizzük, az URL-eket az engedélyezett protokollokkal és hostokkal, a nyelvi kódokat pedig a ténylegesen támogatott nyelvekkel szemben. Az összegek, az időtartamok és az állapotváltások keresztellenőrzést igényelnek. RAG-válaszok esetén a megadott forrásnak ténylegesen szerepelnie kell a jóváhagyott lekérdezési (retrieval) eredményben.

Ez a látszólag ártalmatlan szövegmezőkre is vonatkozik. Az OWASP GenAI Security Project figyelmeztet az elégtelenül ellenőrzött modellkimenetekre, ha azokat böngészőnek, adatbázisnak, fájlrendszernek vagy további eszközöknek adják át. A HTML esetében a kontextusnak megfelelő kódolást kell alkalmazni, az adatbázis-hozzáférés paraméterezett marad, és a rendszerutasításokat soha nem szabad szabadon generált szövegből összeállítani. A strukturált kimenet egy nem megbízható forrásból származó bemenet, nem pedig egy kiváltságos belső objektum.

A biztonságos tartalékútvonal nem javít ki mindent minden áron

Hibás válasz esetén azonnali, azonos újrapróbálkozás (retry) ritkán a legjobb alapértelmezett reakció. Ez növelheti a költségeket, és megismételheti ugyanazt a hibát. Egy korlátozott tartalékútvonal (fallback) megkülönbözteti az okokat:

  1. Műszaki megszakadás: Egyértelműen átmeneti szolgáltatói hiba esetén pontosan korlátozott számban próbáljuk újra, ugyanazt az idempotencia-ID-t használva.
  2. Túl összetett séma: Bantsuk fel a feladatot kisebb, külön-külön validálható lépésekre. Ez egy tervezett termékmódosítás, nem a kötelező mezők spontán elhagyása.
  3. Szemantikai hiba: Ne váltsunk ki automatikus műveletet. Kérdezzünk rá célzottan a hiányzó adatokra, vagy küldjük a esetet emberi ellenőrzésre.
  4. Elutasítás vagy szabályzati korlát: Tartsuk tiszteletben az elutasítást, és kínáljunk fel egy engedélyezett tájékoztatási vagy átadási útvonalat.
  5. Bizonytalan állapot egy írási művelet után: Először olvassuk ki a célrendszert az idempotencia-ID alapján, mielőtt elindítanánk egy második írási kísérletet.

Nagyobb módosítások esetén ajánlott a Shadow Mode tesztelés a weboldal indítása előtt. Ennek során az új strukturált útvonal már generál eredményeket, de még nem vezérel felhasználói műveleteket.

A szerződéstesztek többet fednek le a példapárbeszédeknél

Egy jó tesztkészlet nemcsak az ideális kéréseket tartalmazza. Az üres bemenetek, a nagyon hosszú szövegek, az ellentmondásos adatok, az ismeretlen kategóriák, a több nyelv, a prompt injection kísérletek, a szolgáltatói elutasítások és a szándékosan szűkös tokenkorlátok mind hozzátartoznak. Minden esethez külön rögzíteni kell az elvárt működési státuszt, a sémaeredményt és a szakmai döntést.

A séma változtatásakor a csapatnak ellenőriznie kell a régi elmentett példákat az új verzióval szemben. A migráció során az alkalmazás átmenetileg ellenőrizheti a kimenetet a régi és az új verzióval szemben is, anélkül, hogy két műveletet hajtana végre. Az új szerződés csak akkor válik írási útvonallá, ha a sikerességi arány, a szemantikai elutasítások és a látencia stabillá válnak. A hibák a teljes körű AI-chatbot megfigyelhetőség (observability) segítségével hozzárendelhetők a használt modell-, prompt- és sémaverzióhoz, anélkül, hogy a teljes bizalmas válaszokat naplózni kellene.

Mutatószámok a folyamatos üzemeltetéshez

A legfontosabb mutató nem csupán a szintaktikailag érvényes válaszok aránya. Hasznos az első próbálkozásra sikeres sémák aránya, a szemantikai elutasítási arány, a hiányos válaszok aránya, az elutasítások, a korlátozott javítási kísérletek, az emberi átadások, valamint a sikeresen validált eredményenkénti látencia és költség. Az értékeket a modell, a prompt, a séma verziója, az use-case és a nyelvi beállítás (locale) szerint külön-külön kell vizsgálni.

A szemantikai hibák hirtelen megugrása a sémaarány változatlansága mellett különösen tanulságos: a forma továbbra is helyes, de a tartalom vagy az adathivatkozás eltolódik. Ilyenkor a folyamatnak biztonságos módba kell váltania. A korlátozott üzemmódról (degraded mode) és a rollbackről szóló útmutatónk megmutatja, hogyan készíthető elő egy ilyen tartalékútvonal.

Ellenőrzőlista az első automatikus művelet előtt

  • A konkrét API- és modellútvonal pontosan ezzel a sémával lett tesztelve?
  • A hiányos válaszok, az elutasítások és a szolgáltatói hibák a beolvasás (parsing) előtt azonosításra kerülnek?
  • A szerver a sémát és a szakmai szabályokat a modelltől függetlenül validálja?
  • Az identitás, a tenant és a jogosultság közvetlenül minden művelet előtt újra ellenőrzésre kerül?
  • A HTML, az URL-ek, az adatbázis-értékek és az eszközparaméterek a kontextusnak megfelelően biztosítottak?
  • Az idempotencia és a visszaolvasás megakadályozza a dupla írási műveleteket?
  • Rendelkezésre állnak Golden Set-, támadási, nyelvi és migrációs tesztek?
  • A sémaverzió, a hibaosztály és a minőségi mutatók megfigyelhetők?
  • A csapat adatvesztés nélkül vissza tud váltani egy biztonságos tájékoztatási vagy átadási módra?

A strukturált kimenetek integrálhatóbbá teszik az AI-chatbotokat, de nem ruházzák fel a modellt döntési jogkörrel. Aki a formát, a szemantikát, a hozzáférést és a kimeneti kontextust különálló kapuként kezeli, az egy nyomon követhető szerződést kap egy látszólag biztonságos JSON-homlokzat helyett. Egy új weboldal-munkafolyamat esetén érdemes pontosan egy korlátozott use-case-zel, egy kicsi, verziózott sémával és egy mérhető shadow-teszttel kezdeni.

Alakítsa át a weboldallátogatásokat jobb beszélgetésekké

Indítson olyan AI-chatbotot, amely az első naptól hasznos

Oktassa a ChatReactet a weboldalával, dokumentumaival és jóváhagyott tényekkel, hogy a látogatók gyorsabb válaszokat kapjanak, és csökkenjen a csapata ismétlődő kéréseinek száma.

Kapcsolódó cikkek

Olvasson tovább