usage nesnesi taşır. Sunra kullanımı, çağırdığınız endpoint’in semantiğiyle raporlar: bir Messages yanıtı Anthropic sözleşmesini, bir Chat Completions veya Responses yanıtı ise OpenAI sözleşmesini izler.
Bu biçimler kasıtlı olarak farklıdır. Bir Chat Completions yanıtını okuyan bir OpenAI SDK’sı OpenAI semantiğini varsayar, bir Messages yanıtını okuyan bir Anthropic SDK’sı ise Anthropic semantiğini varsayar. Her endpoint, tek bir ortak biçime zorlanmak yerine kendi spesifikasyonunun vaat ettiğine sadık kalır.
Messages
/v1/messages üzerinde, üç girdi kovası birbirini dışlar. Hiçbir token iki kez sayılmaz, dolayısıyla prompt toplamı bunların toplamıdır:
integer
Yalnızca taze girdi tokenleri. Her iki önbellek kovasını da hariç tutar.
integer
Bu istek tarafından önbelleğe yazılan tokenler.
integer
Bu isteğe önbellekten sunulan tokenler.
integer
Model tarafından üretilen tokenler.
integer
Üç girdi kovası artı
output_tokens. Streaming olmayan yanıtlarda bulunur.null olan bir kova sıfır sayılır.
Örnek senaryo
Aynı 19.000 tokenlik ön ek,claude-opus-4-8 modeline iki kez gönderilir. İlk istek önbelleği yazar; ikincisi onu okur.
Soğuk istek (önbellek yazma)
Sıcak istek (önbellek okuma)
input_tokens her iki istekte de 8’de kalır, çünkü her seferinde gerçekten yeni olan girdi 8’dir. 19.349 tokenlik ön ek, oluşturma kovasından okuma kovasına geçer. Her iki isteğin toplamı da aynı 19.359 tokendir, ancak maliyetleri aynı değildir: önbellek yazmaları ve önbellek okumaları kendi token başına fiyatlarıyla ücretlendirilir; bu yüzden ayrı kovalar olarak raporlanırlar.
Chat Completions ve Responses
Bu endpoint’ler OpenAI semantiğini değiştirmeden raporlar. Prompt sayımı prompt’un tamamıdır ve önbelleğe alınmış tokenler bunun ayrıca raporlanan bir alt kümesidir./v1/chat/completions
prompt_tokens ile cached_tokens değerlerini toplamak çift sayıma yol açar. Bu endpoint’lerde taze girdiyi elde etmek için çıkarma yapın:
input_tokens ve input_tokens_details.cached_tokens ile /v1/responses için de geçerlidir.
sunra_usage_semantics işaretçisi
Sunra’nın normalleştirdiği yanıtlar, usage içinde bir işaretçi taşır:
usage nesnesinde görünür; streaming bir yanıtta ise girdi kovalarını taşıyan olay olan message_start içinde görünür. Bu değerle birlikte mevcut olduğunda, bu sayfadaki garantiler geçerlidir: üç girdi kovası birbirini dışlar ve total_tokens — bulunduğu yerde — bunların toplamı artı output_tokens’tır.
Yokluğu da bir taahhüttür. Sunra yalnızca ölçtüğü yanıt biçimlerini normalleştirir. Bunun dışındaki her şey upstream sağlayıcıdan olduğu gibi iletilir ve işaretlenmeden bırakılır; işaretçi taşımayan bir yanıt, kovalarına Sunra’nın kefil olmadığı bir yanıttır.
Bir yanıtın hangi yaklaşımı izlediğini tahmin etmek için sayıları incelemek yerine işaretçiyi doğrulayın. Bu alan tam da biçim koklamanın yerini almak için vardır — “kovalar prompt sayımından daha fazlasını topladığına göre birbirini dışlıyor olmalı” gibi bir sezgisel yöntem birden fazla yaklaşım tarafından karşılanır ve eninde sonunda bir yanıtı yanlış okur.
/v1/messages yanıtları taşır. Chat Completions ve Responses, OpenAI spesifikasyonunu izler ve işaretlenmez.
Değer sürümlenmiştir. Bu alanların anlamındaki kırıcı bir değişiklik yeni bir değerle yayınlanır; böylece anthropic.exclusive.v1 ile yapılan bir eşitlik kontrolü sessizce farklı bir sözleşmeyi okumaya başlamaz.
Streaming
Streaming ile yapılan bir Messages isteğinde kullanım bilgisi iki olaya yayılır.message_start girdi tarafını ve işaretçiyi taşır. Sonlandırıcı message_delta yalnızca output_tokens taşır. İşaretçiyi message_start içinde doğrulayın, ardından iki olayı olağan şekilde birleştirin — sonraki olayın kullanım bilgisini öncekinin üzerine uygulayın — böylece yukarıda belgelenen değerlere ulaşırsınız.
total_tokens, streaming yanıtlarda yer almaz. Hiçbir olay hem girdi hem de çıktı tarafını bilmez, dolayısıyla akış sırasında hesaplanan herhangi bir toplam yanlış olur. Akış tamamlandığında kovaları kendiniz toplayın.
Önceki davranıştan geçiş
Sunra daha önce/v1/messages üzerinde upstream usage nesnesini olduğu gibi iletiyordu. Bazı sağlayıcıların önündeki çeviri katmanı, önbellek oluşturma tokenlerini input_tokens içine katlar; bu nedenle Anthropic sözleşmesini izleyip üç kovayı toplayan bir çağıran, önbellek oluşturma tokenlerini iki kez saymış olur.
- Üç kovayı topluyorsanız, Anthropic sözleşmesinin tarif ettiği gibi, artık doğrusunuz. Sizin tarafınızda bir değişiklik gerekmez.
- Eski davranışı telafi ediyorduysanız —
cache_creation_input_tokensdeğeriniinput_tokensiçinden kendiniz çıkararak veya katlamayı başka bir şekilde tersine mühendislikle çözerek — durun. Bu düzeltme artık zaten hariç tutulmuş tokenleri çıkarır ve girdinizi olduğundan az gösterir. total_tokensdeğerini okuyorsanız, tam sayımı raporlamaya devam eder: taze girdi, her iki önbellek kovası ve çıktı.