Otomasyonu, bir işi elle yapılmaktan çıkarıp kayıt tutan, izlenebilen ve hata anında haber veren bir akışa dönüştürmek olarak tanımlıyorum. Bu yazıda kurduğum akışların nasıl çalıştığını, yapay zekâyı hangi adımda kullandığımı ve kararı neden bazı noktalarda bilinçli olarak insana bıraktığımı anlatıyorum.
Altyapı: akışlar nerede ve nasıl çalışıyor
Akışlar kendi sunucumda, Docker Compose ile çalışan bir n8n kurulumunda duruyor. Bulut hizmeti yerine kendi kurulumu tercih etmemin üç nedeni var: veri dışarıya çıkmıyor, çalışma sayısına göre ücret ödenmiyor ve dahili servislere internete açılmadan erişilebiliyor.
- Sürüm sabit: n8n sürümü kayıt altında ve sabitlenmiş. Güncelleme, bilinçli bir karar olarak yapılıyor; gece kendiliğinden değişen bir sürüm yok.
- Saat dilimi yerel: Zamanlanmış akışlar Türkiye saatine göre çalışıyor, yaz saati gibi kaymalar sürpriz yaratmıyor.
- Kimlik bilgileri şifreli: API anahtarları n8n’in şifreli kimlik bilgisi deposunda tutuluyor. Hiçbir anahtar akış dosyasına, dokümana ya da commit mesajına yazılmıyor; her commit öncesinde yapısal desenlere bakan bir sır taraması çalışıyor.
- Dahili servisler kapalı ağda: Akışların çağırdığı yardımcı servisler dışarıya kapalı Docker ağlarında duruyor. Bu servislerden biri özel bir istek başlığıyla doğrulanıyor, kabuk erişimi kapalı ve kabul ettiği girdiler kalıplarla sınırlandırılmış.
Akış 1: Yapay zekâ ile içerik üretimi ve insan onayı
Kurumsal bir sitenin blogu için kurduğum en kapsamlı akış bu. Üç parçadan oluşuyor.
Üretim
- Zamanlayıcı haftada iki gün, sabit bir saatte akışı başlatıyor.
- Akış önce ayarları, yazım kurallarını ve geçmiş yazıları veri tablolarından okuyor.
- Onay bekleyen yazı sayısı sınırı aşılmışsa yeni yazı üretmiyor; kuyruk şişmiyor.
- Konu, modül, sektör ve bölge havuzlarından dönüşümlü seçiliyor; son kullanılan konular dışarıda bırakılıyor.
- Sitedeki mevcut sayfalar çekiliyor, böylece yazı içine anlamlı iç bağlantılar konabiliyor.
- Dil modeli, yapılandırılmış bir talimatla JSON biçiminde yazı üretiyor.
- Çıktı doğrulanıyor: asgari kelime sayısı, yasaklı ifadeler taraması, adres (slug) tekilleştirme.
- Yazı, arama motorları için yapılandırılmış veriyle (JSON-LD) birlikte HTML sayfaya dönüşüyor.
Önizleme
Yazı yayına çıkmadan önce imzalı bir önizleme bağlantısı üretiliyor. Bağlantının imzası paylaşılan bir sırla HMAC yöntemiyle doğrulanıyor; imza tutmazsa sayfa 403 döndürüyor. Önizleme sayfası arama motorlarının dizinine girmesin diye noindex başlığıyla sunuluyor.
Karar ve yayın
Önizleme, onay yetkisi olan kişilere Telegram üzerinden gidiyor. Mesajın altında beş düğme var: yayınla, reddet, yazıyı düzelt, kalıcı kural ekle ve tam metni gönder. Yayınla seçilirse akış site dosyalarını yazıyor, kaydı güncelliyor ve yayın bildirimi gönderiyor.
Bu akışta yapay zekâ yazıyı hazırlıyor ama hiçbir yazıyı kendi başına yayınlamıyor. Yayın kararı her zaman bir insanın düğmesiyle veriliyor.
Öğrenen kurallar
Dil modellerinin API’lerinde kalıcı hafıza yok. Bu yüzden onaylayan kişinin düzeltme sırasında söylediği tercihleri, gerekiyorsa kalıcı kural olarak ayrı bir tabloya yazıyorum. Sonraki her üretimde bu kurallar talimata otomatik ekleniyor. Böylece aynı düzeltmeyi ikinci kez yapmak gerekmiyor.
Kaldırdığım bir adım
İlk sürümde, üretilen yazıyı ikinci bir yapay zekâ çağrısıyla kalite kontrolünden geçiriyordum. İnsan onayı zaten akışın sonunda durduğu için bu adımı kaldırdım. Sonuç: yazı başına iki dil modeli çağrısı ve yaklaşık 22 saniye tasarruf. Otomasyonda her adımın bir maliyeti var; bir adımın gerçekten karar kalitesini artırıp artırmadığını ölçüyorum.
Akış 2: Tek tıkla demo ortamı
Bir ERP’yi denemek isteyen bir işletme web sitesindeki formu doldurduğunda şu adımlar kendiliğinden işliyor:
- Form verisi webhook ile akışa geliyor.
- İstek önce bot doğrulamasından geçiyor; doğrulama başarısızsa süreç orada duruyor.
- Demo için bir veritabanı adı ve güçlü bir parola üretiliyor.
- Odoo üzerinde yeni bir demo veritabanı oluşturuluyor.
- Ayrı bir dahili servis, token ile doğrulanan bir istekle gerekli modülleri kuruyor.
- Başvuru sahibine giriş bilgileri e-postayla gidiyor, ekibe de bir iç bildirim düşüyor.
Elle yapıldığında yarım saat süren ve hataya açık bir iş, formu gönderen kişi için birkaç dakikalık beklemeye dönüştü.
Akış 3: Formdan CRM’e
İletişim formundan gelen talepler, kimse kopyala yapıştır yapmadan Odoo CRM’de fırsat kaydına dönüşüyor ve ekibe bildirim gidiyor. Talep bir e-posta kutusunda kaybolmuyor; kimin, ne zaman, hangi ihtiyaçla geldiği satış hattında görünüyor.
Akış 4: Merkezi hata bildirimi
Her akış bir gün hata verir: bir API değişir, bir kota dolar, bir sunucu yanıt vermez. Bu yüzden bütün akışları tek bir hata tetikleyicisine bağladım. Herhangi bir akış patladığında hangi akışın, hangi adımda, hangi hatayla durduğu e-postayla bildiriliyor. Sessizce çalışmayı bırakan bir otomasyon, hiç olmamasından daha tehlikelidir.
Aynı altyapı üzerine kurulabilecek senaryolar
Bu yapı, işletmelerin günlük operasyonuna da doğrudan uygulanabiliyor. Tipik örnekler:
- Stok eşiği uyarıları: Bir ürünün stoğu belirlenen seviyenin altına düştüğünde satın alma sorumlusuna ürün, depo ve önerilen sipariş miktarıyla birlikte bildirim.
- Periyodik raporlar: Satış, tahsilat ve üretim özetlerinin her sabah ya da hafta başında yöneticiye hazır hâlde gönderilmesi.
- Teklif taslakları: Gelen talepten müşteri, ürün ve miktar bilgisinin çıkarılıp ERP’de teklif taslağı oluşturulması; son kontrol ve gönderim insanda.
- E-posta sınıflandırma: Gelen e-postaların konu ve içeriğe göre ilgili birime, önceliğiyle birlikte yönlendirilmesi.
Her senaryoda aynı ilkeler geçerli: veri ERP’den resmi API üzerinden okunur, kritik adımlar insan onayına bağlanır, her çalışma kayıt altına alınır ve hata anında haber verilir.
Yapay zekâyı nerede, nasıl kullanıyorum
- Metin üretimi: Yapılandırılmış JSON çıktı isteyerek. Serbest metin yerine alanları belli bir yanıt almak, doğrulamayı ve hatayı yakalamayı kolaylaştırıyor.
- Görsel üretimi: Görsel üreten bir uygulamada her işlem türü için günlük çağrı tavanı koydum. Bir hata ya da kötüye kullanım, faturayı sınırsız büyütemiyor.
- Model seçimi: Maliyete ve işin gerektirdiği kaliteye göre. Aynı iş için ucuz ve pahalı iki model seçeneği tanımlayıp gerektiğinde değiştirilebilir bırakıyorum. Veri gizliliği riski taşıyan ücretsiz katmanları bilerek kullanmıyorum.
- Görünürlük ölçümü: Aynı soruları birden fazla yapay zekâ sağlayıcısına sorup bir markanın yanıtlarda ne sıklıkla anıldığını ölçen bir kit geliştirdim. Kotayı aşmamak için tarama başına azami çağrı sayısı ve çağrılar arası bekleme süresi var.
İlkelerim
- Yapay zekâ hazırlar, insan karar verir. Yayın, gönderim, ödeme gibi geri alınması zor adımlar insan onayına bağlı.
- Her akışın bir hata yolu vardır. Sessiz hata kabul etmiyorum.
- Sırlar şifreli depoda durur. Akış dosyasında, dokümanda ya da sohbet kaydında değil.
- Maliyetin tavanı vardır. Ücretli her API çağrısı için günlük ya da işlem başı sınır.
- Gerçek maliyet doğuran test kontrollü yapılır. Gerçek mesaj gönderen ya da ücretli çağrı yapan bir akışı canlıya almadan önce, kimlik bilgilerini tek tek doğruluyor ve uçtan uca testi planlı bir pencerede yapıyorum.
Bu akışların arkasındaki güvenlik yaklaşımını yayın öncesi güvenlik kontrolü yazısında, bağlandıkları ERP’yi de GearSoft yazısında anlattım.