Loading...
    • Panduan Pengembang
    • Referensi API
    • MCP
    • Sumber daya
    • Catatan rilis
    Search...
    ⌘K
    Langkah pertama
    Pengenalan ClaudeMulai cepat
    Model & harga
    Ikhtisar modelMemilih modelYang baru di Claude 4.6Panduan migrasiPenghentian modelHarga
    Bangun dengan Claude
    Ikhtisar fiturMenggunakan Messages APIMenangani alasan berhentiPraktik terbaik prompting
    Manajemen konteks
    Jendela konteksKompresiPengeditan konteks
    Kemampuan
    Caching promptPemikiran diperpanjangPemikiran adaptifUpayaStreaming pesanPemrosesan batchKutipanDukungan multibahasaPenghitungan tokenEmbeddingsVisiDukungan PDFFiles APIHasil pencarianOutput terstruktur
    Alat
    IkhtisarCara mengimplementasikan penggunaan alatStreaming alat berbutir halusAlat BashAlat eksekusi kodePemanggilan alat terprogramAlat penggunaan komputerAlat editor teksAlat pengambilan webAlat pencarian webAlat memoriAlat pencarian alat
    Keterampilan Agen
    IkhtisarMulai cepatPraktik terbaikKeterampilan untuk perusahaanMenggunakan Keterampilan dengan API
    Agent SDK
    IkhtisarMulai cepatTypeScript SDKTypeScript V2 (pratinjau)Python SDKPanduan migrasi
    Input streamingStreaming respons secara real-timeMenangani alasan berhentiMenangani izinPersetujuan pengguna dan inputKontrol eksekusi dengan hookManajemen sesiCheckpointing fileOutput terstruktur di SDKHosting Agent SDKPenyebaran agen AI dengan amanMemodifikasi prompt sistemMCP di SDKAlat kustomSubagen di SDKPerintah garis miring di SDKKeterampilan agen di SDKPelacakan biaya dan penggunaanDaftar tugasPlugin di SDK
    MCP di API
    Konektor MCPServer MCP jarak jauh
    Claude di platform pihak ketiga
    Amazon BedrockMicrosoft FoundryVertex AI
    Rekayasa prompt
    IkhtisarGenerator promptGunakan template promptPenyempurna promptJadilah jelas dan langsungGunakan contoh (prompting multishot)Biarkan Claude berpikir (CoT)Gunakan tag XMLBerikan Claude peran (prompt sistem)Rantai prompt kompleksTips konteks panjangTips pemikiran diperpanjang
    Uji & evaluasi
    Tentukan kriteria kesuksesanKembangkan kasus ujiMenggunakan alat evaluasiMengurangi latensi
    Perkuat penjaga
    Kurangi halusinasiTingkatkan konsistensi outputMitigasi jailbreakStreaming penolakanKurangi kebocoran promptJaga Claude tetap dalam karakter
    Administrasi dan pemantauan
    Ikhtisar Admin APIResidensi dataRuang kerjaAPI penggunaan dan biayaClaude Code Analytics APIRetensi data nol
    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
    Panduan

    Menangani alasan berhenti

    Deteksi penolakan dan alasan berhenti lainnya langsung dari pesan hasil dalam Agent SDK

    Bidang stop_reason pada pesan hasil memberi tahu Anda mengapa model berhenti menghasilkan. Ini adalah cara yang direkomendasikan untuk mendeteksi penolakan, batas token maksimal, dan kondisi penghentian lainnya (tidak diperlukan parsing stream).

    stop_reason tersedia pada setiap ResultMessage, terlepas dari apakah streaming diaktifkan. Anda tidak perlu mengatur include_partial_messages (Python) atau includePartialMessages (TypeScript).

    Membaca stop_reason

    Bidang stop_reason hadir pada pesan hasil kesuksesan dan kesalahan. Periksanya setelah mengulangi aliran pesan:

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

    Alasan berhenti yang tersedia

    Alasan berhentiArti
    end_turnModel selesai menghasilkan responsnya secara normal.
    max_tokensRespons mencapai batas token keluaran maksimal.
    stop_sequenceModel menghasilkan urutan berhenti yang dikonfigurasi.
    refusalModel menolak untuk memenuhi permintaan.
    tool_useKeluaran akhir model adalah panggilan alat. Ini jarang terjadi dalam hasil SDK karena panggilan alat biasanya dieksekusi sebelum hasil dikembalikan.
    nullTidak ada respons API yang diterima; misalnya, kesalahan terjadi sebelum permintaan pertama, atau hasil diputar ulang dari sesi yang di-cache.

    Alasan berhenti pada hasil kesalahan

    Hasil kesalahan (seperti error_max_turns atau error_during_execution) juga membawa stop_reason. Nilainya mencerminkan pesan asisten terakhir yang diterima sebelum kesalahan terjadi:

    Varian hasilnilai stop_reason
    successAlasan berhenti dari pesan asisten akhir.
    error_max_turnsAlasan berhenti dari pesan asisten terakhir sebelum batas giliran tercapai.
    error_max_budget_usdAlasan berhenti dari pesan asisten terakhir sebelum anggaran terlampaui.
    error_max_structured_output_retriesAlasan berhenti dari pesan asisten terakhir sebelum batas percobaan ulang tercapai.
    error_during_executionAlasan berhenti terakhir yang terlihat, atau null jika kesalahan terjadi sebelum respons API apa pun.
    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())

    Mendeteksi penolakan

    stop_reason === "refusal" adalah cara paling sederhana untuk mendeteksi ketika model menolak permintaan. Sebelumnya, mendeteksi penolakan memerlukan pengaktifan streaming pesan parsial dan pemindaian manual pesan StreamEvent untuk acara message_delta. Dengan stop_reason pada pesan hasil, Anda dapat memeriksa secara langsung:

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

    Langkah selanjutnya

    • Streaming respons secara real-time: akses acara API mentah termasuk message_delta saat tiba
    • Keluaran terstruktur: dapatkan respons JSON yang diketik dari agen
    • Melacak biaya dan penggunaan: pahami penggunaan token dan penagihan dari pesan hasil

    Was this page helpful?

    • Membaca stop_reason
    • Alasan berhenti yang tersedia
    • Alasan berhenti pada hasil kesalahan
    • Mendeteksi penolakan
    • Langkah selanjutnya