Loading...
    • Guida per sviluppatori
    • Riferimento API
    • MCP
    • Risorse
    • Note sulla versione
    Search...
    ⌘K
    Primi passi
    Introduzione a ClaudeAvvio rapido
    Modelli e prezzi
    Panoramica dei modelliScelta di un modelloNovità in Claude 4.6Guida alla migrazioneDeprecazioni dei modelliPrezzi
    Crea con Claude
    Panoramica delle funzioniUtilizzo dell'API MessagesGestione dei motivi di arrestoBest practice per i prompt
    Capacità del modello
    Extended thinkingAdaptive thinkingEffortFast mode (anteprima di ricerca)Output strutturatiCitazioniStreaming dei messaggiElaborazione batchSupporto PDFRisultati di ricercaSupporto multilingueEmbeddingsVision
    Strumenti
    PanoramicaCome implementare l'uso degli strumentiStrumento di ricerca webStrumento di recupero webStrumento di esecuzione del codiceStrumento di memoriaStrumento BashStrumento Computer useStrumento editor di testo
    Infrastruttura degli strumenti
    Ricerca strumentiChiamata programmatica degli strumentiStreaming granulare degli strumenti
    Gestione del contesto
    Finestre di contestoCompattazioneModifica del contestoPrompt cachingConteggio dei token
    File e risorse
    API Files
    Agent Skills
    PanoramicaAvvio rapidoBest practiceSkills per l'aziendaUtilizzo di Skills con l'API
    Agent SDK
    PanoramicaAvvio rapidoTypeScript SDKTypeScript V2 (anteprima)Python SDKGuida alla migrazione
    Streaming InputStreaming delle risposte in tempo realeGestione dei motivi di arrestoGestione dei permessiApprovazioni utente e inputControllare l'esecuzione con hookGestione della sessioneCheckpoint dei fileOutput strutturati nell'SDKHosting dell'Agent SDKDistribuzione sicura degli agenti AIModifica dei prompt di sistemaMCP nell'SDKStrumenti personalizzatiSubagenti nell'SDKSlash Commands nell'SDKAgent Skills nell'SDKTracciamento dei costi e dell'utilizzoElenchi di attivitàPlugin nell'SDK
    MCP nell'API
    Connettore MCPServer MCP remoti
    Claude su piattaforme di terze parti
    Amazon BedrockMicrosoft FoundryVertex AI
    Prompt engineering
    PanoramicaGeneratore di promptUsa modelli di promptMiglioratore di promptSii chiaro e direttoUsa esempi (multishot prompting)Lascia che Claude pensi (CoT)Usa tag XMLDai a Claude un ruolo (prompt di sistema)Concatena prompt complessiSuggerimenti per il contesto lungoSuggerimenti per extended thinking
    Test e valutazione
    Definisci criteri di successoSviluppa casi di testUtilizzo dello strumento di valutazioneRiduzione della latenza
    Rafforza i guardrail
    Riduci le allucinazioniAumenta la coerenza dell'outputMitiga i jailbreakStreaming dei rifiutiRiduci la perdita di promptMantieni Claude nel personaggio
    Amministrazione e monitoraggio
    Panoramica dell'API AdminResidenza dei datiWorkspaceAPI di utilizzo e costiAPI Claude Code AnalyticsZero Data Retention
    Console
    Log in
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...
    Loading...

    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
    Guide

    Gestione dei motivi di arresto

    Rileva i rifiuti e altri motivi di arresto direttamente dai messaggi di risultato nell'Agent SDK

    Il campo stop_reason sui messaggi di risultato ti dice perché il modello ha smesso di generare. Questo è il modo consigliato per rilevare i rifiuti, i limiti di token massimi e altre condizioni di terminazione (non è richiesta l'analisi del flusso).

    stop_reason è disponibile su ogni ResultMessage, indipendentemente dal fatto che lo streaming sia abilitato. Non è necessario impostare include_partial_messages (Python) o includePartialMessages (TypeScript).

    Lettura di stop_reason

    Il campo stop_reason è presente sia sui messaggi di risultato di successo che su quelli di errore. Controllalo dopo aver iterato attraverso il flusso di messaggi:

    from claude_agent_sdk import query, ResultMessage
    import asyncio
    
    async def check_stop_reason():
        async for message in query(prompt="Write a poem about the ocean"):
            if isinstance(message, ResultMessage):
                print(f"Stop reason: {message.stop_reason}")
                if message.stop_reason == "refusal":
                    print("The model declined this request.")
    
    asyncio.run(check_stop_reason())

    Motivi di arresto disponibili

    Motivo di arrestoSignificato
    end_turnIl modello ha finito di generare la sua risposta normalmente.
    max_tokensLa risposta ha raggiunto il limite massimo di token di output.
    stop_sequenceIl modello ha generato una sequenza di arresto configurata.
    refusalIl modello ha rifiutato di soddisfare la richiesta.
    tool_useL'output finale del modello era una chiamata a uno strumento. Questo è raro nei risultati dell'SDK perché le chiamate agli strumenti vengono normalmente eseguite prima che il risultato venga restituito.
    nullNessuna risposta API è stata ricevuta; ad esempio, si è verificato un errore prima della prima richiesta, oppure il risultato è stato riprodotto da una sessione memorizzata nella cache.

    Motivi di arresto sui risultati di errore

    I risultati di errore (come error_max_turns o error_during_execution) portano anche stop_reason. Il valore riflette l'ultimo messaggio dell'assistente ricevuto prima che si verificasse l'errore:

    Variante di risultatovalore stop_reason
    successIl motivo di arresto dal messaggio dell'assistente finale.
    error_max_turnsIl motivo di arresto dall'ultimo messaggio dell'assistente prima che il limite di turni fosse raggiunto.
    error_max_budget_usdIl motivo di arresto dall'ultimo messaggio dell'assistente prima che il budget fosse superato.
    error_max_structured_output_retriesIl motivo di arresto dall'ultimo messaggio dell'assistente prima che il limite di tentativi fosse raggiunto.
    error_during_executionL'ultimo motivo di arresto visto, o null se l'errore si è verificato prima di qualsiasi risposta API.
    from claude_agent_sdk import query, ClaudeAgentOptions, ResultMessage
    import asyncio
    
    async def handle_max_turns():
        options = ClaudeAgentOptions(max_turns=3)
    
        async for message in query(prompt="Refactor this module", options=options):
            if isinstance(message, ResultMessage):
                if message.subtype == "error_max_turns":
                    print(f"Hit turn limit. Last stop reason: {message.stop_reason}")
                    # stop_reason might be "end_turn" or "tool_use"
                    # depending on what the model was doing when the limit hit
    
    asyncio.run(handle_max_turns())

    Rilevamento dei rifiuti

    stop_reason === "refusal" è il modo più semplice per rilevare quando il modello rifiuta una richiesta. In precedenza, il rilevamento dei rifiuti richiedeva l'abilitazione dello streaming parziale dei messaggi e la scansione manuale dei messaggi StreamEvent per gli eventi message_delta. Con stop_reason sul messaggio di risultato, puoi controllare direttamente:

    from claude_agent_sdk import query, ResultMessage
    import asyncio
    
    async def safe_query(prompt: str):
        async for message in query(prompt=prompt):
            if isinstance(message, ResultMessage):
                if message.stop_reason == "refusal":
                    print("Request was declined. Please revise your prompt.")
                    return None
                return message.result
        return None
    
    asyncio.run(safe_query("Summarize this article"))

    Passaggi successivi

    • Trasmetti risposte in tempo reale: accedi agli eventi API grezzi incluso message_delta mentre arrivano
    • Output strutturati: ottieni risposte JSON tipizzate dall'agente
    • Tracciamento dei costi e dell'utilizzo: comprendi l'utilizzo dei token e la fatturazione dai messaggi di risultato

    Was this page helpful?

    • Lettura di stop_reason
    • Motivi di arresto disponibili
    • Motivi di arresto sui risultati di errore
    • Rilevamento dei rifiuti
    • Passaggi successivi