Pesan sistem dan perubahan alat di tengah percakapan
Ubah instruksi sistem atau ketersediaan alat di tengah percakapan tanpa membatalkan prefiks yang telah di-cache sebelumnya.
Instruksi sistem biasanya berada di field system tingkat atas, mendahului setiap pesan dalam percakapan. Posisi itu sangat baik untuk caching prompt: "system prompt" (prompt sistem) merupakan bagian dari prefiks yang stabil, sehingga giliran berikutnya mengenai cache. Posisi itu buruk untuk instruksi yang baru Anda sadari diperlukan di tengah sesi, karena mengedit field system tingkat atas mengubah bagian paling awal dari prompt dan membatalkan cache untuk semua yang mengikutinya.
Pesan sistem di tengah percakapan menutup celah itu. Anda menambahkan pesan {"role": "system"} pada titik dalam percakapan di mana instruksi baru menjadi relevan, alih-alih mengedit field system tingkat atas. Prefiks yang di-cache tetap sama, sehingga permintaan berikutnya masih membacanya dari cache, dan instruksi baru tetap diterapkan sebagai instruksi sistem, bukan sebagai teks pengguna biasa.
Perubahan alat di tengah percakapan
Array tools berada lebih awal lagi dalam prefiks permintaan yang di-hash dibandingkan field system tingkat atas, sehingga mengeditnya membatalkan cache prompt untuk seluruh percakapan. Perubahan alat di tengah percakapan adalah padanan alat dari pesan sistem di tengah percakapan. Alih-alih menetapkan daftar alat selama masa hidup percakapan, Anda mengubah alat mana yang ditawarkan kepada model di antara giliran: deklarasikan set alat lengkap di tools sejak awal, lalu gunakan blok tool_addition dan tool_removal untuk menawarkan alat kepada model, atau menariknya, mulai dari titik tertentu dalam percakapan dan seterusnya. Array tools itu sendiri tidak pernah berubah, sehingga prefiks yang di-cache tetap utuh.
tool_addition dan tool_removal adalah blok konten dalam array content dari pesan role: "system", dan keduanya dapat dicampur dengan blok text dalam pesan yang sama. Pesan tersebut mengikuti aturan penempatan yang sama seperti pesan sistem di tengah percakapan lainnya (lihat Keterbatasan), dan perubahan berlaku mulai dari titik itu dalam percakapan dan seterusnya. Field tool pada setiap blok mereferensikan alat, bukan mendefinisikannya: {"type": "tool_reference", "name": "..."} menyebut nama alat yang dideklarasikan dalam array tools permintaan, dan alat konektor MCP dapat direferensikan satu per satu dengan mcp_tool_reference (server_name dan name) atau sebagai keseluruhan toolset dengan mcp_toolset_reference (server_name). Mereferensikan nama yang tidak dideklarasikan di tools mengembalikan error 400.
Setiap alat yang dideklarasikan di tools ditawarkan kepada model sejak awal percakapan kecuali dideklarasikan dengan defer_loading: true, yang membuatnya tetap ditahan hingga blok tool_addition memunculkannya. tool_addition juga menawarkan kembali alat yang sebelumnya ditarik oleh tool_removal.
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-opus-5",
max_tokens=1024,
betas=["mid-conversation-tool-changes-2026-07-01"],
# Seluruh set alat dideklarasikan di awal dan tidak pernah berubah, sehingga
# prefiks yang di-cache tetap utuh.
tools=[
{
"name": "get_weather",
"description": "Get the current weather for a location.",
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "City name"},
},
"required": ["location"],
},
},
],
messages=[
{
"role": "user",
"content": "Say OK.",
},
# Tarik get_weather mulai dari titik ini. Blok ini merujuk
# alat berdasarkan nama alih-alih mengedit `tools`, sehingga giliran sebelumnya tetap
# identik per byte dan cache tetap hit.
{
"role": "system",
"content": [
{
"type": "tool_removal",
"tool": {"type": "tool_reference", "name": "get_weather"},
},
],
},
],
)
for block in response.content:
if block.type == "text":
print(block.text)Perubahan alat di tengah percakapan berada dalam versi beta. Untuk menggunakannya, sertakan header beta mid-conversation-tool-changes-2026-07-01 dalam permintaan Anda.
Kapan menggunakan pesan sistem di tengah percakapan
Caching prompt meng-hash prefiks permintaan secara berurutan: tools, lalu system, lalu messages. Cache hit mengharuskan prefiks cocok persis dengan permintaan terbaru, byte demi byte, hingga breakpoint cache.
Urutan itu berarti field system tingkat atas berada di dekat bagian paling awal dari prefiks yang di-hash. Perubahan apa pun padanya, bahkan menambahkan satu kalimat, menghasilkan hash yang berbeda, dan permintaan tersebut melewatkan cache untuk prompt sistem dan setiap pesan yang di-cache setelahnya.
Pesan sistem di tengah percakapan memungkinkan Anda menambahkan instruksi di akhir riwayat pesan sebagai gantinya. Semua yang ada sebelum instruksi baru tidak berubah, sehingga entri cache yang ada masih cocok, dan hanya pesan baru yang diproses sebagai input baru.
Beberapa situasi di mana hal ini penting:
- Perubahan kebijakan atau persona di tengah sesi. Sesi agentik yang panjang memerlukan batasan baru ("mulai sekarang, tulis semua SQL sebagai kueri berparameter") setelah puluhan giliran yang di-cache. Menambahkannya ke field
systemtingkat atas akan memproses ulang seluruh riwayat. - Konteks per giliran yang harus bersifat otoritatif. Anda ingin menyisipkan catatan kesegaran, tenggat sesi, atau perubahan ketersediaan alat dengan bobot tingkat sistem, dan hal itu berubah terlalu sering untuk berada dalam prefiks yang di-cache.
- Pengingat per giliran yang tidak boleh menumpuk. Sebuah harness mendorong model setelah setiap batch hasil alat ("minta pembacaan independen secara bersamaan", "pengguna sudah lama tidak mendengar kabar dari Anda") dan ingin model hanya melihat salinan terbaru. Pesan sistem dengan cakupan giliran dirender untuk satu giliran lalu tidak memakan biaya apa pun, tanpa menghapus apa pun dari riwayat.
- Perubahan status yang diamati aplikasi Anda. Aplikasi Anda menyadari sesuatu yang harus diperlakukan Claude sebagai fakta tingkat operator: file berubah di disk, pengguna mengubah pengaturan persetujuan otomatis, alat yang tersedia berubah, atau sisa anggaran token turun di bawah ambang batas.
- Input pengguna yang tidak boleh menginterupsi loop agentik. Pengguna mengetik tindak lanjut saat Claude masih mengeksekusi alat untuk permintaan sebelumnya. Meneruskannya sebagai pesan sistem setelah hasil alat berikutnya memungkinkan Claude menggabungkan input baru ke dalam pekerjaan yang sedang dilakukannya, alih-alih memperlakukannya sebagai permintaan baru untuk beralih. Lihat Penempatan setelah hasil alat.
- Peralihan mode yang memberikan izin tetap. Mode tingkat sesi dapat menggunakan pesan sistem di tengah percakapan untuk memberikan persetujuan tetap terhadap kapabilitas yang mahal, seperti meluncurkan alur kerja multiagen secara otomatis, dengan penyegaran singkat setiap beberapa giliran dan pemberitahuan keluar saat mode dimatikan. Untuk contoh lengkap, lihat Membangun mode orkestrasi.
Dalam semua kasus ini Anda dapat menempatkan instruksi dalam pesan user biasa, dan Claude memang mengikuti instruksi yang datang dalam giliran pengguna. Perbedaannya adalah prioritas: pesan user diperlakukan sebagai berasal dari pengguna akhir, sedangkan pesan system diperlakukan sebagai berasal dari Anda, operator aplikasi. Ketika keduanya bertentangan, instruksi sistem diutamakan, jadi gunakan role system untuk fakta dan batasan tingkat operator yang harus tetap berlaku meskipun pengguna akhir meminta sesuatu yang berbeda. Pesan sistem di tengah percakapan mempertahankan prioritas tingkat operator itu tanpa membayar biaya cache miss akibat mengedit field system tingkat atas.
Cara kerjanya
Tambahkan pesan dengan "role": "system" ke array messages. Gunakan string biasa atau blok konten untuk content, sama seperti giliran user atau assistant. Instruksi berlaku mulai dari titik itu dalam percakapan dan seterusnya. Ketika instruksi bertentangan, pesan sistem yang lebih baru diutamakan daripada yang lebih lama, dan pesan sistem di tengah percakapan diutamakan daripada field system tingkat atas untuk giliran yang mengikutinya.
Anda masih dapat mengatur field system tingkat atas untuk instruksi yang harus berlaku untuk seluruh percakapan. Cadangkan pesan sistem di tengah percakapan untuk instruksi yang baru menjadi relevan kemudian, atau yang ingin Anda tambahkan tanpa membatalkan prefiks yang di-cache.
Pesan role: "system" juga dapat membawa output_config.effort untuk mengubah tingkat effort mulai dari giliran user berikutnya. Ini berada dalam versi beta di Claude Fable 5.1, Claude Mythos 5.1, dan Claude Opus 5 di Claude API dan memerlukan header beta mid-conversation-output-config-2026-07-01. Lihat Effort per pesan.
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
# Caching prompt otomatis: setiap permintaan meng-cache percakapan sejauh ini,
# dan permintaan berikutnya membaca prefiks yang tidak berubah dari cache.
cache_control={"type": "ephemeral"},
system="You are a code review assistant. Be concise.",
messages=[
{
"role": "user",
"content": "Review process() in utils.py for performance issues.",
},
{
"role": "assistant",
"content": "The list comprehension is fine for small inputs. For large inputs, consider a generator to avoid materializing the full list.",
},
{
"role": "user",
"content": "Now review the calling code that invokes process().",
},
# Di tengah sesi, peninjau menyadari bahwa semua saran juga harus
# lolos kebijakan strict typing tim. Menambahkan instruksi
# di sini menjaga giliran sebelumnya tetap identik per byte, sehingga
# prefiks yang di-cache oleh permintaan sebelumnya tetap dibaca dari cache.
{
"role": "system",
"content": "From now on, every suggestion must include explicit type annotations.",
},
],
)
for block in response.content:
if block.type == "text":
print(block.text)Contoh ini mengaktifkan caching otomatis dengan field cache_control tingkat atas. Caching prompt bersifat opt-in: jika permintaan tidak memiliki field cache_control (otomatis atau breakpoint eksplisit), tidak ada yang di-cache dan setiap permintaan membayar harga token input reguler untuk seluruh percakapan. Dengan caching diaktifkan, menambahkan pesan sistem membiarkan giliran yang sudah di-cache tidak berubah, sehingga permintaan yang membawa instruksi baru masih membacanya dari cache alih-alih memprosesnya lagi. Caching juga mengharuskan percakapan memenuhi panjang prompt minimum yang dapat di-cache; contoh sesingkat ini berada di bawahnya, sehingga cache_creation_input_tokens dan cache_read_input_tokens tetap 0 hingga percakapan bertambah panjang.
Pesan sistem di tengah percakapan harus langsung mengikuti giliran user (atau giliran assistant yang berakhir dengan hasil alat server), dan harus menjadi entri terakhir di messages atau langsung diikuti oleh giliran assistant. Pesan user yang membawa blok tool_result termasuk: dalam loop agentik Anda dapat menempatkan pesan sistem tepat setelah hasil alat, sebelum giliran Claude berikutnya. Posisi lain apa pun, termasuk di antara blok tool_use assistant dan tool_result yang menjawabnya, mengembalikan error 400.
Penempatan setelah hasil alat
Dalam loop agentik, pesan sistem ditempatkan setelah pesan user yang menyampaikan hasil alat. Di sini juga aplikasi Anda dapat meneruskan input yang diketik pengguna saat Claude sedang bekerja, sehingga konteks baru diserap tanpa memulai ulang giliran:
[
{ "role": "user", "content": "Run the test suite and fix any failures." },
{
"role": "assistant",
"content": [{ "type": "tool_use", "id": "toolu_01", "name": "run_tests", "input": {} }]
},
{
"role": "user",
"content": [
{ "type": "tool_result", "tool_use_id": "toolu_01", "content": "12 passed, 0 failed" }
]
},
{
"role": "system",
"content": "The user sent the following message while you were working: also update the changelog before you finish."
}
]Rumuskan konten sistem sebagai konteks, bukan sebagai perintah yang mengesampingkan pengguna. Nyatakan faktanya ("input baru tiba dari pengguna: X", "sisa anggaran token sekarang Y") dan biarkan Claude bertindak berdasarkan itu. Claude dilatih untuk menolak instruksi yang tampak bekerja melawan pengguna, dan perlindungan itu tetap berlaku untuk role sistem, sehingga bahasa seperti "abaikan apa yang dikatakan pengguna" kurang efektif dibandingkan menyatakan apa yang berubah.
Pola ini untuk meneruskan input dari pengguna akhir percakapan itu sendiri. Jangan menggunakannya untuk meneruskan output alat, dokumen yang diambil, atau konten pihak ketiga lainnya; simpan konten itu dalam blok tool_result (lihat Keterbatasan).
Pesan sistem dengan cakupan giliran
Untuk membatasi cakupan pesan role: "system" pada giliran saat ini, atur field clear_at-nya. Field ini menerima salah satu dari dua nilai:
"never"(default): pesan dirender pada posisinya di setiap permintaan yang menyertakannya. Menghilangkan field ini hasilnya identik."next_user_message": pesan bercakupan giliran. Teksnya hanya dirender selama tidak ada pesanrole: "user"yang datang setelahnya dimessages. Pesan pengguna yang hanya membawa bloktool_resultdihitung sebagai pesan pengguna di sini. Begitu ada pesan pengguna yang lebih baru, pesan tersebut dibersihkan: pesan tetap berada dalam array tetapi tidak merender apa pun dan tidak memakan biaya token input, pada permintaan itu dan setiap permintaan berikutnya.
Pesan sistem dengan cakupan giliran berada dalam versi beta. Sertakan header beta mid-conversation-system-clear-at-2026-08-21. Tanpanya, clear_at ditolak sebagai field yang tidak dikenal.
{
"role": "system",
"clear_at": "next_user_message",
"content": "First privately list what you need next; then request every item that doesn't depend on another's result in this one response."
}Penggunaan utamanya adalah pengingat per giliran dalam loop alat. Tambahkan pengingat setelah pesan tool_result setiap kali Anda ingin model melihatnya, dan biarkan setiap salinan sebelumnya di tempatnya. Model hanya melihat salinan yang datang setelah pesan pengguna terakhir, sehingga pengingat tidak pernah menumpuk. Tidak ada yang berubah pada bagian awal messages, sehingga cache prompt tetap cocok. Di Claude Fable 5.1 ini juga menjaga blok thinking berikutnya tetap valid: menghapus pengingat sebelumnya akan mengubah percakapan sebelum blok-blok itu dan menggagalkan pemeriksaan percakapan, sedangkan pesan yang dibersihkan tetap berada dalam array dan membiarkan percakapan itu tidak berubah.
Permintaan berikut adalah langkah lanjutan dari loop agen. messages[3] dirender pada permintaan sebelumnya, ketika ia menjadi pesan terakhir dalam array. Begitu messages[5] (pesan pengguna yang lebih baru) ada, messages[3] dibersihkan: pesan yang dibersihkan tetap berada dalam array, sehingga percakapan sebelum blok thinking di messages[4] tidak berubah, tetapi model tidak lagi melihat teksnya. messages[6] dan messages[7] keduanya dirender, secara berurutan.
{
"model": "claude-fable-5-1",
"max_tokens": 16000,
"messages": [
{ "role": "user", "content": "Fix the failing test." },
{
"role": "assistant",
"content": [
{ "type": "thinking", "thinking": "", "signature": "..." },
{
"type": "tool_use",
"id": "toolu_01",
"name": "read_file",
"input": { "path": "test_auth.py" }
}
]
},
{
"role": "user",
"content": [{ "type": "tool_result", "tool_use_id": "toolu_01", "content": "..." }]
},
{
"role": "system",
"clear_at": "next_user_message",
"content": "Request independent reads in one turn."
},
{
"role": "assistant",
"content": [
{ "type": "thinking", "thinking": "", "signature": "..." },
{
"type": "tool_use",
"id": "toolu_02",
"name": "read_file",
"input": { "path": "auth.py" }
},
{
"type": "tool_use",
"id": "toolu_03",
"name": "read_file",
"input": { "path": "tokens.py" }
}
]
},
{
"role": "user",
"content": [
{ "type": "tool_result", "tool_use_id": "toolu_02", "content": "..." },
{
"type": "tool_result",
"tool_use_id": "toolu_03",
"content": "...",
"cache_control": { "type": "ephemeral" }
}
]
},
{
"role": "system",
"clear_at": "next_user_message",
"content": "Request independent reads in one turn."
},
{
"role": "system",
"clear_at": "next_user_message",
"content": "The shell exited with status 137."
}
]
}Aturan untuk pesan bercakupan giliran:
- Kirim ulang pesan yang dibersihkan secara verbatim. Pesan yang dibersihkan masih merupakan bagian dari riwayat percakapan. Membangunnya kembali dari status saat ini (jumlah token baru, stempel waktu), membuangnya karena dianggap redundan, atau mengubah nilai
clear_at-nya merupakan pengeditan terhadap pesan sebelumnya. Cache prompt meleset mulai dari titik itu, dan di Claude Fable 5.1 setiap blok thinking yang dihasilkan setelahnya gagal dalam pemeriksaan percakapan. - Hanya teks.
contentberupa satu atau lebih bloktext(atau string). Bloktool_additiondantool_removalmengembalikan error 400 pada pesan bercakupan giliran, begitu pulaoutput_config. Gunakan pesanrole: "system"terpisah tanpaclear_atuntuk itu. - Tidak ada
cache_controlpada bloknya. Pesan yang dibersihkan tidak pernah menjadi bagian dari kunci cache, sehingga breakpoint padanya tidak akan pernah cocok. Letakkan breakpoint pada blok terakhir dari giliran pengguna sebelumnya, seperti pada contoh. Field caching otomatis tingkat atas melewati pesan bercakupan giliran saat memilih breakpoint. Pada permintaan yang membersihkan pesan, prefiks cache yang dapat digunakan kembali berakhir pada giliran pengguna sebelumnya, sehingga hanya satu giliran asisten di antara pesan itu dan pesan pengguna baru yang diproses ulang. - Aturan penempatan tetap berlaku, dibersihkan atau tidak. Pesan bercakupan giliran harus mengikuti giliran
user(atau giliranassistantyang berakhir dengan hasil alat server) dan mendahului giliranassistantatau mengakhiri array, seperti pesan sistem di tengah percakapan lainnya. Pesan yang mengakhiri array selalu dirender. Pesan yang langsung diikuti oleh pesanuserlain adalah error 400, bukan pesan yang dibersihkan: letakkan semua hasil dari satu putaran alat dalam satu pesan pengguna dan pengingat setelahnya. - Giliran asisten tidak membersihkannya. Giliran asisten yang di-prefill atau dijeda setelah pesan tersebut, atau loop alat sisi server, tidak menambahkan pesan pengguna, sehingga pesan masih dirender pada kelanjutan itu. Untuk menjaga pengingat tetap terlihat sepanjang loop alat sisi klien, tambahkan lagi setelah setiap pesan
tool_result. - Penghitungan token mengikuti apa yang dirender. Pesan yang dibersihkan tidak menambahkan apa pun ke
usage.input_tokensatau ke penghitungan token. - Riwayat yang diimpor. Dalam transkrip yang Anda susun dalam satu langkah (contoh few-shot, percakapan yang dimigrasikan), pesan bercakupan giliran yang sudah memiliki giliran asisten dan pesan pengguna setelahnya dibersihkan sejak permintaan pertama dan tidak pernah dirender. Itu adalah status yang tepat untuk pengingat per giliran yang Anda bawa. Biarkan
clear_attidak diatur hanya pada pesan yang harus dilihat model di setiap permintaan.
Error validasinya adalah:
messages.3.clear_at: Extra inputs are not permitted
messages.3.clear_at: clear_at is only permitted on role 'system' messages
messages.3.clear_at: Input should be 'next_user_message' or 'never'
messages.3: a turn-scoped system message supports text blocks only (clear_at: 'next_user_message')
messages.3: output_config is not permitted on a turn-scoped system message (clear_at: 'next_user_message')
messages.3.content.0: cache_control is not permitted on a turn-scoped system message (clear_at: 'next_user_message')Yang pertama adalah error yang dikembalikan tanpa header beta. Di Amazon Bedrock dan Google Cloud, teruskan nilai beta seperti dijelaskan dalam Header beta.
Melalui SDK, atur clear_at pada entri role: "system" di messages dan kirim header beta. Contoh berikut menambahkan pengingat bercakupan giliran setelah giliran pengguna; pada permintaan berikutnya, begitu ada pesan pengguna yang lebih baru, pengingat tetap berada dalam array tetapi tidak lagi dirender:
client = anthropic.Anthropic()
response = client.beta.messages.create(
model="claude-fable-5-1",
max_tokens=4096,
messages=[
{
"role": "user",
"content": "Draft a short status update on the database migration for the team channel.",
},
# Pengingat lingkup giliran: dirender untuk giliran ini, lalu dihapus setelah ada pesan pengguna berikutnya.
{
"role": "system",
"clear_at": "next_user_message",
"content": "The reader is on call: keep this reply under 50 words.",
},
],
betas=["mid-conversation-system-clear-at-2026-08-21"],
)
for block in response.content:
if block.type == "text":
print(block.text)Menggabungkan dengan caching prompt
Pesan sistem di tengah percakapan dan caching prompt dirancang untuk digunakan bersama:
- Aktifkan caching secara eksplisit. Caching hanya terjadi ketika permintaan menyertakan
cache_control, baik field caching otomatis tingkat atas maupun breakpoint eksplisit pada blok konten. Pesan sistem di tengah percakapan tidak membuat entri cache dengan sendirinya, dan tanpa caching diaktifkan tidak ada penghematan yang perlu dipertahankan. - Cache prefiks yang stabil seperti biasa. Letakkan
cache_controlpada blok terakhir yang tetap sama di seluruh permintaan, baik itu akhir dari fieldsystemtingkat atas, akhir dari definisi alat Anda, atau titik stabil dalam riwayat pesan. - Tambahkan pesan sistem setelah breakpoint. Karena ia datang setelah prefiks yang di-cache, ia tidak mengubah hash prefiks dan cache tetap hit.
- Pesan sistem di tengah percakapan itu sendiri dapat di-cache. Begitu berada dalam percakapan, ia menjadi bagian dari riwayat yang stabil. Pada giliran berikutnya Anda dapat memindahkan breakpoint cache melewatinya (atau mengandalkan caching otomatis untuk melakukannya) dan pesan sistem dibaca dari cache seperti giliran lainnya.
Hindari mengedit atau menghapus pesan sistem di tengah percakapan yang sudah dikirim. Seperti perubahan lain pada pesan sebelumnya, hal itu membatalkan cache mulai dari titik itu dan seterusnya. Di Claude Fable 5.1 hal itu juga membatalkan blok thinking di setiap giliran asisten berikutnya. Untuk panduan yang hanya berlaku untuk satu giliran, gunakan pesan sistem dengan cakupan giliran dan biarkan di tempatnya. Jika instruksi perlu berkembang, tambahkan pesan sistem baru alih-alih menulis ulang yang lama. Pesan sistem berurutan diterima dan diperlakukan sebagai satu bagian sistem, yang mengikuti aturan penempatan yang sama secara keseluruhan.
Keterbatasan
- Bukan untuk pesan pertama. Pesan
systemyang membawa konten tidak dapat menjadi entri pertama dimessages. Gunakan fieldsystemtingkat atas untuk instruksi yang berlaku sejak awal. - Penempatan dibatasi. Pesan
systemyang membawa konten (bloktext,tool_addition, atautool_removal) harus langsung mengikuti giliranuser(termasuk giliranuseryang membawa bloktool_result) atau giliranassistantyang berakhir dengan hasil alat server, dan harus mendahului giliranassistantatau mengakhiri array. Pesan ini tidak dapat berada di antara bloktool_usedantool_result-nya. Menempatkannya di tempat lain mengembalikan error 400. Pesan dengancontentkosong yang hanya mengaturoutput_config.efforttidak merender apa pun pada posisinya dan diterima di mana saja dalammessages, termasuk di posisi pertama atau di antara giliranassistantdan giliranuser. Pesansystemberurutan dinilai bersama, sehingga menambahkan pesan yang membawa teks di sebelah pesan yang hanya berisi effort membuat seluruh kelompok mengikuti aturan konten. - Pesan bercakupan giliran hanya berisi teks dan dikirim ulang secara verbatim. Pesan
clear_at: "next_user_message"tidak membawatool_addition,tool_removal,output_config, ataucache_control, dan begitu dibersihkan ia harus tetap berada dimessagesbyte demi byte pada permintaan berikutnya. Lihat Pesan sistem dengan cakupan giliran. - Bukan tempat untuk konten yang tidak tepercaya. Claude memperlakukan konten sistem sebagai instruksi operator dan mengikutinya. Jangan menempatkan teks dari luar percakapan, seperti output alat mentah, dokumen yang diambil, atau konten web, langsung dalam pesan sistem; melakukannya memberi teks itu otoritas tingkat operator. Simpan data itu dalam blok
tool_resultdan terus ikuti Mitigasi jailbreak dan injeksi prompt.
Terkait
Cara kerja caching, di mana menempatkan breakpoint, dan cara membaca field penggunaan cache.
Cari tahu persis di mana dua permintaan berbeda ketika cache hit yang Anda harapkan tidak terjadi.
Struktur pesan, percakapan multi-giliran, dan field system.
Menulis prompt dan instruksi sistem yang efektif.
Bagaimana blok tool_use dan tool_result disusun dalam array messages.
Was this page helpful?