Blog
Mert Özen'in yazılım geliştirme, backend, frontend ve DevOps üzerine blog yazıları.
Claude API'yi Production'a Taşımak: Hatalar, Rate Limit, Maliyet Takibi, OpenTelemetry ve IChatClient Köprüsü
Claude API'yi production'a taşırken SDK'nın tipli exception'larını en özelden başlayarak ayırır, retry'ı tek katmanda (SDK'da) bırakır, spend cap'i rate limit'ten ayırır ve her cevabın usage'ından maliyet metriği üretirsin. SDK 13.8 hata hiyerarşisi, 529 ve 429 retry davranışı, Polly ile çift retry, cache'in ITPM'e etkisi, OpenTelemetry span'leri ve temperature'ı yok sayan IChatClient köprüsü.
Claude Managed Agents'a Genel Bakış: Agent, Environment, Session ve Ne Zaman Seçilmeli?
Claude Managed Agents'ta agent'ı bir kez oluşturulan versiyonlu bir tanım olarak kurar, her çalıştırmada bu versiyona sabitlenmiş bir session açarsın; loop'u, container'ı ve event geçmişini Anthropic yönetir, credential'lar prompt'a değil vault'a girer. C# SDK ile client.Beta.Agents ve Sessions, ant apply ile dosyadan agent ve cron'lu deployment, session saati fiyatı ve kendi loop'un ya da Agent Framework ile karşılaştırma.
Claude API'de Skills, Code Execution ve MCP Connector: Hazır Yetenekleri ve Remote MCP Server'ları Kullanmak
Claude API'de Excel gibi dosyaları üretmek için container.skills ile xlsx skill'ini ve code execution tool'unu birlikte gönderir, $OUTPUT_DIR'dan dönen file_id'leri Files API ile indirirsin; remote MCP server'ı ise mcp_servers ve mcp_toolset ikilisiyle beta header'la API'ye bağlarsın. Sandbox sınırları ve fiyatı, custom SKILL.md yüklemek, pause_turn ve container, allowlist, token kapsamı ve SDK'nın null ve liste davranışı.
Message Batches ve Files API: Toplu İşleri Yarı Fiyatına Çalıştırmak ve Dosyaları Bir Kez Yüklemek
Acil olmayan binlerce Claude isteğini Message Batches API ile %50 indirimle gönderir, sonuçları sıraya değil custom_id'ye göre eşler ve batch id'sini saklayarak yeniden göndermeyi önlersin; Files API ile dosyayı bir kez yükleyip file_id ile kullanırsın. Dört sonuç tipi, BackgroundService ile gece job'u, 24 saat ve 29 gün sınırları, expires_in_seconds, file_id güvenliği ve document block'unu cache'lemek.
Claude'da Prompt Caching: Cache Breakpoint'leri, TTL ve Maliyeti %90 Düşürmek
Claude'da prompt caching için sabit içeriği (tools, system) başa koyar, sonuna cache_control breakpoint'i ve konuşma için top-level otomatik caching eklersin; cache'in çalıştığını usage'daki cache_read_input_tokens ve cache diagnostics ile doğrularsın. 5 dakika ve 1 saat TTL fiyatları, 512 token alt sınırı, 1.000 isteklik maliyet hesabı, DateTime.Now gibi sessiz bozucular, compaction ve context editing.
Claude ile Structured Outputs: JSON Schema, C# Record'ları ve Doğrulama
Claude'un cevabını bir şemaya bağlamak için output_config.format'a JSON Schema verirsin; şemayı C# record'undan System.Text.Json exporter ile üretip additionalProperties: false ekler, cevabı stop_reason'a bakarak parse edersin. SDK'nın Create<T> kısıtı, nullable alanların şemadaki hâli, enum harf farkı, refusal ve max_tokens durumu ve şemaya uyan ama iş kuralını çiğneyen Bookstore iade talebi.
Claude ile Tool Use: Client Tool'lar, Tool Loop, Strict Mode ve Server Tool'lar
Claude'da tool use için tool'u name, description ve strict JSON Schema ile tanımlar, stop_reason tool_use geldikçe tool'ları çalıştırıp bütün tool_result'ları tek user mesajında geri gönderirsin; yetki kontrolü tool'un içinde olmalı. tool_choice any'nin Opus 5.5'te 400 vermesi, parallel çağrılar, web search ve tool search, SDK'nın tool runner'ı ve loop'u sahte HttpMessageHandler ile test etmek.
Claude ile Streaming: CreateStreaming, Event'ler ve ASP.NET Core'da Server-Sent Events
Claude cevabını stream etmek için client.Messages.CreateStreaming'den gelen event'leri işlersin; message_delta'daki usage kümülatiftir ve CancellationToken SDK'ya geçirilmelidir. Event sırası, text/thinking/input_json delta'ları, stream içi hatalar, .NET 10 TypedResults.ServerSentEvents ile Bookstore asistanı, belgedeki event'lerle test ve eager_input_streaming'de kısmi JSON'u doğrulamak.
Claude'da Model, Effort ve Adaptive Thinking: Kalite, Hız ve Maliyet Dengesi
Claude'da kalite, hız ve maliyeti önce model (Haiku 5.5, Sonnet 5.5, Opus 5.5, Fable 5.2), sonra output_config.effort belirler; thinking bu modellerde adaptive ve output token olarak faturalanır. 15 Kasım 2026 fiyatları, model başına varsayılan effort ve kapatılabilen thinking, fast mode, task budgets ve Bookstore iade sınıflandırması için model × effort değerlendirme aracı.
Claude Messages API Derinlemesine: Roller, Content Block'ları, Stop Reason'lar ve Usage
Claude Messages API stateless olduğu için geçmişin tamamı her istekte gönderilir; cevap bir block listesidir ve her cevapta stop_reason ile usage okunmalıdır. Konuşma ortasında system mesajı, text/image/PDF block'ları, max_tokens'a dahil thinking, refusal kategorileri, count_tokens ve Bookstore destek botu ile fatura PDF'i analizi.
Claude API'ye .NET'ten Başlamak: Console, API Key, Anthropic C# SDK ve İlk İstek
Claude API'yi .NET'ten kullanmak için NuGet'teki resmî Anthropic paketinin 10 ve üstü sürümünü (bugün 13.8.0) kurar, key'i ANTHROPIC_API_KEY'de tutar ve AnthropicClient'ı singleton kaydedersin. Console'da workspace ve key tipleri, API version 2026-10-21 ile kaldırılan temperature/top_p/top_k, Models API ve Bookstore.Api için ClaudeCatalogService.