Standard
Structured Outputs: standard kontraktu odpowiedzi (JSON Schema)
Jak zbudować odpowiedzi, które są weryfikowalne maszynowo, wersjonowane i odporne na „ładny tekst, który nie przechodzi walidacji”.
Contract-first: kiedy JSON jest wymaganiem, a nie opcją
Structured Outputs to praktyka, w której wynik modelu jest traktowany jak interfejs. To oznacza: schema, walidację, wersjonowanie i obsługę błędów tak samo, jak w klasycznych systemach API.
Projektowanie schematu (praktyka)
- Minimalizm: tylko pola, które są naprawdę potrzebne do wykonania kolejnego kroku.
- Enumy zamiast dowolnych stringów (np. statusy, typy decyzji).
- Jawne błędy: osobny obiekt error z kodem i opisem.
- Wersja kontraktu w odpowiedzi (contract_version).
Walidacja i pętla naprawcza
Walidacja schematu nie jest „opcją”. Jeżeli wynik nie przechodzi walidacji, system powinien:
- zarejestrować błąd (trace + payload + reason),
- wykonać repair (krótką pętlę korekcyjną),
- a gdy to się nie uda – przejść do fallback lub HITL.
contract_response:
contract_version: "support.reply@3"
status: "OK" # OK | NEEDS_REVIEW | DENY
answer_md: "..."
citations: [{doc:"policy@2.1", span:"p3-p4"}]
error: null
Uwaga: schema stabilizuje system tylko wtedy, gdy jest spięta z testami regresji.
W przeciwnym razie zmiany w promptach będą „przepychały” nowe formaty bez kontroli.
Najczęstsze antywzorce
- „Luźny JSON” bez walidacji – pozorny porządek, realny chaos.
- Zbyt bogate schematy (dziesiątki pól) – rosną koszty i awaryjność.
- Brak wersjonowania – brak możliwości migracji i audytu.
W tym rozdziale
- po co structured outputs
- standard kontraktu odpowiedzi
- pętla walidacji i naprawy
- przykładowy schemat
- telemetria i regresje