Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pemadatan
Tip
Pemadatan sisi server direkomendasikan untuk mengelola konteks dalam percakapan yang berjalan lama dan alur kerja agen karena menangani manajemen konteks secara otomatis dengan pekerjaan integrasi minimal.
catatan
Pemadatan saat ini dalam versi beta. Sertakan header beta compact-2026-01-12 dalam permintaan API Anda untuk menggunakan fitur ini. Pemadatan saat ini tidak didukung oleh Converse API, namun didukung dengan InvokeModel.
Pemadatan memperluas panjang konteks efektif untuk percakapan dan tugas yang berjalan lama dengan secara otomatis meringkas konteks yang lebih lama saat mendekati batas jendela konteks. Ini sangat ideal untuk:
-
Percakapan multi-putaran berbasis obrolan di mana Anda ingin pengguna menggunakan satu obrolan untuk jangka waktu yang lama
-
Permintaan berorientasi tugas yang membutuhkan banyak pekerjaan tindak lanjut (seringkali penggunaan alat) yang mungkin melebihi jendela konteks 200K
Pemadatan didukung pada model berikut:
| Model | ID Model |
|---|---|
Claude Sonnet 4.6 |
|
Claude Opus 4.6 |
|
catatan
Tingkat atas input_tokens dan output_tokens di usage lapangan tidak menyertakan penggunaan iterasi pemadatan, dan mencerminkan jumlah semua iterasi non-pemadatan. Untuk menghitung total token yang dikonsumsi dan ditagih untuk permintaan, jumlahkan semua entri dalam array. usage.iterations
Jika sebelumnya Anda mengandalkan usage.input_tokens dan usage.output_tokens untuk pelacakan biaya atau audit, Anda perlu memperbarui logika pelacakan untuk digabungkan usage.iterations saat pemadatan diaktifkan. iterationsArray hanya hadir ketika pemadatan baru dipicu selama permintaan. Menerapkan kembali compaction blok sebelumnya tidak menimbulkan biaya pemadatan tambahan, dan bidang penggunaan tingkat atas tetap akurat dalam kasus itu.
Cara kerja pemadatan
Saat pemadatan diaktifkan, Claude secara otomatis merangkum percakapan Anda saat mendekati ambang token yang dikonfigurasi. API:
-
Mendeteksi ketika token masukan melebihi ambang batas pemicu yang Anda tentukan.
-
Menghasilkan ringkasan percakapan saat ini.
-
Membuat
compactionblok yang berisi ringkasan. -
Melanjutkan respons dengan konteks yang dipadatkan.
Pada permintaan berikutnya, tambahkan respons ke pesan Anda. API secara otomatis menghapus semua blok pesan sebelum compaction pemblokiran, melanjutkan percakapan dari ringkasan.
Penggunaan dasar
Aktifkan pemadatan dengan menambahkan compact_20260112 strategi ke context_management.edits dalam permintaan Messages API Anda.
Parameter
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
type |
string | Diperlukan | Harus "compact_20260112" |
trigger |
object | 150.000 token | Kapan harus memicu pemadatan. Harus setidaknya 50.000 token. |
pause_after_compaction |
boolean | false |
Apakah akan berhenti sejenak setelah menghasilkan ringkasan pemadatan |
instructions |
string | null |
Permintaan ringkasan kustom. Sepenuhnya menggantikan prompt default saat disediakan. |
Konfigurasi pemicu
Konfigurasikan saat pemadatan memicu menggunakan parameter: trigger
import boto3 import json bedrock_runtime = boto3.client(service_name='bedrock-runtime') response = bedrock_runtime.invoke_model( modelId="us.anthropic.claude-opus-4-6-v1", body=json.dumps({ "anthropic_version": "bedrock-2023-05-31", "anthropic_beta": ["compact-2026-01-12"], "max_tokens": 4096, "messages": [{"role": "user", "content": "Help me build a website"}], "context_management": { "edits": [ { "type": "compact_20260112", "trigger": { "type": "input_tokens", "value": 100000 } } ] } }) ) response_body = json.loads(response["body"].read()) print(response_body["content"][-1]["text"])
Instruksi ringkasan kustom
Secara default, pemadatan menggunakan prompt ringkasan berikut:
You have written a partial transcript for the initial task above. Please write a summary of the transcript. The purpose of this summary is to provide continuity so you can continue to make progress towards solving the task in a future context, where the raw history above may not be accessible and will be replaced with this summary. Write down anything that would be helpful, including the state, next steps, learnings etc. You must wrap your summary in a <summary></summary> block.
Anda dapat memberikan instruksi khusus melalui instructions parameter untuk mengganti prompt ini sepenuhnya. Instruksi khusus tidak melengkapi default; mereka sepenuhnya menggantikannya:
import boto3 import json bedrock_runtime = boto3.client(service_name='bedrock-runtime') response = bedrock_runtime.invoke_model( modelId="us.anthropic.claude-opus-4-6-v1", body=json.dumps({ "anthropic_version": "bedrock-2023-05-31", "anthropic_beta": ["compact-2026-01-12"], "max_tokens": 4096, "messages": [{"role": "user", "content": "Help me build a website"}], "context_management": { "edits": [ { "type": "compact_20260112", "instructions": "Focus on preserving code snippets, variable names, and technical decisions." } ] } }) ) response_body = json.loads(response["body"].read()) print(response_body["content"][-1]["text"])
Berhenti setelah pemadatan
Gunakan pause_after_compaction untuk menjeda API setelah membuat ringkasan pemadatan. Ini memungkinkan Anda menambahkan blok konten tambahan (seperti menyimpan pesan terbaru atau pesan berorientasi instruksi tertentu) sebelum API melanjutkan respons.
Saat diaktifkan, API mengembalikan pesan dengan alasan compaction berhenti setelah membuat blok pemadatan:
import boto3 import json bedrock_runtime = boto3.client(service_name='bedrock-runtime') messages = [{"role": "user", "content": "Help me build a website"}] response = bedrock_runtime.invoke_model( modelId="us.anthropic.claude-opus-4-6-v1", body=json.dumps({ "anthropic_version": "bedrock-2023-05-31", "anthropic_beta": ["compact-2026-01-12"], "max_tokens": 4096, "messages": messages, "context_management": { "edits": [ { "type": "compact_20260112", "pause_after_compaction": True } ] } }) ) response_body = json.loads(response["body"].read()) # Check if compaction triggered a pause if response_body.get("stop_reason") == "compaction": # Response contains only the compaction block messages.append({"role": "assistant", "content": response_body["content"]}) # Continue the request response = bedrock_runtime.invoke_model( modelId="us.anthropic.claude-opus-4-6-v1", body=json.dumps({ "anthropic_version": "bedrock-2023-05-31", "anthropic_beta": ["compact-2026-01-12"], "max_tokens": 4096, "messages": messages, "context_management": { "edits": [{"type": "compact_20260112"}] } }) ) response_body = json.loads(response["body"].read()) print(response_body["content"][-1]["text"])
Bekerja dengan blok pemadatan
Saat pemadatan dipicu, API mengembalikan compaction blok di awal respons asisten.
Percakapan yang berjalan lama dapat menghasilkan beberapa pemadatan. Blok pemadatan terakhir mencerminkan status akhir prompt, menggantikan konten sebelumnya dengan ringkasan yang dihasilkan.
{ "content": [ { "type": "compaction", "content": "Summary of the conversation: The user requested help building a web scraper..." }, { "type": "text", "text": "Based on our conversation so far..." } ] }
Streaming
Saat streaming respons dengan pemadatan diaktifkan, Anda akan menerima content_block_start acara saat pemadatan dimulai. Blok pemadatan mengalir secara berbeda dari blok teks. Anda akan menerima content_block_start acara, diikuti oleh satu content_block_delta dengan konten ringkasan lengkap (tidak ada streaming menengah), dan kemudian content_block_stop acara.
Caching cepat
Anda dapat menambahkan cache_control breakpoint pada blok pemadatan, yang menyimpan prompt sistem lengkap bersama dengan konten yang diringkas. Konten asli yang dipadatkan diabaikan. Perhatikan bahwa ketika pemadatan dipicu, itu dapat mengakibatkan cache hilang pada permintaan berikutnya.
{ "role": "assistant", "content": [ { "type": "compaction", "content": "[summary text]", "cache_control": {"type": "ephemeral"} }, { "type": "text", "text": "Based on our conversation..." } ] }
Memahami penggunaan
Pemadatan membutuhkan langkah pengambilan sampel tambahan, yang berkontribusi pada batas nilai dan penagihan. API mengembalikan informasi penggunaan terperinci dalam respons:
{ "usage": { "input_tokens": 45000, "output_tokens": 1234, "iterations": [ { "type": "compaction", "input_tokens": 180000, "output_tokens": 3500 }, { "type": "message", "input_tokens": 23000, "output_tokens": 1000 } ] } }
iterationsArray menunjukkan penggunaan untuk setiap iterasi sampling. Ketika pemadatan terjadi, Anda akan melihat compaction iterasi diikuti oleh iterasi utamamessage. Jumlah token iterasi akhir mencerminkan ukuran konteks efektif setelah pemadatan.