Ce este Ieșire structurată (JSON mode și Structured Outputs)?

Obținerea unui răspuns într-un format exact, de obicei JSON conform unei scheme, prin instrucțiuni sau prin funcțiile de structured outputs ale API-urilor.

Denumire completă

Structured Outputs – răspunsul este constrâns să respecte o schemă JSON dată; JSON mode garantează doar JSON valid

Ce înseamnă Ieșire structurată (JSON mode și Structured Outputs)

Când răspunsul modelului este citit de cod, textul liber e greu de folosit. Există trei niveluri: instrucțiuni în prompt („răspunde doar cu JSON”), JSON mode (răspunsul este JSON valid, dar fără garanția unei scheme) și Structured Outputs (răspunsul respectă o schemă JSON dată).

OpenAI: JSON mode se activează cu text.format de tip json_object, iar Structured Outputs cu tipul json_schema și strict: true; OpenAI recomandă Structured Outputs în locul JSON mode când e posibil. Anthropic: output_config.format cu tipul json_schema pentru răspuns și strict: true pentru parametrii uneltelor; SDK-urile acceptă direct modele Pydantic sau Zod. Gemini: parametrul response_format cu o schemă JSON. Toate acceptă doar un subset din JSON Schema.

Cum funcționează

Structured Outputs folosesc decodare constrânsă (constrained decoding): la fiecare pas, motorul de inferență permite doar tokenii care păstrează răspunsul conform schemei.

Garanția are excepții documentate. La Anthropic, dacă modelul refuză cererea (stop_reason: "refusal") sau atinge max_tokens, răspunsul poate să nu respecte schema. La OpenAI, JSON mode are cazuri-limită în care ieșirea nu este un obiect JSON complet. Google recomandă să validezi oricum valorile în aplicație: un JSON valid poate avea conținut greșit.

Pe înțelesul tuturor

Un formular tipizat la ghișeu: fiecare informație are căsuța ei, iar funcționarul nu poate scrie în afara căsuțelor. Formularul garantează forma, nu și că datele trecute în căsuțe sunt adevărate.

Exemplu

Fragment de cerere OpenAI (Responses API) cu schemă strictă:
"text": {"format": {"type": "json_schema", "name": "recenzie", "strict": true, "schema": {"type": "object", "properties": {"autor": {"type": "string"}, "nota": {"type": "integer"}, "reclamatii": {"type": "array", "items": {"type": "string"}}}, "required": ["autor", "nota", "reclamatii"], "additionalProperties": false}}}

De reținut

  • JSON mode garantează JSON valid; Structured Outputs garantează și schema.
  • OpenAI, Anthropic și Gemini au structured outputs; schemele acceptate sunt un subset din JSON Schema.
  • Tratează refuzurile și răspunsurile tăiate de max_tokens și validează valorile în cod.
  • La Claude 4.6 și modelele mai noi, prefill-ul (începerea răspunsului asistentului, de exemplu cu {) nu mai este acceptat; Anthropic recomandă structured outputs.
  • La Claude, un câmp din schemă care cere raționamentul pas cu pas al modelului poate duce la refuz; cere în schimb o explicație scurtă.

Nu confunda

  • JSON mode vs. Structured Outputs: primul nu verifică schema, al doilea da.
  • Format corect vs. conținut corect: schema nu împiedică valorile inventate sau greșite.

Termeni înrudiți