Instructor / Outlines per una struttura garantita
Instructor (Python) e Outlines vincolano il decoding, impedendo letteralmente al modello di produrre JSON non valido.
Instructor / Outlines per una struttura garantita è una lezione AI Agents gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Agents, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Agents include 4 lezioni in totale.
Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.
Due librerie principali
Due approcci principali per ottenere output strutturati garantiti:
- Instructor (Jason Liu) — wrapper Pydantic per OpenAI, Anthropic e molti altri provider
- Outlines (.txt) — decodifica vincolata per modelli OSS
Instructor Basics
# pip install instructor openai
import instructor
from openai import OpenAI
from pydantic import BaseModel
client = instructor.from_openai(OpenAI())
class User(BaseModel):
name: str
age: int
user = client.chat.completions.create(
model='gpt-4o-mini',
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
)
print(user.name, user.age)Il funzionamento interno di Instructor
Dietro le quinte, Instructor:
- Genera uno JSON Schema dal modello Pydantic
- Lo aggiunge come strumento alla chiamata OpenAI
- Forza la chiamata a quello strumento
- Analizza gli argomenti e restituisce un'istanza Pydantic
- Ripete la chiamata correggendo gli errori di convalida
Instructor with Validation
from pydantic import field_validator
class User(BaseModel):
name: str
age: int
@field_validator('age')
@classmethod
def positive(cls, v):
if v <= 0:
raise ValueError('Age must be positive')
return v
# Instructor catches ValidationError and retries automaticallyStreaming Instructor
for partial in client.chat.completions.create_partial(
model='gpt-4o-mini',
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
):
print(partial)
# Streams partial Pydantic instances as fields fill in.Instructor with Anthropic
from anthropic import Anthropic
client = instructor.from_anthropic(Anthropic())
user = client.messages.create(
model='claude-sonnet-4-5',
max_tokens=1024,
response_model=User,
messages=[{'role': 'user', 'content': 'Alice, 30'}]
)Outlines per modelli OSS
Outlines usa la decodifica vincolata dalla grammatica. Funziona con HuggingFace, vLLM e llama.cpp:
# pip install outlines
import outlines
model = outlines.models.transformers('mistralai/Mistral-7B-Instruct-v0.2')
generator = outlines.generate.json(model, User)
user = generator('Alice, 30')Perché usare la decodifica vincolata?
Outlines individua quali token sono validi a ogni passaggio in base allo schema e maschera quelli non validi. Il modello non può letteralmente emettere JSON non valido.
Regex e scelte in Outlines
È possibile vincolare l'output a un'espressione regolare o a un elenco di scelte:
import outlines.text.generate as g
yes_no = g.choice(model, ['yes', 'no'])
result = yes_no('Are bananas fruits?') # 'yes'Combinare entrambi
Per ottenere la massima affidabilità:
- Usare Instructor per i modelli gestiti o chiusi (OpenAI, Anthropic)
- Usare Outlines per i modelli self-hosted
- Condividere i modelli Pydantic tra entrambi
Confronto dei costi
- Strict Outputs (nativo OpenAI) — incluso nel prezzo
- Instructor — piccolo sovraccarico dovuto ai nuovi tentativi dopo la convalida
- Outlines — lieve riduzione del throughput dovuta al mascheramento, ma nessuna chiamata aggiuntiva
Quando usare ciascuno
| Caso d'uso | Strumento |
|---|---|
| OpenAI/Anthropic | Instructor + Pydantic |
| OSS self-hosted | Outlines |
| Percorsi sensibili alla latenza | OpenAI Structured Outputs (nativo) |
Approccio di Outlines
In che modo Outlines garantisce un output strutturato?
Riepilogo
Per OpenAI/Anthropic, usare Structured Outputs nativo o Instructor. Per OSS, usare Outlines. I modelli Pydantic collegano tutti gli elementi.
Domande Frequenti
La lezione «Instructor / Outlines per una struttura garantita» è gratuita?
Sì — il testo completo di «Instructor / Outlines per una struttura garantita» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Agents, passa a CoddyKit PRO. Il corso AI Agents include 4 lezioni in totale.
Cosa imparerò in «Instructor / Outlines per una struttura garantita»?
Instructor (Python) e Outlines vincolano il decoding, impedendo letteralmente al modello di produrre JSON non valido. Eserciti AI Agents con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Agents?
Non è richiesta alcuna esperienza precedente. AI Agents su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Instructor / Outlines per una struttura garantita»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Agents?
Sì. Ogni lezione AI Agents include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Modalità JSON e output delle tool call
- Convalida dello schema Pydantic
- Cicli di correzione per output non validi
- Instructor / Outlines per una struttura garantita