Bot aslında ne yapıyor?
Bot yazmak zeka değil, I/O işidir. Veri alır, karar verir, aksiyon alır. Bu üçlü düzgün kurulmazsa en iyi algoritma bile çöp olur. Biz RadKod’da ilk botu yazarken asıl problem model değil, rate limit ve retry oldu.
Basit polling bot ile event-driven bot arasındaki fark burada çıkar. Polling kolay başlar ama maliyetlidir. Event-driven daha kompleks ama üretimde daha stabil.
Polling mi webhook mu?
Küçük projede polling iş görür. Cron + HTTP çağrısı. Trafik artınca gereksiz istek patlar. Webhook tarafında sadece event geldiğinde çalışırsın.
- Polling: Basit ama israf yüksek
- Webhook: Verimli ama kurulum zor
RadKod’da bir botu polling’den webhook’a taşıdığımızda CPU kullanımı ciddi düştü. Kod karmaşıklaştı ama sistem rahatladı.
Basit çalışan bot (Python)
Bu örnek minimal polling bot. Production için yetersiz ama mantığı gösterir:
Ne yapıyor? Update alıyor, parse ediyor, cevap veriyor. Ne yapmıyor? Retry yok, state yok, rate limit yok.
Gerçek problemler
Rate limit ve retry
API’ler seni bir noktada durdurur. Backoff yoksa sistem kendi kendini sabote eder.
State yönetimi
Botlar stateless değildir. Kullanıcı hangi adımda, ne yaptı? Bunu Redis veya DB’de tut. RAM’e güvenme.
Idempotency
Aynı event iki kez gelir. Gelmeyecek sanıyorsan production görmemişsin. Event ID tut, duplicate işleme.
LLM ile bot yazmak
LLM eklemek kolay, kontrol etmek zor. Prompt’u version’la, temperature ayarla, timeout koy. Yoksa saçma cevaplar üretir.
RadKod’da bir destek botunda LLM kullandık. İlk versiyon fazla serbestti. Scope daraltınca işe yarar hale geldi.
Deployment
- Docker kullan
- Log ekle
- Monitoring kur
Serverless iyi başlangıç ama uzun polling ile kullanma. Timeout sınırına çarparsın.
Kaynaklar
Sonraki adım
Basit bot yaz. Sonra webhook’a taşı. Redis ekle. Retry yaz. Farkı gör. Biz bu yolu defalarca geçtik, en çok kazandıran şey bu iterasyon oldu.