Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.
Pemadatan
Tip
Server-side pemadatan 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 merangkum konteks lama saat mendekati batas jendela konteks. Ini sangat ideal untuk:
-
Chat-based, percakapan multi-putaran di mana Anda ingin pengguna menggunakan satu obrolan untuk jangka waktu yang lama
-
Task-oriented petunjuk yang memerlukan banyak pekerjaan tindak lanjut (sering penggunaan alat) yang mungkin melebihi jendela konteks 200K
Pemadatan didukung pada model berikut:
| Model | Model ID |
|---|---|
Claude Sonnet 4.6 |
|
Claude Opus 4.6 |
|
catatan
Tingkat atas input_tokens dan output_tokens di usage lapangan tidak termasuk penggunaan iterasi pemadatan, dan mencerminkan jumlah semua iterasi non-pemadatan. Untuk menghitung total token yang dikonsumsi dan ditagih untuk permintaan, jumlahkan semua entri dalam usage.iterations array.
Jika sebelumnya Anda mengandalkan usage.input_tokens dan usage.output_tokens untuk pelacakan atau audit biaya, Anda perlu memperbarui logika pelacakan untuk digabungkan usage.iterations saat pemadatan diaktifkan. iterationsArray hanya hadir ketika pemadatan baru dipicu selama permintaan. Re-applying compactionblok 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 saat token input melebihi ambang 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 pem compaction blokiran, melanjutkan percakapan dari ringkasan.
Penggunaan dasar
Aktifkan pemadatan dengan menambahkan compact_20260112 strategi ke context_management.edits dalam permintaan API Pesan Anda.
Parameter
| Parameter | Tipe | Default | Deskripsi |
|---|---|---|---|
type |
string | Diperlukan | Harus "compact_20260112" |
trigger |
object | 150.000 token | Kapan memicu pemadatan. Setidaknya harus 50.000 token. |
pause_after_compaction |
boolean | false |
Apakah akan berhenti setelah membuat ringkasan pemadatan |
instructions |
string | null |
Prompt ringkasan kustom. Benar-benar menggantikan prompt default saat disediakan. |
Konfigurasi pemicu
Konfigurasikan saat pemadatan memicu menggunakan trigger parameter:
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"])
Jeda setelah pemadatan
Gunakan pause_after_compaction untuk menjeda API setelah membuat ringkasan pemadatan. Ini memungkinkan Anda untuk menambahkan blok konten tambahan (seperti melestarikan pesan terbaru atau pesan berorientasi instruksi tertentu) sebelum API melanjutkan respons.
Saat diaktifkan, API mengembalikan pesan dengan alasan compaction berhenti setelah menghasilkan 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 berlangsung lama dapat mengakibatkan beberapa pemadatan. Blok pemadatan terakhir mencerminkan keadaan akhir prompt, mengganti 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 peristiwa 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 (tanpa streaming perantara), 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 kehilangan cache 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 memerlukan langkah pengambilan sampel tambahan, yang berkontribusi pada batas tarif 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 } ] } }
Ar iterations ray 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.