0Pricing
AI Agents · Lezione

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:

  1. Genera uno JSON Schema dal modello Pydantic
  2. Lo aggiunge come strumento alla chiamata OpenAI
  3. Forza la chiamata a quello strumento
  4. Analizza gli argomenti e restituisce un'istanza Pydantic
  5. 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 automatically

Streaming 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à:

  1. Usare Instructor per i modelli gestiti o chiusi (OpenAI, Anthropic)
  2. Usare Outlines per i modelli self-hosted
  3. 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'usoStrumento
OpenAI/AnthropicInstructor + Pydantic
OSS self-hostedOutlines
Percorsi sensibili alla latenzaOpenAI 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

  1. Modalità JSON e output delle tool call
  2. Convalida dello schema Pydantic
  3. Cicli di correzione per output non validi
  4. Instructor / Outlines per una struttura garantita
← Torna a AI Agents