Loading...
    • Guida per sviluppatori
    • Riferimento API
    • MCP
    • Risorse
    • Note di rilascio
    Search...
    ⌘K
    Primi passi
    Introduzione a ClaudeGuida rapida
    Modelli e prezzi
    Panoramica dei modelliScegliere un modelloNovità in Claude 4.5Migrazione a Claude 4.5Deprecazioni dei modelliPrezzi
    Crea con Claude
    Panoramica delle funzionalitàLavorare con l'API MessagesFinestre di contestoMigliori pratiche di prompt engineering
    Capacità
    Caching dei promptModifica del contestoPensiero estesoStreaming dei MessaggiElaborazione batchCitazioniSupporto multilingueConteggio dei tokenEmbeddingsVisioneSupporto PDFFiles APIRisultati di ricercaOutput strutturatiComponente aggiuntivo di Google Sheets
    Strumenti
    PanoramicaCome implementare l'uso degli strumentiUtilizzo efficiente dei token per gli strumentiStreaming granulare degli strumentiStrumento BashStrumento di esecuzione del codiceStrumento di utilizzo del computerStrumento editor di testoStrumento di recupero webStrumento di ricerca webStrumento memoria
    Competenze Agente
    PanoramicaIniziare con Agent Skills nell'APIMigliori pratiche per la creazione di SkillsUtilizzo di Skills
    Agent SDK
    Panoramica dell'Agent SDKRiferimento SDK Agent - TypeScriptRiferimento SDK Agent - Python
    Guide
    Input in StreamingGestione dei PermessiGestione delle SessioniHosting dell'Agent SDKModifica dei prompt di sistemaMCP nell'SDKStrumenti PersonalizzatiSubagenti nell'SDKComandi Slash nell'SDKAgent Skills nell'SDKTracciamento di Costi e UtilizzoListe TodoPlugin nell'SDK
    MCP nell'API
    Connettore MCPServer MCP remoti
    Claude su piattaforme di terze parti
    Amazon BedrockVertex AI
    Ingegneria dei prompt
    PanoramicaGeneratore di promptUsa template di promptMiglioratore di promptSii chiaro e direttoUsa esempi (prompt multishot)Lascia pensare Claude (CoT)Usa i tag XMLDare un ruolo a Claude (system prompt)Precompila la risposta di ClaudeConcatena prompt complessiSuggerimenti contesto lungoSuggerimenti per il pensiero esteso
    Testa e valuta
    Definisci criteri di successoSviluppare casi di testUtilizzo dello Strumento di ValutazioneRidurre la latenza
    Rafforza le protezioni
    Ridurre le allucinazioniAumentare la coerenza dell'outputMitigare i jailbreakhandle-streaming-refusalsRidurre la fuga di promptMantenere Claude nel personaggio
    Amministrazione e monitoraggio
    Panoramica dell'API AdminAPI di Utilizzo e CostiAPI di analisi del codice Claude
    Console
    Capacità

    Output strutturati

    Vincola le risposte di Claude a uno schema specifico, garantendo output valido e analizzabile per l'elaborazione a valle.

    Gli output strutturati vincolano le risposte di Claude a seguire uno schema specifico, garantendo output valido e analizzabile per l'elaborazione a valle. Usa output JSON (output_format) per risposte di dati strutturati, o uso rigoroso degli strumenti (strict: true) per la validazione dello schema garantita sui nomi e gli input degli strumenti.

    Gli output strutturati sono attualmente disponibili come funzione beta pubblica nell'API Claude per Claude Sonnet 4.5 e Claude Opus 4.1.

    Per utilizzare la funzione, imposta l'intestazione beta structured-outputs-2025-11-13.

    Condividi feedback utilizzando questo modulo.

    Perché usare output strutturati

    Senza output strutturati, Claude può generare risposte JSON malformate o input di strumenti non validi che interrompono le tue applicazioni. Anche con un prompt attento, potresti incontrare:

    • Errori di parsing da sintassi JSON non valida
    • Campi obbligatori mancanti
    • Tipi di dati incoerenti
    • Violazioni dello schema che richiedono gestione degli errori e nuovi tentativi

    Gli output strutturati garantiscono risposte conformi allo schema attraverso decodifica vincolata:

    • Sempre valido: Niente più errori JSON.parse()
    • Type safe: Tipi di campo garantiti e campi obbligatori
    • Affidabile: Nessun nuovo tentativo necessario per violazioni dello schema
    • Due modalità: JSON per attività come l'estrazione di dati, e strumenti rigorosi per situazioni come strumenti complessi e flussi di lavoro agentici

    Avvio rapido

    Quando usare output JSON vs uso rigoroso degli strumenti

    Scegli la modalità giusta per il tuo caso d'uso:

    Usa output JSON quandoUsa uso rigoroso degli strumenti quando
    Hai bisogno della risposta di Claude in un formato specificoHai bisogno di parametri convalidati e nomi di strumenti per le chiamate di strumenti
    Estrazione di dati da immagini o testoCostruzione di flussi di lavoro agentici
    Generazione di report strutturatiGarantire chiamate di funzione type-safe
    Formattazione di risposte APIStrumenti complessi con molte proprietà e/o annidate

    Perché l'uso rigoroso degli strumenti è importante per gli agenti

    La costruzione di sistemi agentici affidabili richiede conformità dello schema garantita. I parametri dello strumento non validi interrompono le tue funzioni e i tuoi flussi di lavoro. Claude potrebbe restituire tipi incompatibili ("2" invece di 2) o campi mancanti, causando errori di runtime.

    L'uso rigoroso degli strumenti garantisce parametri type-safe:

    • Le funzioni ricevono argomenti correttamente tipizzati ogni volta
    • Nessuna necessità di convalidare e riprovare le chiamate di strumenti
    • Agenti pronti per la produzione che funzionano in modo coerente su larga scala

    Ad esempio, supponiamo che un sistema di prenotazione abbia bisogno di passengers: int. Senza modalità rigorosa, Claude potrebbe fornire passengers: "two" o passengers: "2". Con strict: true, sei garantito passengers: 2.

    Come funzionano gli output strutturati

    Lavorare con output JSON negli SDK

    Gli SDK Python e TypeScript forniscono helper che rendono più facile lavorare con output JSON, inclusa la trasformazione dello schema, la validazione automatica e l'integrazione con librerie di schema popolari.

    Utilizzo di Pydantic e Zod

    Per gli sviluppatori Python e TypeScript, puoi utilizzare strumenti familiari di definizione dello schema come Pydantic e Zod invece di scrivere schemi JSON grezzi.

    Solo output JSON

    Gli helper SDK (Pydantic, Zod, parse()) funzionano solo con output JSON (output_format).

    Questi helper trasformano e convalidano l'output di Claude per te. L'uso rigoroso degli strumenti convalida l'input di Claude ai tuoi strumenti, che utilizzano il campo input_schema esistente nelle definizioni degli strumenti.

    Per l'uso rigoroso degli strumenti, definisci il tuo input_schema direttamente nella definizione dello strumento con strict: true.

    from pydantic import BaseModel
    from anthropic import Anthropic, transform_schema
    
    class ContactInfo(BaseModel):
        name: str
        email: str
        plan_interest: str
        demo_requested: bool
    
    client = Anthropic()
    
    # With .create() - requires transform_schema()
    response = client.beta.messages.create(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        betas=["structured-outputs-2025-11-13"],
        messages=[
            {
                "role": "user",
                "content": "Extract the key information from this email: John Smith ([email protected]) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm."
            }
        ],
        output_format={
            "type": "json_schema",
            "schema": transform_schema(ContactInfo),
        }
    )
    
    print(response.content[0].text)
    
    # With .parse() - can pass Pydantic model directly
    response = client.beta.messages.parse(
        model="claude-sonnet-4-5",
        max_tokens=1024,
        betas=["structured-outputs-2025-11-13"],
        messages=[
            {
                "role": "user",
                "content": "Extract the key information from this email: John Smith ([email protected]) is interested in our Enterprise plan and wants to schedule a demo for next Tuesday at 2pm."
            }
        ],
        output_format=ContactInfo,
    )
    
    print(response.parsed_output)

    Metodi specifici dell'SDK

    Python: client.beta.messages.parse() (Consigliato)

    Il metodo parse() trasforma automaticamente il tuo modello Pydantic, convalida la risposta e restituisce un attributo parsed_output.

    Il metodo parse() è disponibile su client.beta.messages, non su client.messages.

    Python: helper transform_schema()

    Per quando hai bisogno di trasformare manualmente gli schemi prima di inviarli, o quando vuoi modificare uno schema generato da Pydantic. A differenza di client.beta.messages.parse(), che trasforma automaticamente gli schemi forniti, questo ti dà lo schema trasformato in modo da poterlo personalizzare ulteriormente.

    Come funziona la trasformazione dell'SDK

    Sia gli SDK Python che TypeScript trasformano automaticamente gli schemi con funzioni non supportate:

    1. Rimuovi vincoli non supportati (ad es. minimum, maximum, minLength, maxLength)
    2. Aggiorna le descrizioni con informazioni sui vincoli (ad es. "Deve essere almeno 100"), quando il vincolo non è direttamente supportato con output strutturati
    3. Aggiungi additionalProperties: false a tutti gli oggetti
    4. Filtra i formati di stringa solo all'elenco supportato
    5. Convalida le risposte rispetto al tuo schema originale (con tutti i vincoli)

    Ciò significa che Claude riceve uno schema semplificato, ma il tuo codice applica comunque tutti i vincoli attraverso la validazione.

    Esempio: Un campo Pydantic con minimum: 100 diventa un semplice numero intero nello schema inviato, ma la descrizione viene aggiornata a "Deve essere almeno 100", e l'SDK convalida la risposta rispetto al vincolo originale.

    Casi d'uso comuni

    Considerazioni importanti

    Compilazione della grammatica e caching

    Gli output strutturati utilizzano il campionamento vincolato con artefatti di grammatica compilati. Questo introduce alcune caratteristiche di prestazione di cui essere consapevoli:

    • Latenza della prima richiesta: La prima volta che utilizzi uno schema specifico, ci sarà una latenza aggiuntiva mentre la grammatica viene compilata
    • Caching automatico: Le grammatiche compilate vengono memorizzate nella cache per 24 ore dall'ultimo utilizzo, rendendo le richieste successive molto più veloci
    • Invalidazione della cache: La cache viene invalidata se modifichi:
      • La struttura dello schema JSON
      • L'insieme di strumenti nella tua richiesta (quando utilizzi sia output strutturati che uso dello strumento)
      • La modifica solo dei campi name o description non invalida la cache

    Modifica del prompt e costi dei token

    Quando utilizzi output strutturati, Claude riceve automaticamente un prompt di sistema aggiuntivo che spiega il formato di output previsto. Ciò significa:

    • Il tuo conteggio dei token di input sarà leggermente superiore
    • Il prompt iniettato ti costa token come qualsiasi altro prompt di sistema
    • La modifica del parametro output_format invaliderà qualsiasi cache del prompt per quel thread di conversazione

    Limitazioni dello schema JSON

    Gli output strutturati supportano JSON Schema standard con alcune limitazioni. Sia gli output JSON che l'uso rigoroso degli strumenti condividono queste limitazioni.

    Gli SDK Python e TypeScript possono trasformare automaticamente gli schemi con funzioni non supportate rimuovendole e aggiungendo vincoli alle descrizioni dei campi. Vedi Metodi specifici dell'SDK per i dettagli.

    Output non validi

    Mentre gli output strutturati garantiscono conformità dello schema nella maggior parte dei casi, ci sono scenari in cui l'output potrebbe non corrispondere al tuo schema:

    Rifiuti (stop_reason: "refusal")

    Claude mantiene le sue proprietà di sicurezza e utilità anche quando utilizza output strutturati. Se Claude rifiuta una richiesta per motivi di sicurezza:

    • La risposta avrà stop_reason: "refusal"
    • Riceverai un codice di stato 200
    • Ti verrà addebitato per i token generati
    • L'output potrebbe non corrispondere al tuo schema (il rifiuto ha la precedenza)

    Limite di token raggiunto (stop_reason: "max_tokens")

    Se la risposta viene interrotta a causa del raggiungimento del limite max_tokens:

    • La risposta avrà stop_reason: "max_tokens"
    • L'output potrebbe essere incompleto e non corrispondere al tuo schema
    • Riprova con un valore max_tokens più alto per ottenere l'output strutturato completo

    Errori di validazione dello schema

    Se il tuo schema utilizza funzioni non supportate o è troppo complesso, riceverai un errore 400:

    "Too many recursive definitions in schema"

    • Causa: Lo schema ha definizioni ricorsive eccessive o cicliche
    • Soluzione: Semplifica la struttura dello schema, riduci la profondità di annidamento

    "Schema is too complex"

    • Causa: Lo schema supera i limiti di complessità
    • Soluzione: Dividi in schemi più piccoli, semplifica la struttura o riduci il numero di strumenti contrassegnati come strict: true

    Per problemi persistenti con schemi validi, contatta il supporto con la definizione del tuo schema.

    Compatibilità delle funzioni

    Funziona con:

    • Elaborazione batch: Elabora output strutturati su larga scala con sconto del 50%
    • Conteggio dei token: Conta i token senza compilazione
    • Streaming: Trasmetti output strutturati come risposte normali
    • Utilizzo combinato: Usa output JSON (output_format) e uso rigoroso degli strumenti (strict: true) insieme nella stessa richiesta

    Incompatibile con:

    • Citazioni: Le citazioni richiedono l'interleaving di blocchi di citazioni con testo, il che è in conflitto con i vincoli dello schema JSON rigoroso. Restituisce errore 400 se le citazioni sono abilitate con output_format.
    • Prefilling dei messaggi: Incompatibile con output JSON

    Ambito della grammatica: Le grammatiche si applicano solo all'output diretto di Claude, non alle chiamate di uso dello strumento, ai risultati dello strumento o ai tag di pensiero (quando si utilizza Extended Thinking). Lo stato della grammatica si ripristina tra le sezioni, consentendo a Claude di pensare liberamente mentre produce comunque output strutturato nella risposta finale.

    • Perché usare output strutturati
    • Avvio rapido
    • Quando usare output JSON vs uso rigoroso degli strumenti
    • Perché l'uso rigoroso degli strumenti è importante per gli agenti
    • Come funzionano gli output strutturati
    • Lavorare con output JSON negli SDK
    • Utilizzo di Pydantic e Zod
    • Metodi specifici dell'SDK
    • Come funziona la trasformazione dell'SDK
    • Casi d'uso comuni
    • Considerazioni importanti
    • Compilazione della grammatica e caching
    • Modifica del prompt e costi dei token
    • Limitazioni dello schema JSON
    • Output non validi
    • Errori di validazione dello schema
    • Compatibilità delle funzioni

    Solutions

    • AI agents
    • Code modernization
    • Coding
    • Customer support
    • Education
    • Financial services
    • Government
    • Life sciences

    Partners

    • Amazon Bedrock
    • Google Cloud's Vertex AI

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Company

    • Anthropic
    • Careers
    • Economic Futures
    • Research
    • News
    • Responsible Scaling Policy
    • Security and compliance
    • Transparency

    Learn

    • Blog
    • Catalog
    • Courses
    • Use cases
    • Connectors
    • Customer stories
    • Engineering at Anthropic
    • Events
    • Powered by Claude
    • Service partners
    • Startups program

    Help and security

    • Availability
    • Status
    • Support
    • Discord

    Terms and policies

    • Privacy policy
    • Responsible disclosure policy
    • Terms of service: Commercial
    • Terms of service: Consumer
    • Usage policy