Loading...
    • Entwicklerleitfaden
    • API-Referenz
    • MCP
    • Ressourcen
    • Versionshinweise
    Search...
    ⌘K
    Erste Schritte
    Einführung in ClaudeSchnelleinstieg
    Modelle & Preise
    ModellübersichtModell auswählenNeuerungen in Claude 4.6MigrationsleitfadenModellabschreibungenPreise
    Mit Claude entwickeln
    FunktionsübersichtMessages API verwendenStop-Gründe verarbeitenBest Practices für Prompts
    Modellfähigkeiten
    Extended ThinkingAdaptive ThinkingAufwandFast Mode (Research Preview)Strukturierte AusgabenZitateStreaming MessagesBatch-VerarbeitungPDF-UnterstützungSuchergebnisseMehrsprachige UnterstützungEmbeddingsVision
    Tools
    ÜbersichtTool-Nutzung implementierenWeb-Such-ToolWeb-Abruf-ToolCode-Ausführungs-ToolMemory-ToolBash-ToolComputer-Use-ToolText-Editor-Tool
    Tool-Infrastruktur
    Tool-SucheProgrammgesteuerte Tool-AufrufeFeingranulares Tool-Streaming
    Kontextverwaltung
    KontextfensterKomprimierungKontextbearbeitungPrompt CachingToken-Zählung
    Dateien & Assets
    Files API
    Agent Skills
    ÜbersichtSchnelleinstiegBest PracticesSkills für UnternehmenSkills mit der API verwenden
    Agent SDK
    ÜbersichtSchnelleinstiegTypeScript SDKTypeScript V2 (Preview)Python SDKMigrationsleitfaden
    Streaming-EingabeAntworten in Echtzeit streamenStop-Gründe verarbeitenBerechtigungen verarbeitenBenutzergenehmigungen und EingabeAusführung mit Hooks steuernSitzungsverwaltungDatei-CheckpointingStrukturierte Ausgaben im SDKAgent SDK hostenKI-Agenten sicher bereitstellenSystem-Prompts ändernMCP im SDKBenutzerdefinierte ToolsSubagents im SDKSlash-Befehle im SDKAgent Skills im SDKKosten und Nutzung verfolgenTodo-ListenPlugins im SDK
    MCP in der API
    MCP-ConnectorRemote MCP-Server
    Claude auf Plattformen von Drittanbietern
    Amazon BedrockMicrosoft FoundryVertex AI
    Prompt Engineering
    ÜbersichtPrompt-GeneratorPrompt-Vorlagen verwendenPrompt-VerbessererKlar und direkt seinBeispiele verwenden (Multishot Prompting)Claude denken lassen (CoT)XML-Tags verwendenClaude eine Rolle geben (System Prompts)Komplexe Prompts verkettenTipps für lange KontexteTipps für Extended Thinking
    Testen & Evaluieren
    Erfolgskriterien definierenTestfälle entwickelnEvaluierungstool verwendenLatenz reduzieren
    Schutzmaßnahmen verstärken
    Halluzinationen reduzierenAusgabekonsistenz erhöhenJailbreaks abschwächenStreaming-AblehnungenPrompt-Lecks reduzierenClaude im Charakter halten
    Verwaltung und Überwachung
    Admin API ÜbersichtDatenspeicherortArbeitsbereicheUsage and Cost APIClaude Code Analytics APIZero 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
    Leitfäden

    Behandlung von Stop-Gründen

    Erkennen Sie Ablehnungen und andere Stop-Gründe direkt aus Ergebnismeldungen im Agent SDK

    Das Feld stop_reason in Ergebnismeldungen teilt Ihnen mit, warum das Modell die Generierung beendet hat. Dies ist die empfohlene Methode, um Ablehnungen, Maximale-Token-Limits und andere Beendigungsbedingungen zu erkennen (kein Stream-Parsing erforderlich).

    stop_reason ist auf jeder ResultMessage verfügbar, unabhängig davon, ob Streaming aktiviert ist. Sie müssen include_partial_messages (Python) oder includePartialMessages (TypeScript) nicht festlegen.

    Reading stop_reason

    Das Feld stop_reason ist sowohl auf erfolgreichen als auch auf fehlerhaften Ergebnismeldungen vorhanden. Überprüfen Sie es nach dem Durchlaufen des Nachrichtenstroms:

    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())

    Verfügbare Stop-Gründe

    Stop-GrundBedeutung
    end_turnDas Modell hat seine Antwort normal beendet.
    max_tokensDie Antwort hat das maximale Ausgabe-Token-Limit erreicht.
    stop_sequenceDas Modell hat eine konfigurierte Stop-Sequenz generiert.
    refusalDas Modell hat sich geweigert, die Anfrage zu erfüllen.
    tool_useDie endgültige Ausgabe des Modells war ein Werkzeugaufruf. Dies ist in SDK-Ergebnissen ungewöhnlich, da Werkzeugaufrufe normalerweise ausgeführt werden, bevor das Ergebnis zurückgegeben wird.
    nullEs wurde keine API-Antwort empfangen; beispielsweise ist ein Fehler aufgetreten, bevor die erste Anfrage gestellt wurde, oder das Ergebnis wurde aus einer zwischengespeicherten Sitzung wiedergegeben.

    Stop-Gründe bei Fehlerergebnissen

    Fehlerergebnisse (wie error_max_turns oder error_during_execution) enthalten auch stop_reason. Der Wert spiegelt die letzte Assistenzmeldung wider, die vor dem Fehler empfangen wurde:

    Ergebnisvariantestop_reason Wert
    successDer Stop-Grund aus der endgültigen Assistenzmeldung.
    error_max_turnsDer Stop-Grund aus der letzten Assistenzmeldung, bevor das Turnus-Limit erreicht wurde.
    error_max_budget_usdDer Stop-Grund aus der letzten Assistenzmeldung, bevor das Budget überschritten wurde.
    error_max_structured_output_retriesDer Stop-Grund aus der letzten Assistenzmeldung, bevor das Wiederholungslimit erreicht wurde.
    error_during_executionDer zuletzt angetroffene Stop-Grund oder null, wenn der Fehler vor einer API-Antwort aufgetreten ist.
    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())

    Ablehnungen erkennen

    stop_reason === "refusal" ist die einfachste Methode, um zu erkennen, wenn das Modell eine Anfrage ablehnt. Zuvor erforderte das Erkennen von Ablehnungen das Aktivieren von Partial-Message-Streaming und das manuelle Scannen von StreamEvent-Meldungen auf message_delta-Ereignisse. Mit stop_reason in der Ergebnismeldung können Sie direkt überprüfen:

    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"))

    Nächste Schritte

    • Antworten in Echtzeit streamen: Greifen Sie auf rohe API-Ereignisse einschließlich message_delta zu, während sie ankommen
    • Strukturierte Ausgaben: Erhalten Sie typisierte JSON-Antworten vom Agent
    • Kosten und Nutzung verfolgen: Verstehen Sie die Token-Nutzung und Abrechnung aus Ergebnismeldungen

    Was this page helpful?

    • Reading stop_reason
    • Verfügbare Stop-Gründe
    • Stop-Gründe bei Fehlerergebnissen
    • Ablehnungen erkennen
    • Nächste Schritte