Ana içeriğe atla

Claude Sonnet 5.5 API Eğitimi: Mutabakat Aracısı Oluşturun

Claude Sonnet 5.5 API'yi Python'da nasıl kullanacağınızı öğrenin. Sohbet ortasında yazma erişimi kazanan bir mutabakat aracısı oluşturun ve daha yüksek çabanın sonucu değiştirip değiştirmediğini test edin.
Güncel 5 Eki 2026  · 15 dk. oku

Yapay Zeka ile Keşfedin

ChatGPTClaudePerplexity

Her ay, bir finans ekibi kayıtlarının bankaya gerçekten ulaşan parayla eşleştiğini doğrulamak zorundadır. İadeler ve ödeme kuruluşunun kestiği ücretler düşüldükten sonra satışların, yatırılan tutarlarla eşit olması gerekir. Bu kontrole mutabakat denir ve sayılar uyuşmadığında, birinin nedenini bulmak için kayıtları didik didik etmesi gerekir.

Bu eğitimde, bu işi Claude Sonnet 5.5'e devredip Python'da bunun etrafında bir yapay zekâ aracısı oluşturacağız. Burada bir aracı, Claude'un araçları (örneğin iadeleri arayan bir işlev) çağırabildiği ve sonuçları bir sonraki adımda neyi kontrol edeceğine karar vermek için kullandığı bir programdır. Test vakası, Eylül ayı sayıları tutmayan kurgusal bir abonelik şirketi olan Rivermark.

Zor olan kısım güven. Claude her kaydı görebilmeli, ancak açıklaması sağlamlaşmadan kayıtları değiştirmemelidir. Bu yüzden Claude yalnızca okuma yapabilen araçlarla başlar. Bir düzeltme önerdiğinde, Python önce kanıtları kontrol eder. Ancak o zaman Claude, orijinal veriler dokunulmadan kalırken yalnızca o tek düzeltmeyi ayrı bir listeye kaydeden bir aracı kullanabilir. Son bir Python denetimi, sonucu Claude'un araçlarının dışında tutulan banka kayıtlarıyla karşılaştırır.

Beni ilgilendiren, bu kurulumun makul görünen bir hatayı yakalayabilip yakalayamayacağıydı. Şunları ele alacağız:

  • Python'da ilk Claude Sonnet 5.5 API çağrısını yapmak
  • Kayıtları okuyabilen ancak değiştiremeyen araçlar vermek
  • Claude bir şey yazmadan önce önerdiği düzeltmeyi Python'da kontrol etmek
  • sohbet ortasında sistem mesajı ile konuşmanın yarısında Claude'a yeni bir araç vermek
  • Sonraki adımlarda Claude'un çabasını değiştirmek
  • Son sayıları Python'da kontrol edip her API çağrısının maliyetini hesaplamak

Özet

Orta çabada, Claude Sonnet 5.5, yanlış aya yazılmış 149,00 $'lık bir iade buldu ancak ödeme kuruluşunun kestiği ayrı bir 15,00 $ ücreti gözden kaçırdı. Python'un son kontrolü toplamların hâlâ tutmadığını gösterince Claude aynı konuşmada devam etti, ücreti buldu ve düzeltti.

  • Claude kaçırdığı ücreti aslında görmüştü. İtirazlı bir ödemeye ait her iki kaydı da açtı ancak 15,00 $ ücretin zaten sayıldığını düşündü.

  • Claude'un ne zaman yazabileceğine Python karar verdi. Düzeltmeleri kaydeden araç, Claude'un teklifi Python kontrollerinden geçene kadar gizli kaldı; bu kontroller 4 tekliften 2'sini reddetti.

  • Araçları ve çabayı değiştirmek konuşmayı sıfırlamadı. Öncekiler yeniden yazılmadığı için 118.308 girdi belirtecinin %89,3'ü daha düşük tarifeli istem önbelleğinden geldi.

  • Eşleşen tekrarda daha yüksek çaba gerekli değildi. Aynı hata noktasından başlayan ayrı bir tekrar medium seviyesinde kaldı ve Python'dan gelen aynı mesaj sonrası ücreti yine buldu.

  • Ana mutabakat medium'dan high'a yükseltildi. 15 API çağrısı sürdü ve maliyeti 0,1190 $ oldu. Eşleşen tekrar ayrı tutulur.

Bu rakamlar tek bir kurgusal veri kümesini anlatır. Bunları kıyaslama değil, kendi uygulamanızda test edeceğiniz davranışlar olarak değerlendirin.

Claude Sonnet 5.5 Nedir?

Claude Sonnet 5.5, Anthropic'in Claude 5.5 ailesinin bir parçasıdır. Bu projeye başladığımda yeni yayınlanmıştı ve API model kimliği claude-sonnet-5-5. Tarama model genel bakış'ına göre 1M belirteçlik bağlam penceresi, 128K'ya kadar çıktı belirteci, varsayılan olarak uyarlamalı düşünme ve API'de varsayılan high çabası vardır. Standart fiyatlandırma milyon başına 2 $ girdi belirteci ve milyon başına 10 $ çıktı belirtecidir.

Claude Sonnet 5.5 genel bakışımız kıyaslamalar, fiyat karşılaştırmaları ve erişimi kapsar. API'nin üç özelliği bu sürümde yeni ve Rivermark bunların hepsini kullanıyor.

Claude Sonnet 5.5 API'sinde neler yeni?

Claude Sonnet 5.5, bir konuşma devam ederken onu değiştirmek için üç yol ekler. Claude Sonnet 5.5'te neler yeni'ye göre bunların hiçbiri Claude Sonnet 5'te yok:

  • Mesaj başına çaba: Claude'un sonraki turlarda ne kadar muhakeme edeceğini değiştirin.
  • Sohbet ortasında sistem mesajları: Yolun ortasında sistem talimatları ekleyin.
  • Sohbet ortasında araç değişiklikleri: Tanımlı araçları yolun ortasında gösterin veya gizleyin.

Claude Sonnet 5.5 API ile Ne İnşa Edeceğiz?

Rivermark aracısı, iki izin düzeyine sahip tek bir Messages API konuşması etrafında inşa edilmiş bir Python uygulamasıdır. İnceleme sırasında Claude siparişleri, iadeleri, işlemci işlemlerini, kapanış politikasını ve Rivermark'ın mutabakat kontrolünü okuyabilir. Onaydan sonra yalnızca onaylı düzeltmeleri kaydedebilir.

Rivermark, onay kapısı Claude'un araç çağrıları ile bunların yürütülmesi arasına oturmak zorunda olduğu için Claude Agent SDK yerine özel bir Messages API döngüsü kullanır.

Tüm kod ve örnek veriler Rivermark GitHub deposunda.

Bir tarafta Claude Sonnet 5.5 ve okuma ile ertelenmiş araçları, uygulama tarafında plan kontrolü, düzeltme yazıcı ve son kontrol bulunan güven sınırı diyagramı

Öneren Claude, yazma iznini veren Python. Görsel: Yazar.

Rivermark mutabakat sorunu nedir?

Rivermark'ın kontrolü beklenen ödeme olarak 3.400,14 $ ve hesaplanan işlemci toplamı olarak 3.251,14 $ bildiriyor; arada 149,00 $ fark var. Claude, gizli nedenlerin hiçbirini görmeden kayıtlar arasındaki farkı açıklamak zorunda.

Rivermark üç aylık plan satar: Starter 29 $, Team 79 $ ve Business 149 $. Örnek, 58 Eylül siparişi, 7 iade kaydı ve 65 Eylül işlemci işlemi içerir. Her işlemci kaydında bir tutar, bir ücret ve net değer vardır.

Python başarılı bir mutabakayı nasıl tanımlar?

Mutabakatın tamamlanıp tamamlanmadığına Claude değil, Python karar verir:

  • Ay, işlemci mutabakat tarihine göre Eylül 2026'dır.

  • Eylül banka yatırımlarının toplamı, deneyin bağımsız mutabakat hedefidir.

  • Dengeli demek, beklenen ödeme artı düzeltmelerin kuruşu kuruşuna bu yatırımlara eşit olmasıdır.

  • Her düzeltme, Claude'un getirdiği işlemci txn_ids'lerini referans verir ve tutarı bunların netine eşittir.

  • Claude yalnızca onaylanmış düzeltmeleri ekleyebilir ve son raporu gönderebilir.

  • Ham dışa aktarmalar işleme başlamadan önce karma alınır ve sonrasında eşleşmelidir.

Claude, ilk incelemesi sırasında banka kayıtlarını veya hedef toplamı göremez. Başarısız bir kontrolden sonra Python, banka kayıtlarının kendisini değil, yalnızca beklenen ödemeyi, toplam yatırım tutarını ve kalan farkı açıklar.

Claude Sonnet 5.5 API'sini Python'da Nasıl Kurarsınız

Python 3.10 veya daha yenisine ihtiyacınız var; Python SDK bunu gerektirir, bir Anthropic API anahtarı ve anthropic 1.9.0. Bu PowerShell komutları projeyi klonlar, ortamı oluşturur ve örnek verileri derler:

git clone https://github.com/KhalidAbdelaty/sonnet-5-5.git
cd sonnet-5-5
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
Copy-Item .env.example .env
python build_data.py

macOS veya Linux'ta source .venv/bin/activate ve cp .env.example .env kullanın, ardından anahtarınızı .env dosyasına koyun. Ortam değişkenleri rehberimiz deseni açıklar.

streamlit run app_streamlit.py, mutabakatın her adımını gerçekleşirken gösteren bir web arayüzü açar ve Streamlit eğitimimiz kurulumu kapsar.

API anahtarınız zaten çalışıyorsa, sonraki isteği atlayıp uyarlamalı düşünmeye geçin.

İlk Claude Sonnet 5.5 API çağrınızı nasıl yaparsınız

API istek ve yanıt nesneleri size yeni ise, Python API rehberimiz temelleri kapsar. Anahtarı doğrulamak ve dönen içerik bloklarını incelemek için tek bir iade sorusu yeterlidir:

import anthropic
from dotenv import load_dotenv

load_dotenv()
client = anthropic.Anthropic()  # reads ANTHROPIC_API_KEY

response = client.messages.create(
    model="claude-sonnet-5-5",
    max_tokens=4096,
    messages=[{"role": "user", "content": "A refund was requested on August 31 and settled on "
                                          "September 2. Which month's payout should it reduce, and why?"}],
)
print([block.type for block in response.content])
print("".join(block.text for block in response.content if block.type == "text"))
print(response.usage)

Benim çalıştırmamda yanıt bir thinking bloğuyla başladı. response.content[0] okumak yerine blokları type ile seçin; düşünme belirteçleri çıktı olarak faturalandırılır.

PowerShell terminali, düşünme ve metin içerik bloklarını, ardından Claude Sonnet 5.5 belirteç kullanımını gösteriyor

İlk yanıt, düşünmeyi metinden ayırır. Görsel: Yazar.

Uyarlamalı düşünme ve çabayı nasıl yapılandırırsınız

Her istek aynı üst düzey ayarları gönderir ve yalnızca messages büyür:

response = client.beta.messages.create(
    model=MODEL, max_tokens=MAX_TOKENS, system=SYSTEM_PROMPT, tools=TOOLS,
    cache_control={"type": "ephemeral"},               # automatic caching, breakpoint moves forward
    thinking={"type": "adaptive", "display": "updates"},
    output_config={"effort": START_EFFORT},             # never changes: per-message changes do that
    messages=messages, betas=BETAS,
)

API'nin high varsayılanına rağmen bu iş akışı medium ile başlar. Anthropic'in çaba rehberi şöyle der: "Aracısal kodlama ve çok adımlı araç kullanımı için, iyi tanımlı görevlerde medium ile başlayın, daha zor veya daha uzun olanlarda high'a geçin."

Düşünme uyarlamalı kalır çünkü sonraki aşamada çabadaki değişim buna bağlıdır. display: "updates" (beta, thinking-display-updates-2026-08-18) Claude'un araç çağrıları arasında yazdığı notları döndürür. Bu ayar olmadan düşünme blokları boştur.

Üst düzey cache_control otomatik istem önbelleğini açar ve konuşma büyüdükçe ileriye giden bir kırılma noktası kullanır. İlk istek, Claude Sonnet 5.5'in 512 belirteçlik alt sınırının epey üzerinde, 2.080 belirteci önbelleğe yazdı.

Yalnızca Okunur Bir Mutabakat Aracısı Nasıl Kurulur

Yalnızca okunur bir inceleme aracısı, Claude'un kanıt talep etmesine izin verir ancak yazma aracı sunmaz. Rivermark ayrıca onaylanmamış yazma çağrılarını Python'da reddeder.

Claude hangi yalnızca okunur araçları kullanır?

Claude'a beş okuma aracı ve bir teklif aracı verilir; hepsi strict: true ile. Açıklamalar, her aracın ne döndürdüğünü söyler ve nereye bakılacağına dair hiçbir şey söylemez:

  • list_sources, kaynakları, sütunları ve satır sayılarını döndürür.

  • query_records, isteğe bağlı filtre ve tarih aralığıyla tek bir kaynaktan en fazla 40 satır döndürür.

  • aggregate_records, satırları sayar ve amount_cents toplamını herhangi bir sütuna göre döndürür.

  • read_policy, kapanış politikasını döndürür.

  • run_reconciliation_check, hatalarıyla birlikte Rivermark'ın mevcut dahili mantığını çalıştırır.

  • submit_plan, bir teşhis ve önerilen düzeltmeleri doğrulama için Python'a gönderir; hiçbir şey yazmaz.

Aynı tools dizisinde iki araç daha bulunur, ancak defer_loading: true şimdilik onları Claude'un görüşünden gizler. Nasıl görüneceklerine sonra geleceğiz:

{"name": "run_reconciliation_check", "strict": True,
 "description": "Run Rivermark's current internal reconciliation logic for September 2026, "
                "including adjustments recorded so far.",
 "input_schema": _schema({}, [])},
{"name": "create_adjustment", "strict": True, "defer_loading": True,
 "description": "Record one approved adjustment in the close adjustments ledger. Never edits source files.",
 "input_schema": _schema({...}, ["evidence_txn_ids", "rule", "amount_cents", "memo"])},

Yazma aracının şeması ilk istekte bilinir, bu nedenle araç baştan bildirilir. Adlandırılmış veya any araç seçimi 400 hatası döndürür, bu yüzden yönlendirme submit_plan'in ne zaman geçerli olduğunu belirtir.

Claude'un araç kullanımı döngüsü nasıl çalışır?

Aracı bağlama mühendisliği rehberimiz, Python'un daha uzun aracı döngülerini nasıl yönetebileceğini açıklar. Rivermark'ın döngüsü konuşmayı gönderir, Python'da tool_use bloklarını çalıştırır ve sonuçları ekler. Okuma aracının döndürdüğü her kayıt kimliği, daha sonra plan kapısının kontrol ettiği bir observed kümesine girer:

messages.append({"role": "assistant", "content": response.content})  # thinking blocks go back unchanged
if response.stop_reason == "tool_use":
    results = []
    for block in response.content:
        if block.type != "tool_use":
            continue
        if block.name in READ_TOOLS:
            out = reads.run(block.name, block.input)  # adds returned IDs to gate.observed
            results.append({"type": "tool_result", "tool_use_id": block.id, "content": dumps(out)})
        ...  # submit_plan goes to the gate; create_adjustment to the executor
    messages.append({"role": "user", "content": results})

Asistanın turu, boş düşünme blokları dahil, alındığı gibi geri gönderilir. Geçiş rehberi, Claude Sonnet 5.5'in düşünme bloklarını önceki mesajlara bağladığını, bu nedenle o geçmişi düzenlemenin 400 hatası döndürebileceğini açıklar.

Orta çabada Claude ne buldu?

Orta seviyede inceleme altı API çağrısı ve dokuz okuma aracı çağrısı sürdü. Claude iadeleri çekti ve işlemci satırlarını reporting_category'ye göre grupladı. 31 Ağustos siparişi için 2 Eylül'de sonuçlanan 149,00 $'lık RF-1043 iadesini buldu. Politika kuralı POL-3, bunu Eylül'e yazar.

Sonra her iki ihtilaf satırını da açtı. TXN-50036, -149,00 $ ana para, 15,00 $ ücret ve -164,00 $ net nakit etkisi içerir. TXN-50052, ücret olmadan 149,00 $ ana parayı geri döndürür. Claude şunu yazdı: "DSP-0077 neti sıfırdır ve 15 $ ücreti zaten doğru şekilde kaydedilmiştir, bu nedenle RF-1043 farkı tamamen açıklar." 

Claude, iade edilen ana parayı ücretlerden sonraki nakit etkisiyle karıştırmıştı:

  • Ana para gerçekten sıfırlanır: -149,00 $ + 149,00 $ = 0,00 $. 
  • İşlem netleri sıfırlanmaz: -164,00 $ + 149,00 $ = -15,00 $. 

Kapı, Claude'un ilk planını, ORD-20813 siparişini getirmeden atıf yaptığı için reddetti. Claude siparişi getirdi, yeniden sundu ve PLAN-1 bir düzeltmeyle geçti.

Yazma Erişimini Onaylı Bir Mutabakat Planının Arkasına Alın

Yazma aracını göstermeden önce, kapı kanıtın nereden geldiğini ve planın neyi değiştireceğini kontrol eder.

Plan kapısı kanıtı nasıl kontrol eder?

Bir plandaki her düzeltme, işlemci txn_id'leri referans verir. Kapı, yalnızca atıf yapılan her satır bu konuşmada bir okuma aracından geri gelmişse ve satırların neti önerilen tutara eşitse kabul eder:

def evidence_problems(self, item: dict) -> list[str]:
    """Provenance: every cited line was retrieved, and the lines net to the adjustment."""
    ids = item["evidence_txn_ids"]
    problems = [f"{t} was never returned by a read tool in this conversation."
                for t in ids if t not in self.observed]
    unknown = [t for t in ids if t not in self.lines]
    if unknown or not ids:
        problems.append(f"Evidence must be processor txn_ids; not found: {', '.join(unknown) or 'none given'}.")
    elif sum(self.lines[t]["net_cents"] for t in ids) != item["amount_cents"]:
        problems.append(f"amount_cents {item['amount_cents']} is not the net_cents total of {', '.join(ids)}.")
    return problems

Yalnızca ihtilaf borcunu referans veren 15,00 $'lık bir düzeltme başarısız olur çünkü o satırın neti -164,00 $'dır. Plan ters kaydı da referans vermelidir.

Plan kapısı bir düzeltmeyi ne zaman reddeder?

Kapı ayrıca politika kurallarını ve mükerrer işlemleri kontrol eder. Aşağıdakilerden herhangi birini yapan bir öğe varsa plan reddedilir ve yazma erişimi kilitli kalır:

  • Claude'un hiç getirmediği destekleyici bir siparişi veya iadeyi referans vermek
  • POL-2, POL-3 veya POL-4 dışında bir politika kuralı kullanmak
  • Başka bir düzeltmenin zaten kapsadığı işlemleri kapsamak

Reddedilmeler submit_plan araç sonucu olarak döner, böylece Claude daha fazla araştırıp yeniden sunabilir. Kapı 4 sunumdan 2'sini reddetti ve Claude her birini bir sonraki çağrısında düzeltti. Onaydan sonra bile create_adjustment yalnızca onaylı öğeyle birebir eşleşen kayıtları kabul eder.

Sohbet ortasında yazma aracını ekleyin

Kapı bir planı onayladığında, Python role: "system" içeren ve bir tool_addition bloğu bulunan bir mesaj ekler. Değişiklik inline-tools-2026-09-15 beta başlığını gerektirir. tools dizisi ve önceki her mesaj değişmeden kalır, böylece önbellekteki önek hâlâ eşleşir. Talimat metni Claude'dan değil, Python'dan gelir:

text = UNLOCK_TEXT.format(plan_id=approved_plan)
append_system([{"type": "text", "text": text},
               {"type": "tool_addition", "tool": {"type": "tool_reference",
                                                  "name": "create_adjustment"}}])
gate.write_unlocked = True

İçerikli bir sistem mesajı bir user turunu takip etmelidir; tool_result blokları içeren bir tur da buna dahildir. Bir tool_use bloğu ile sonucu arasına konamaz. Sistem mesajlarının önceliği daha yüksektir, bu nedenle hiçbir zaman Claude'un plan metnini, araç çıktısını veya verisini bir sistem mesajına yerleştirmeyin. tool_addition bloğu create_adjustment'ı referansla adlandırır ve araç yalnızca plan geçtikten sonra görünür olur.

Araç değişikliğinden sonra da önbellekleme devam etti. İstek 231 önbelleksiz girdi belirtecini işledi ve önbellekten 6.883 okudu.

İlk Mutabakat Düzeltmesi Neden Eksikti?

İlk düzeltme doğruydu ama işi tamamlamadı. Claude ADJ-001'i, POL-3 kapsamında -149,00 $ olarak kaydetti ve bittiğini bildirdi. Rivermark'ın dahili kontrolü de aynı fikirde olur, 0,00 $ fark gösterirdi. Kulağa bitmiş gibi geliyor ama değil.

Bağımsız Python kontrolü bunun yerine banka yatırımlarına karşı karşılaştırır. Düzeltmelerden sonra beklenen ödeme 3.251,14 $ idi, yatırımlar 3.236,14 $ idi ve 15,00 $ kaldı.

Bu açık, tamamlanma kontrolünün Claude'un son mesajında değil, Python'da olmasının nedenidir.

Ana mutabakat yolunun çabayı medium'dan high'a yükselttiğini ve ayrı bir eşleşen tekrarın medium'da kaldığını gösteren ardışıklık diyagramı

Eşleşen tekrar, başarısız doğrulamadan dallanır. Görsel: Yazar.

Doğrulama Başarısız Olduktan Sonra Çabayı Artırın

Claude Sonnet 5.5'te sohbet ortasında çabayı değiştirmek, boş content ve yeni bir output_config.effort içeren bir sistem mesajı eklemek anlamına gelir. Yeni seviye bir sonraki user turundan itibaren geçerlidir ve ondan önceki her şey önbellekte kalır.

Konuşmayı yeniden başlatmadan çaba nasıl değiştirilir

Mesaj başına çaba betadadır ve mid-conversation-output-config-2026-07-01 başlığını gerektirir. Ayrıca uyarlamalı düşünme gerekir: between_tools ile aynı değişiklik 400 hatası döndürür. Bağımsız kontrol başarısız olduğunda Python, bir sonraki kullanıcı mesajından önce yeni çaba ayarını ekler:

if escalate:
    append_system([], output_config={"effort": ESCALATED_EFFORT})  # effort-only: accepted anywhere
messages.append({"role": "user", "content": (
    f"The harness's independent check failed. Expected payout after adjustments: "
    f"{_cents(result['expected_after_adjustments_cents'])}. Processor deposits for September (bank "
    f"record): {_cents(result['processor_deposits_cents'])}. Residual: {_cents(result['residual_cents'])}. "
    f"Recorded adjustments ({ids}) stay in the ledger. Investigate what the residual is, using the same "
    f"tools, and submit an amended plan that contains only new adjustments.")})

Üst düzey bir çaba değişikliği, önbelleğe alınan istem önekini değiştirdiği için önbelleği baştan başlatır. Mesaj başına biçim bunu yapmadı: İlk yüksek çaba isteği önbellekten 8.012 belirteç okudu ve 4 önbelleksizi işledi.

15,00 $'lık fark Claude'a bir hedef verir, ancak bir düzeltme için kanıt vermez. Kapı hâlâ Claude'un getirdiği işlem kimliklerini ister ve bunların net_cents toplamı -15,00 $ olmalıdır. Yalnızca TXN-50036'yı referans veren önerilen -15,00 $ düzeltme yine başarısız olur çünkü o satırın neti -164,00 $'dır.

Yüksek çabada Claude ne buldu?

Yüksek seviyede Claude, işlemci satırlarını ödemeye ve fee_cents'e göre grupladı, sonra dahili kontrolü yeniden çalıştırdı. Bir sonraki notunda ücret satırlarını 12.586 sente topladı. İhtilaf ücreti bu toplamı 14.086 sente yükseltti. Rivermark'ın kontrolü bunu dışarıda bırakmıştı.

İlk değiştirilmiş plan bu kurala takıldı çünkü yalnızca borç satırını referans veriyordu. Sonraki plan her iki ihtilaf satırını da referans verdi, PLAN-2 geçti ve ADJ-002, POL-4 kapsamında -15,00 $ olarak kaydedildi.

Eşleşen tekrar yüksek çabaya ihtiyaç duydu mu?

Bu deney, high'ın gerekli olduğunu göstermiyor. Aynı hata noktasından, aynı konuşma geçmişi ve Python mesajıyla devam eden ayrı bir tekrar medium seviyesinde kaldı; ücreti o da buldu.

Ana çalışmanın altı high çaba çağrısı 2.763 çıktı belirteci (607 düşünme) üretti ve 0,0484 $ tuttu. Ayrı kontrolün altı medium çaba inceleme çağrısı 2.713 çıktı belirteci (628 düşünme) üretti ve 0,0464 $ tuttu; aynı kapı reddini içerir.

Bir son rapor çağrısı, kontrolü 7 çağrıya ve toplam 0,0615 $'a getirdi. Bu çağrıların ve maliyetlerin hiçbiri ana çalışmanın 15 çağrısı ve 0,1190 $'ına dahil değildir.

Her iki yol da aynı başarısız kontrol mesajını aldı; yalnızca çabaları farklıydı. Tek bir tekrar, çaba etkisinin büyüklüğünü ölçemez, ancak bu örnek için high'ın gerekli olmadığını gösterir. Aynı çaba rehberi, xhigh ve max seviyelerini "değerlendirmeleriniz kalite artışı gösterdiğinde" durumlarına ayırır. high seçmeden önce aynı şekilde test edin.

Son Mutabakayı Python'da Nasıl Doğrularsınız

Son doğrulama, özellikle iki kapı kontrolünü tekrarlar: kanıt ve yazma kapsamı. Kapı, yazmadan önce bir teklifi inceler; son doğrulama, Python'un fiilen ne yazdığını inceler, ardından sayı ve ham dosya kontrollerini ekler. 

ADJ-002'den sonra Python, her şeyi ham kayıtlardan, onaylı düzeltmelerden ve banka toplamından yeniden hesapladı:

checks = {
    "numbers": adjusted == deposits,
    "provenance": not provenance,
    "raw_unchanged": hash_dir(self.raw) == self.hashes_before,
    "write_scope": set(created) <= ALLOWED_OUTPUTS,
}

Dördü de geçti. Düzeltmelerden sonra beklenen ödeme 3.236,14 $ oldu ve yatırımlarla eşleşti. Her iki düzeltme de getirilen satırlara izleniyordu, ham kaynak veriler değişmeden kaldı ve Python yalnızca onaylanan girdileri yazdı.

Rapor adımı ancak o zaman başlar. Uygulama, çabayı tekrar medium seviyesine alan bir mesaj, kısa bir kullanıcı turu ve araçları değiştiren bir sistem mesajı ekler:

append_system([{"type": "text", "text": REPORT_TEXT},
               {"type": "tool_removal", "tool": {"type": "tool_reference", "name": "create_adjustment"}},
               {"type": "tool_addition", "tool": {"type": "tool_reference", "name": "submit_report"}}])

Rapor, kanıt değil, son çıktıdır. Sonrasındaki öneriler hâlâ insan incelemesi gerektirir. Aşağıdaki kayıt, bir Streamlit oturumu boyunca izinler, çaba, kontroller ve maliyeti izler.

Streamlit mutabakayı baştan itibaren izler. Video: Yazar.

Claude Sonnet 5.5 Aracısının Maliyeti Ne Kadar Oldu?

Ana mutabakat medium seviyesinden high seviyesine yükseltildi, 15 API çağrısı boyunca 0,1190 $ tuttu ve 70,0 saniye sürdü; bunun 69,0 saniyesi API bekleme süresiydi. Ayrı eşleşen tekrar dahil değildir. Her rakam, yanıt usage ve Claude Sonnet 5.5 tarifelerinden gelir.

Daha geniş bir maliyet dökümü için, Claude API rehberimiz istem önbellekleme ve toplu işlemeyi kapsar.

Claude Sonnet 5.5 önbellek maliyetlerini nasıl hesaplarsınız?

input_tokens yalnızca önbellek kırılma noktasından sonra gelenleri sayar, bu nedenle toplam girdi, daha önce bağlantısı verilen istem önbellekleme belgelerinde açıklandığı gibi üç alanın toplamıdır. Önbellek yazma ve okumalarının kendi tarifeleri vardır ve düşünme belirteçleri zaten output_tokens içinde yer alır:

cost = (
    usage.input_tokens * 2.00                   # uncached input only
    + cache_creation.ephemeral_5m_input_tokens * 2.50
    + cache_creation.ephemeral_1h_input_tokens * 4.00
    + usage.cache_read_input_tokens * 0.20
    + usage.output_tokens * 10.00               # includes thinking
) / 1_000_000

Mutabakat boyunca Claude, 118.308 girdi belirtecinin 105.614'ünü önbellekten okudu (yaklaşık %89) ve yalnızca 636'sı önbelleksiz girdi olarak faturalandırıldı. Grafik, dört belirteç tarifesini ölçülen kullanıma uygular.

Rivermark API maliyetinin önbelleksiz girdi, önbellek okumaları, önbellek yazmaları ve çıktı belirteçleri arasında bölünmesini gösteren dikey çubuk grafik

Ölçülen maliyette çıktılar baskındır. Görsel: Yazar.

API Sınırlamaları ve Üretim Hususları

Rivermark yerel düzeltme kayıtları yazar, bu nedenle üretim bir finans sistemi yine de şunlara ihtiyaç duyar:

  • Yerel, kurgusal veri. Gerçek bir kapanış, kimlik doğrulama, denetim günlükleri, kayıtların insan onayı ve veri saklama incelemesi gerektirir.

  • Beta özellikler. Mesaj başına çaba, araç değişiklikleri ve düşünme güncellemeleri için başlıklar değişebilir, bu yüzden dağıtımdan önce yeniden test edin.

  • Değişken sonuçlar. Claude Sonnet 5.5, varsayılan olmayan sıcaklığı reddeder, bu nedenle tekrarlar farklı sonuçlar verebilir. Deseni güvenmeden önce kendi verilerinizde test edin.

Son Düşünceler

Yalnızca okuma araçlarıyla inceleme yapan, planı Python tarafından onaylandıktan sonra yalnızca bir yazma aracı alan ve ancak bağımsız banka yatırımı kontrolü geçince biten bir mutabakat aracısı oluşturduk. Claude Sonnet 5.5 yanlış yere yazılmış iade kaydını kendi başına buldu, ancak daha önce okuduğu 15,00 $'lık ücrete geri dönmesini sağlayan başarısız kontroldü.

Tek bir kurgusal ayı her kapanışa genellemezdim. Aktarılan yöntemdir: yazma aracını bir plan geçene kadar gizleyin, banka kayıtlarını modelin dışında tutun, her düzeltme için işlem kanıtı isteyin ve önbellek yaşasın diye araç veya çaba değişikliklerini eklemeli yapın. 

Bağımsız kontrol, bu projenin daha küçük bir sürümünde bile tutacağım kısımdır. Çaba değişikliği ise güvenmeden önce test edeceğim kısımdır; bunun nedeni çaba bölümünde ele alınmıştır.

Okuma araçları ile son kontrolü yer değiştirerek aynı desen, veri temizliği düzeltmelerini, destek iadelerini veya kontrollü doküman güncellemelerini de yönetebilir. İlk genişletmem, gerçek bir kapanışın gerektirdiği gibi, her düzeltme yazılmadan önce insan onayı adımı olurdu.

Bu yapının dayandığı Anthropic API temellerini pratik etmek için şunu Claude Modellerine Giriş kursumuzu öneririm.

SSS

Bu iş akışı Amazon Bedrock veya Google Cloud'da çalışır mı?

Aynen değil. Claude Sonnet 5.5 ve sohbet ortasında sistem mesajları, Claude API, Amazon Bedrock ve Google Cloud üzerinde mevcuttur. Bu yapı ayrıca mesaj başına çaba kullanır; Anthropic bunu şu anda Claude API ve Google Cloud'da belgelendiriyor, Bedrock'ta değil. Claude API'nin inline-tools-2026-09-15 başlığını gönderir; Bedrock ve Google Cloud'da referans tabanlı araç değişiklikleri mid-conversation-tool-changes-2026-07-01 kullanır.

tool_addition bir aracı ne zaman satır içinde tanımlamalıdır?

Araç ilk istekte bilinmiyorsa veya şeması daha sonra değişiyorsa aracı sohbet içinde tanımlayın. İlk andan itibaren en az bir aracın görünür kalmasını sağlayın; aksi halde ilk satır içi tanım tam bir önbellek kaçırmasına neden olur.

Claude Sonnet 5.5 çabasını değiştirmek istem önbelleğini sıfırlar mı?

Üst düzey bir çaba değişikliği, isteğin istem önekini değiştirdiği için önbelleği baştan başlatır. Burada kullanılan mesaj başına output_config, önceki mesajları değiştirmez, bu nedenle önbellekteki önek kullanılabilir kalır.

Bağımsız kontrol iki kez başarısız olursa ne olur?

İlk başarısızlık Claude'a kalan farkı gönderir ve 1 inceleme adımı daha açar. İkinci bir başarısızlık, daha fazla yazmaya izin vermek veya son raporu kabul etmek yerine süreci durdurur.

Her Claude Sonnet 5.5 aracısı orta çabayla mı başlamalı?

Hayır. Anthropic, net tanımlı araç görevleri için medium, hızlı yanıt gerektiren sohbet için medium veya low ve diğer durumlar için high önerir. Seviyeler Claude Sonnet 5'ten değişti, bu nedenle iş yükünüz için yeniden değerlendirin.


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Veri hatları, bulut ve YZ araçları üzerinde çalışan; aynı zamanda DataCamp ve gelişmekte olan geliştiriciler için pratik, yüksek etkili eğiticiler yazan bir veri mühendisi ve topluluk inşacısıyım.

Konular
Yapay Zeka
Yapay Zekâ Aracıları

Claude ile DataCamp'te Öğrenin!

Kurs

Claude Modellerine Giriş

3 sa
14.7K
Anthropic API'yi kullanarak Claude ile çalışmayı öğrenin, gerçek dünyadaki görevleri çözün ve yapay zeka destekli uygulamalar geliştirin.
Ayrıntıları GörüntüleRight Arrow
Kursa Başla
Devamını GörRight Arrow
İlgili

blog

2026’da En Popüler 40 Yazılım Mühendisi Mülakat Sorusu

Algoritmalar, sistem tasarımı ve davranışsal senaryoları kapsayan bu temel sorularla teknik mülakat sürecine hakim olun. Uzman cevapları, kod örnekleri ve kanıtlanmış hazırlık stratejileri edinin.
Dario Radečić's photo

Dario Radečić

15 dk.

blog

Hızlı Sevkiyat İçin Pratik Vibe Kodlama Teknoloji Yığını

Ön uç, arka uç, veritabanları, kimlik doğrulama, depolama, e-posta, test, dağıtım ve izleme için en iyi araçları keşfedin.
Abid Ali Awan's photo

Abid Ali Awan

14 dk.

Eğitim

Python'da Listeyi String'e Nasıl Dönüştürürsünüz

Bu hızlı eğitimde, Python'da bir listeyi string'e nasıl dönüştüreceğinizi öğrenin.
Adel Nehme's photo

Adel Nehme

Eğitim

.gitignore Nasıl Kullanılır: Örneklerle Pratik Bir Giriş

Git deponuzu temiz tutmak için .gitignore’u nasıl kullanacağınızı öğrenin. Bu eğitim; temelleri, yaygın kullanım durumlarını ve başlamanıza yardımcı olacak pratik örnekleri kapsar!
Kurtis Pykes 's photo

Kurtis Pykes

8 dk.

Devamını GörDevamını Gör