Lo structured decoding guida la generazione del modello a livello di campionamento dei token tramite automi a stati finiti (FSM) o grammatiche Context-Free, garantendo al 100% che l'output rispetti uno schema JSON senza errori di sintassi.
Esempio pratico con libreria Outlines (API 0.x; dalla v1.0 del 2025 si usa outlines.from_transformers e Generator) e Pydantic:
PYTHON
from enum import Enum
from pydantic import BaseModel
import outlines
class Severity(str, Enum):
low = "low"
medium = "medium"
high = "high"
class VulnerabilityReport(BaseModel):
cve_id: str
severity: Severity
remediation_steps: list[str]
# Caricamento del modello locale
model = outlines.models.transformers("meta-llama/Llama-3.2-3B-Instruct")
# Generatore vincolato allo schema Pydantic
generator = outlines.generate.json(model, VulnerabilityReport)
result = generator("Analizza la vulnerabilità OpenSSL Heartbleed")
print(result.cve_id) # Accesso tipizzato sicuroQuesto approccio elimina i retry di parsing JSON e previene allucinazioni strutturali negli agenti.