Bir aracı donanımını Claude Fable 5.1'e taşıdıysanız ve mesajında bir düşünme bloğunun “farklı bir konuşmaya bağlı” olduğunu söyleyen bir 400 hatası görmeye başladıysanız, kodunuz istekler arasında konuşma geçmişini düzenliyor demektir ve Fable 5.1 buna itiraz eden ilk Claude modelidir. Bu kılavuz, bu kontrolün ne olduğunu, kimler için geçerli olduğunu, tam olarak neyin tetiklediğini, acil çıkış yolunu ve hatayı ortadan kaldırırken aynı zamanda istem önbelleğinizi sıcak tutan yalnızca eklemeli desenleri açıklamaktadır. Bu kontrol, korunmuş düşünce altında ve Claude Fable 5.1'deki Yenilikler bölümünde belgelenmiştir. Fable 5.1'in üç bozucu değişikliğinden üçüncüsü ve bir donanımı sessizce bozabilecek tek değişikliktir. Diğer ikisi için geçiş kılavuzuna bakın.
Hata
messages.5.content.0: Invalid `signature` in `thinking` block. The block is bound to a different conversation. Remove the block, or set `thinking.block_binding.prefix_mismatch_behavior` to "drop_block". That setting requires the `thinking-binding-controls-2026-08-01` value in the `anthropic-beta` header.
Bu, herhangi bir çıktıdan önce karar verilen bir 400 invalid_request_error hatasıdır. Aynı gövdeyi yeniden denemek aynı şekilde başarısız olur. Yol (messages.5.content.0), artık eşleşmeyen ilk düşünme bloğunu işaret eder ve mesaj, değişen ilk mesajı belirten bir cümleyle daha bitebilir ki bu da istediğiniz tanıdır. Token sayma bitiş noktası aynı kontrolü çalıştırır.
Farklı bir hata benzer görünüyor ancak bu değil: “farklı bir konuşmaya bağlı” cümlesi olmadan aynı başlangıç ifadesi, imzanın kendisinin tahrif edildiği veya şifresinin çözülemeyeceği anlamına gelir ve prefix_mismatch_behavior geçerli değildir.
Kontrol ne yapar
Her Fable 5.1 düşünme bloğu iki şeyi kaydeden bir imza taşır: hangi modelin onu ürettiğini ve ondan önceki kesin konuşma öneğini, yani üst düzey system istemini, tools dizisini ve bloktan önceki her mesajı. Her blok aynı zamanda önceki düşünme bloğuna zincirlenir. Transkripti geri gönderdiğinizde, API bu önekin bloğu üretenle bayt-bayt aynı olduğunu doğrular.
Anthropic iki neden sunar. Belirtilen neden anti-damıtmadır: lansman gönderisi, yeni API hesaplarının, önceki düşünme transkriptini korurken çok turlu bir konuşmada Claude'un önceki bağlamını manuel olarak düzenleyemeyeceğini ve bunun belgelenmiş bir damıtma tekniğini kapattığını belirtir. Pratik neden ise, kontrolü bozan aynı düzenlemelerin istem önbelleğini de yeniden başlatmasıdır, bu nedenle kontrolü geçen kod, her turda milyon başına 0,25 dolarlık önbellek okuması alan koddur.
Kimler için geçerli
Varsayılan olarak zorunlu kılınan: 31 Ağustos 2026 tarihinde veya sonrasında oluşturulan hesaplar. Bu, Claude API organizasyonlarını, Amazon Bedrock hesaplarını, Google Cloud projelerini ve Microsoft Foundry kaynaklarını kapsar.
Kaydedilen ancak zorunlu kılınmayan: daha önce oluşturulan hesaplar. API uyumsuzluğu not eder, ancak yalnızca istek thinking.block_binding.prefix_mismatch_behavior değerini "error" dahil herhangi bir değere ayarladığında harekete geçer. Anthropic, gelecekteki modellerin bunu herkes için zorunlu kılacağını belirtiyor.
Etkilenmeyenler: Claude Code, claude.ai, Claude Yönetilen Aracılar ve Claude Aracı SDK'sı, bunlar öneki sizin için sağlam tutar. Claude Mythos 5.1 bu kontrolü hiç çalıştırmaz, ancak geçmiş düzenlemeleri yine de önbelleğini yeniden başlatır.
Etkilenenler: messages dizisini kendi başına oluşturan herhangi bir kod. Bu, her özel aracı döngüsünü, her sohbet arka ucunu ve Mesajlar API'sini sarmalayan her çerçeveyi kapsar.
Araç yazarları için tuzak: İnsanların kendi API anahtarlarıyla çalıştırdığı bir şey gönderiyorsanız, sizin anahtarınız muhtemelen eski bir hesapta, onlarınki ise olmayabilir. Alan ayarlanmış şekilde test edin, böylece kullanıcılarınızdan önce kontrolle karşılaşırsınız. Kendi hesabınızın zorunlu kılınıp kılınmadığını öğrenmek için, beta başlığı olmadan geçmişi düzenleyen bir istek gönderin; başlığı belirten bir 400 hatası bunu gösterir.
Her sonraki düşünme bloğunu geçersiz kılan nedir
- Daha önceki bir turu düzenlemek, yeniden sıralamak veya kaldırmak. Bu, eski araç sonuçlarını silmeyi, transkriptin ortasından turları kesmeyi ve son turları bir özetin arkasında kelimesi kelimesine tutan istemci tarafı sıkıştırmayı içerir.
- Kalıcı olmayan içerik enjekte etmek. Araç sonuçlarından sonra eklenen ve bir sonraki istekte kaldırılan her tura özel bir hatırlatma. Bir durum satırı. Her turda değişen kalan jeton sayısı.
- İstekler arasında
systemveyatoolsöğesini yeniden oluşturmak. Sistem istemindeki geçerli tarihi güncellemek. Oturum ortasında bir araç eklemek veya kaldırmak. - Daha sonra farklı baytlar sunan bir görüntü veya belge URL'si. Baytlar bağlıdır, URL dizesi değil, bu nedenle aynı dosya için dönen imzalı bir URL sorun yaratmaz.
- Bir düşünme bloğunu çalışmanın başlangıcı dışındaki herhangi bir yerden kaldırmak. Başlangıçtaki bloklar en eskiden başlayarak gidebilir. Ortadan bir blok gidemez.
Onları geçerli kılan nedir
- Yalnızca eklemeli geçmişler, eklenmiş
role: "system"mesajları ve yerinde bırakılan temizlenmiş tura özel mesajlar dahil. - En eskiden başlayarak bir dizi düşünme bloğunu kaldırmak.
system,toolsvemessagesdışındaki herhangi bir parametreyi değiştirmek:max_tokens,output_config(effortdahil),tool_choice,metadata.cache_controlişaretçileri eklemek, taşımak veya kaldırmak.- Düşünme bloğu temizliği dahil sunucu tarafı sıkıştırma ve bağlam düzenlemesi. Bunlar düzenleme olarak sayılmaz çünkü kontrol, gönderdiğiniz konuşmayı karşılaştırır, sunucunun düzenlenmiş kopyasını değil. Bir sıkıştırmadan sonra, kontrol edilen önek sıkıştırma bloğundan başlar.
Acil çıkış: drop_block
thinking-binding-controls-2026-08-01 beta başlığını gönderin ve alanı açıkça ayarlayın:
response = client.beta.messages.create(
model="claude-fable-5-1",
max_tokens=16000,
thinking={"type": "adaptive", "block_binding": {"prefix_mismatch_behavior": "drop_block"}},
betas=["thinking-binding-controls-2026-08-01"],
messages=history,
)
for t in response.input_transformations or []:
print(t.type, t.path, t.reason)
"drop_block" ile API, ilk eşleşmeyen bloğu ve ondan sonraki her düşünme bloğunu bırakır, isteğe devam eder ve her bırakmayı üst düzey bir input_transformations dizisinde raporlar:
"input_transformations": [
{"type": "thinking_dropped", "path": "messages.1.content.0", "reason": "prefix_binding_mismatch"}
]
Bu alan hakkında bilinmesi gereken üç şey var. Sadece o isteğe uygulanır, bu yüzden oturumun geri kalanı için göndermeye devam edin. Varsayılanlar yüzeye göre değişir: başlık olmadan, zorunlu kılınan bir hesap hata verir; yalnızca başlığı göndermek, beta'nın kendi varsayılanı olan drop_block'a geçer; bu nedenle açıkça ayarlayın ve hiçbir zaman varsayılanlara güvenmeyin. Ve başlık olmadan block_binding göndermek, block_binding: Ek girdilere izin verilmez ile biten bir 400 hatasıdır.
reason alanı iki durumu ayırt eder. prefix_binding_mismatch geçmişinizin değiştiği anlamına gelir. model_binding_mismatch ise konuşmanın modeller arasında değiştiği (bir yönlendirici, yeniden deneme, reddetme geri dönüşü) ve hedefin bir Fable 5.1 bloğunu okuyamadığı anlamına gelir. İkincisi kodunuzda bir hata değildir. Başlık ile her yanıt, hiçbir şey bırakılmadığında boş olan diziyi taşır.
Bir sıkıştırma sınırında blokları bir kez bırakmak az maliyetlidir. Her istekte kendi geçmişini geçersiz kılan bir donanım, her turda modelin muhakemesini kaybeder ve her turda istem önbelleğini yeniden başlatır; Anthropic bunun görev başına maliyeti artırdığı konusunda uyarıyor. drop_block'ı kalıcı bir durum olarak değil, bir teşhis ve güvenlik ağı olarak değerlendirin.
Beta dışı kurtarma
Kontrolleri olmayan bir platformda (Microsoft Foundry lansman sırasında bunları sunmuyordu; Bedrock ve Google Cloud model başına ekliyordu), geçmişteki her thinking ve redacted_thinking bloğunu çıkarın, her turun text ve tool_use bloklarını saklayın ve bir kez yeniden deneyin. Model, bu blokların taşıdığı muhakeme olmadan o tura yanıt verir. Bu tek seferlik bir kurtarma işlemidir, bir desen değildir.
Üç adımlı denetim
Trafiği değiştirmeden önce çalıştırın, sonra değil.
- Tam istek gövdelerini yakalayın Ürününüzde varsa, bir sıkıştırma veya araç değişikliği dahil olmak üzere donanımınızın birkaç normal tur boyunca gönderdiği istek gövdelerini yakalayın. Ardışık her istek çifti için,
systemistemini,toolsdizisini vemessages'ın paylaşılan önekini karşılaştırın. Yeni eklenen turlara kadar bayt-bayt aynı olmaları gerekir. - Normal bir çok turlu oturum çalıştırın
claude-fable-5-1'e karşı beta başlığı veprefix_mismatch_behavior: "drop_block"ile her yanıttainput_transformations'ı günlüğe kaydedin. Her turda boş bir dizi, geçmişin sağlam olduğu anlamına gelir. Birprefix_binding_mismatchgirişi,pathadresindeki bloğun önündeki bir şeyin değiştiği anlamına gelir. Bu, herhangi bir hesaptan çalışır, çünkü alanı ayarlamak isteği zorunlu kılmaya dahil eder. CI'da bunun yerine"error"ayarlayın, böylece bir düzenleme çalışmayı başarısız kılar. - Bir üretim ayarı seçin ve başlık altında açıkça ayarlayın: Bir uyumsuzluk yalnızca bir hata anlamına geliyorsa
"error", başarısız olmak yerine bozmak için"drop_block". Her iki durumda da 400 hatalarını veyainput_transformationsgirişlerini izleyin. Eski bir hesapta alanı ayarsız bırakmayın, çünkü o zaman kontrol yalnızca sunucu tarafında kaydedilir ve izleyecek hiçbir şeyiniz olmaz.
Apidog'da, 2. adım iki istekli bir testtir: bir tur gönderin, sistem istemini düzenleyin, başlık ayarlanmış olarak sonraki turu gönderin ve input_transformations üzerinde onaylayın. Her donanım değişikliğinde yeniden çalışmasını sağlamak için koleksiyonda tutun. Oluşturmak için Apidog'u indirin.
Bir donanımı yalnızca eklemeli hale getirmek
Her satır, bir geçmiş düzenlemesini, öneki sağlam tutan ve önbelleği sıcak tutan bir şeyle değiştirir.
| Yapmakta Olduğunuz Şey | Bunun Yerine Bunu Yapın |
|---|---|
| Oturum ortasında sistem istemini düzenlemek (yeni tarih, yeni mod) | Oturum başlangıcında system öğesini dondurun. Değişikliğin gerçekleştiği noktada {"role": "system", "content": "Mevcut tarih 2026-09-14."} ifadesini ekleyin (konuşma ortası sistem mesajları). Beta başlığı yok; sistem istemi yetkisi alır ve sonraki blokların bağlı olduğu önekin bir parçası olur. |
Oturum ortasında tools dizisini düzenlemek |
Tüm seti oturum başlangıcında bildirin (başlangıçta gizli olanlar için defer_loading: true). Bir role: "system" mesajında tool_addition ve tool_removal blokları gönderin (beta mid-conversation-tool-changes-2026-07-01). |
| Her tura özel bir hatırlatma eklemek ve bir sonraki istekte silmek | Araç sonuç mesajından sonra, ve daha önceki tüm kopyaları yerinde bırakarak, tura özel bir sistem mesajı olarak gönderin: {"role": "system", "clear_at": "next_user_message", "content": "..."} (beta mid-conversation-system-clear-at-2026-08-21). Temizlenmiş kopyalar hiçbir şey göstermez ve hiçbir maliyeti yoktur. Beta olmadan, hatırlatmayı aynı kullanıcı mesajındaki tool_result bloklarından sonra bir metin bloğuna koyun, önceki kopyalar tutulur. |
| Eski araç sonuçlarını istemci tarafında silmek | Araç sonuçlarını temizleme ile sunucu tarafı bağlam düzenlemesi. |
| İstemcide sıkıştırma yapmak | Sunucu tarafı sıkıştırmayı tercih edin (beta compact-2026-01-12; instructions parametresi kendi özetleme isteminizi alır). İstemci tarafında kalırsanız, basit sıkıştırma kullanın: tüm geçmişi bir özet mesajı ve yeni kullanıcı turu ile değiştirin ve başka hiçbir şeyi yeniden oynatmayın. |
| Turlar arasında URL ile bir resim veya belgeye referans vermek | Dosyalar API'sine bir kez yükleyin ve file_id gönderin veya base64 gönderin. |
İki istemci tarafı sıkıştırma şekli, kontrol altında bozulur ve saklanan turlarda drop_block veya çıkarılmış düşünme bloklarına ihtiyaç duyar. Kuyrukta tutma sıkıştırması (eski turları özetleme, en sonuncuyu kelimesi kelimesine tutma), saklanan turlarda başarısız olur, çünkü düşünceleri tam geçmişe göre üretilmiştir. Arka plan sıkıştırması (kritik yoldan özet oluşturma ve daha sonra değiştirme), özetin başlangıcı ile değiştirme arasında üretilen her turda başarısız olur. Transkriptin ortasından bireysel turları kesmek, sonraki her bloğu geçersiz kılar ve hiçbir istemci tarafı şekli bunu önleyemez. Yaptığınız talimat değişikliği için konuşma ortası sistem mesajı kullanın veya seçici kaldırma için sunucu tarafı bağlam düzenlemesi kullanın.
Bir maliyet hususu daha: önbellek okumaları artık milyon başına 0,25 dolar olduğundan, Fable 5.1'de para biriktirmek için erken sıkıştırma artık doğru bir uzlaşma olmayabilir. Anthropic, daha sonraki sıkıştırma noktalarını denemeyi önermektedir.
Bu neden aynı zamanda önbellek hikayesi
Yukarıdaki tabloda yer alan her şey, aynı zamanda bir istem önbelleğini yeniden başlatan şeylerin listesidir. Fable 5.1, önbellek isabetlerini Fable 5'ten dört kat daha ucuz hale getirdi ve kaçırılanları orantılı olarak daha acı verici hale getirdi, bu nedenle yalnızca eklemeli bir donanım iki kat ödül alır: düşünce korunur ve her turda öneki 12,50 dolara yeniden yazmak yerine 0,25 dolara okur. Fiyatlandırma dökümü sayıları içerir; API rehberi, bağlam içinde tura özel ve mesaj başına çaba istek şekillerini gösterir; istem rehberi, hangi tura özel talimatların bu şekilde gönderilmeye değer olduğunu kapsar ve Claude Code rehberi, Claude Code kullanıcılarının bu hatayı neden asla görmediğini açıklar.
Sıkça Sorulan Sorular
“Blok farklı bir konuşmaya bağlı” ne anlama geliyor? Bir Claude Fable 5.1 düşünme bloğu, ondan önceki bir şeyin (sistem istemi, araçlar dizisi veya daha önceki bir mesaj) değişmesinden sonra yeniden oynatıldı. API, zorunlu kılınan hesaplarda isteği 400 hatasıyla reddeder.
Hangi hesaplar Fable 5.1 geçmiş kontrolünü zorunlu kılar? Her platformda 31 Ağustos 2026 tarihinde veya sonrasında oluşturulan hesaplar. Daha eski hesaplar, yalnızca bir istek thinking.block_binding.prefix_mismatch_behavior değerini ayarladığında bunu zorunlu kılar. Anthropic, gelecekteki modellerde bunu herkes için zorunlu kılmayı planlıyor.
Hatayı hızlıca nasıl gideririm? thinking-binding-controls-2026-08-01 beta başlığını prefix_mismatch_behavior: "drop_block" ile gönderin. API, etkilenen blokları bırakır ve devam eder. Daha sonra geçmiş düzenlemesini düzeltin, çünkü her turda blokları bırakmak muhakeme maliyetini artırır ve önbelleğinizi yeniden başlatır.
Çaba veya max_tokens değiştirmek düşünme bloklarını geçersiz kılar mı? Hayır. system, tools ve messages dışındaki herhangi bir parametre serbestçe değişebilir, cache_control işaretçileri de öyle.
Sunucu tarafı sıkıştırma kontrolü bozar mı? Hayır. Sıkıştırma ve bağlam düzenlemesi, gönderdiğiniz konuşmayı karşılaştıran kontrolden sonra gerçekleşir. Son turları kelimesi kelimesine tutan istemci tarafı sıkıştırma ise bunu bozar.
Claude Mythos 5.1'de de aynı kontrol var mı? Hayır. Mythos 5.1 konuşma kontrolünü çalıştırmaz, ancak yine de düşünme bloklarını üreten modele bağlar ve geçmiş düzenlemeleri önbelleğini yeniden başlatır.
