- Ajan geliştirme süreci hâlâ karmaşık ve SDK soyutlamalarının gerçek araç kullanım aşamasında sık sık bozulması sorunu sürüyor
- Önbellek yönetimi platforma göre değişiyor; manuel yönetim daha öngörülebilir ve verimli, Anthropic SDK'nın açık önbellek noktası yaklaşımı tercih ediliyor
- Güçlendirme döngüsü (reinforcement loop) görev durumunu izleme ve hata kurtarmada kilit rol oynuyor; döngünün çökmesini önlemek için hataların ayrı yalıtılması gerekiyor
- Paylaşılan durum yönetimi için dosya sistemi benzeri bir hiyerarşi önemli; kod çalıştırma ve çıkarım araçları arasındaki veri alışverişinin temel yapısı olarak kullanılıyor
- Çıktı aracı ve model seçimi hâlâ zorlu; Haiku, Sonnet ve Gemini modelleri başlıca seçenekler olarak kalırken ajan tasarımının karmaşıklığı sürüyor
Ajan SDK seçimi
- Ajan geliştirirken OpenAI, Anthropic gibi temel SDK'ları doğrudan mı kullanacağınıza, yoksa Vercel AI SDK veya Pydantic gibi üst düzey soyutlama katmanlarını mı seçeceğinize karar vermek gerekiyor
- Yazar geçmişte yalnızca Vercel AI SDK'nın provider abstraction katmanını kullandığını, ancak bugün olsa aynı seçimi tekrarlamayacağını belirtiyor
- Modeller arasındaki farklar büyük olduğu için ajan soyutlama katmanını doğrudan kendiniz kurmanız gerekiyor; mevcut SDK soyutlamaları uygun değil
- Önbellek kontrolü, güçlendirme gereksinimleri, araç prompt'ları gibi alanlarda ince farklar var
- Vercel SDK'da sağlayıcı taraflı araç işleme sırasında sorun çıkıyor
- Anthropic'in web arama aracının mesaj geçmişini bozduğu durumlar var
- Anthropic SDK doğrudan kullanıldığında önbellek yönetimi ve hata mesajları daha açık oluyor
- Sonuç olarak şu anda soyutlama katmanı olmadan SDK'ları doğrudan kullanma yaklaşımının daha avantajlı olduğu değerlendiriliyor
Önbellek yönetiminden çıkarılan dersler
- Platformlara göre önbelleğe alma yaklaşımı farklı; Anthropic önbellekleme için ücret alıyor ve açık yönetim istiyor
- Manuel yönetim maliyetleri ve önbellek kullanımını öngörülebilir hâle getirdiği için tercih ediliyor
- Açık önbellekleme, konuşma dallarını çalıştırmayı veya bağlam düzenlemeyi mümkün kılıyor
- Sistem prompt'undan sonra, konuşmanın ilk bölümü gibi çeşitli önbellek noktaları ayarlanıyor
- Önbelleği korumak için sistem prompt'u ve araç seçimi statik tutuluyor, zaman gibi dinamik bilgiler ise sonraki mesajlarla aktarılıyor
- Güçlendirme döngüsü önbellekle birlikte etkin biçimde kullanılarak maliyet öngörülebilirliği ve kontrol seviyesi artırılıyor
Ajan döngüsü içinde güçlendirme (Reinforcement)
- Araç çalıştırıldığında yalnızca basit sonuç döndürmek yerine hedef, görev durumu ve hata nedenleri gibi bilgiler döngüye yeniden enjekte edilebiliyor
- Claude Code'un todo write aracı gibi öz-güçlendirme (self-reinforcement) araçları döngünün ilerlemesine yardımcı oluyor
- Ortam değiştiğinde veya hata kurtarma anında durum değişikliği bilgisinin enjekte edilmesi döngü kararlılığını sağlıyor
- Örneğin bozulmuş veriye dayanarak yeniden deneme yapılırken, önceki aşamaya dönülmesini söyleyen bir mesaj ekleniyor
Hataları yalıtma (Isolate Failures)
- Tekrarlayan hata beklenen işler alt ajanlara (subagent) ayrılarak çalıştırılıyor ve yalnızca başarılı sonuç üst döngüye bildiriliyor
- Başarısız denemelerin özeti bir sonraki görev için öğrenme materyali olarak kullanılıyor
- Anthropic SDK'da bağlam düzenleme (context editing) özelliğiyle hata kayıtları kaldırılabiliyor
- Tüm hata bilgisini tutmak yerine yalnızca gereken kısımlar bırakılıyor
- Ancak bağlam düzenleme önbelleği geçersiz kıldığı için maliyeti artırabiliyor
Alt ajanlar ve paylaşılan dosya sistemi
- Çoğu ajan kod çalıştırma ve üretim tabanlı olduğu için ortak bir veri deposuna ihtiyaç duyuyor
- Bunun için sanal dosya sistemi (VFS) kullanılıyor
- Görsel üretimi, sıkıştırma, çıkarım gibi farklı araçların aynı dosya yolunu paylaşması gerekiyor
ExecuteCode ve RunInference araçlarının aynı dosya sistemine erişebilmesi gerekiyor
- Bu yapı, veri alışverişindeki darboğazları ortadan kaldırmak ve döngü içindeki ardışık işleri işlemek için vazgeçilmez
Çıktı aracı (Output Tool)
- Ajanlar bir sohbet oturumu değil, özel bir iç mesaj döngüsü olarak çalışıyor; dış dünyayla iletişim ise çıktı aracı üzerinden kuruluyor
- Çıktı aracı e-posta gönderimi gibi dış iletişimi üstleniyor
- Çıktı aracında ton ve üslup kontrolü zor; yardımcı LLM (Gemini 2.5 Flash) kullanıldığında kalite düşüşü ve gecikme yaşanıyor
- Alt araç yeterli bağlama sahip olmadığı için hatalı sonuçlar üretebiliyor
- Döngü bitiminde çıktı aracı çağrılmamışsa, güçlendirme mesajı eklenerek çağrılması teşvik ediliyor
Model seçimi
- Haiku ve Sonnet, araç çağırma performansı güçlü olduğu için ana döngü modelleri olarak kullanılıyor
- Gemini 2.5, büyük belge özetleme, PDF işleme ve görselden bilgi çıkarma için uygun
- Sonnet modelinin sık sık güvenlik filtrelerine takılması bir dezavantaj
- GPT serisi modeller ana döngüde kayda değer bir başarı göstermedi
- Toplam maliyet yalnızca token maliyetine bakılarak değerlendirilemez
- Araç çağırmada daha iyi bir model, aynı işi daha az token ile yapabiliyor
Test ve değerlendirme (Evals)
- Ajan testlerini ve değerlendirmelerini otomatikleştirmek en zor sorun olarak gösteriliyor
- Prompt'lardan farklı olarak, dış sistemlerde basitçe değerlendirmek mümkün değil
- Gerçek yürütme verisine dayanan gözlemlenebilirlik (observability) veya enstrümantasyon (instrumentation) gerekiyor
- Şu ana kadar tatmin edici bir değerlendirme yöntemi bulunamadığı belirtiliyor
Kodlama ajanı güncellemesi
- Kodlama ajanlarıyla ilgili değişiklikler büyük değil
- Son dönemde Amp ajanı deneniyor ve Oracle alt ajanı ile ana döngü arasındaki etkileşim yapısı yüksek değerlendiriliyor
- Amp ve Claude Code, kendi araçlarını gerçekten kullanan geliştiriciler odaklı bir tasarım hissi veriyor
1 yorum
Hacker News yorumu
Yaklaşık 2 yıl önce bu alanda bir şirket kurdum. Şu anda iyi gidiyor
Son 2 yılda öğrendiğim şey, birçok tekniğin LLM’lerin mevcut sınırlarını telafi etmek için yapılmış geçici optimizasyonlar olduğuydu. Teknoloji çok hızlı ilerlediği için bugünün sorunu yarın ortadan kalkabiliyor
Eskiden AWS’de disk şifreleme özelliği yokken, ekip bunu kendisi uygulamak için 3 ay harcamıştı; hemen ardından AWS tek tıklamayla çalışan standart şifrelemeyi çıkardı. Sonuçta bu zaman kaybı oldu
Bu yüzden öğrendiğim şey, bazen hiçbir şey yapmamanın en iyisi olabildiği
Eskiden ortak bir dille kalıpları öğrendiğimiz dönem bitti; artık AI kalıplarının yarı ömrü bir hafta kadar. Hatta 10 uzmana “agent”ın ne olduğunu sorarsanız 10 farklı cevap alırsınız
Son 2 yılda çeşitli agent SDK’larını kullandım; kendim yapmayı deneyince bunun düşündüğümden çok daha karmaşık olduğunu gördüm
Claude Code SDK (şimdiki Agent SDK) harika ama hâlâ Claude Code’a bağlılığı tamamen ayrılmış değil. Örneğin skills dosya sistemine doğrudan yerleştirilmeli
OpenAI SDK, platformla güçlü entegrasyonu sayesinde panoda otomatik izleme ve değerlendirme sağlıyor ama üçüncü taraf modelleri entegre etmek zor
Google Agent Kit’in hâlâ Typescript SDK’sı yok ve Mastra’da sunucu ayağa kaldırmak gerekiyor, bu da kullanışsız
Şu anda SmythOS SDK’yı test ediyorum; model sağlayıcısı seçimi ve mimari tanımı konusunda yüksek özgürlük sunuyor
Şu an kullandığınız yapının Agent → SubAgents → SubSubAgents şeklinde mi, yoksa Planner-Executor tipi mi olduğunu merak ediyorum
Kod miktarı artıyor ama zihinsel model basit olduğu için anlaması çok daha kolay. ReAct yaklaşımıyla bir döngü kurup reasoning ve tool çağrılarını tekrar ediyorum
Sonuçta SDK olmadan da agent handoff veya iş akışlarını doğrudan kendiniz uygulayabilirsiniz
Öğrendiğimiz bazı agent tasarım ilkelerini paylaşayım
Bu arada şirketimiz Definite bir veri platformu ve Heroku gibi, bunu yapay zeka veri mühendisi işletiyor
Birkaç yıldır agent geliştiriyorum ve yaptığım en iyi şey kendi framework’ümü kurmak oldu
Çeşitli açık kaynak soyutlama katmanları, SDK değiştikçe sürdürülemez hâle geliyor ve sonunda çöküyor
PydanticAI tabanlı OpusAgents oluşturduk; MCP sunucularından daha basit ama aynı zamanda genişletilebilir bir açık kaynak framework
Bugünlerde LangChain/RAG’nin ilk dönemlerindeki gibi aşırı soyutlama ve karmaşıklık yeniden yaşanıyor
Sonuçta agent’ı basit bir REPL yapısı (Read, Eval, Print, Loop) olarak düşünmek yeterli.
Bu fikirle doğrudan yazdığım hafif sürüm, ağır SDK’lardan çok daha kararlı çıktı
Agent’ların testi ve değerlendirmesi (evals) en zor problem
Harici sistemlerle değerlendirmek için girdi çok fazla ve çalışırken veriyi gözlemlemek gerekiyor
Hangi yaklaşımın etkili olduğundan hâlâ emin değilim
Agent geliştirmede en temel konularda bile net yönergeler eksik
Örneğin fonksiyon tool’larının girdi/çıktı tiplerini işlerken, sayısal ID aktarımında serileştirme hataları veya hassasiyet kaybı yaşanıyor
Sonunda bunu string’e çevirerek çözdüm
OpenAI dokümantasyonu (bağlantı) ve Google ADK issue’suna (bağlantı) bakınca,
“sonuç string olmalı” deniyor ama gerçek örnekler dict ya da sayı döndürüyor. Bu tür tutarsızlıklar kafa karıştırıyor
Ben belirli bir agentic coding şirketinin ürününü kullanıyorum (adını vermeyeceğim)
Model sürümleri, değerlendirmeler, sub-agent yönetimi, faturalama dâhil her şeyi üstleniyor ve ben doğrudan işime odaklanabiliyorum; bundan memnunum
Son iki ayda farklı işler için çeşitli agent’lar uyguladım. İlk başta Claude Code kullandım ama sağlayıcı bağımlılığı ve kullanım kısıtları yüzünden kendi runtime’ımı yazdım
Şu anda sadece OpenAI destekleniyor ama Claude veya Gemini’yi de ekleyebilecek şekilde tasarladım
Açık kaynak olarak yayımladım, bakabilirsiniz → agent-composer
Benim ipucum basit: SDK kullanmayın, kendi
whiledöngünüzü kurup JSON ile uğraşınBağlam boyutunu ve hataları doğrudan kontrol etmeniz, gerçekten esnek agent’lar yapmak için şart