Yapay Zeka Destekli Müşteri Destek Botu Nasıl Yapılır?
Yapay zeka destek botu, ziyaretçilerin sorularını kendi dokümanlarınıza dayanarak yanıtlayan, gerektiğinde bir insana devreden ve her yanıtın kaynağını gösterebilen bir yazılım katmanıdır. Amaç, destek ekibini ortadan kaldırmak değil; tekrar eden soruları otomatikleştirip ekibin karmaşık taleplere odaklanmasını sağlamaktır.
Bu rehberde bir destek botunun mimarisini, PHP tarafında adım adım kurulumunu, maliyet ve gecikme dengesini, güvenlik kontrollerini ve canlıya alma öncesi kontrol listesini ele alıyoruz. Basit bir sohbet arayüzüyle başlamak isterseniz önce PHP ile ChatGPT benzeri chatbot yapımı yazısını inceleyip buraya dönebilirsiniz.
Yapay zeka destek botu nedir, hangi sorunları çözer?

Klasik destek formlarında ziyaretçi sorusunu yazar ve saatler sonra yanıt alır. Yapay zeka destek botu bu döngüyü saniyelere indirir; ancak yalnızca doğru kurgulandığında. Botun değeri, modelin ne kadar “akıllı” olduğuyla değil, ona verdiğiniz bağlamın kalitesiyle doğru orantılıdır.
Tipik kazanımlar şunlardır: sık sorulan sorularda ilk yanıt süresinin sıfıra yaklaşması, mesai dışı taleplerin karşılanması, destek biletlerinin ön sınıflandırılması ve tekrar eden konuların raporlanabilmesi. Buna karşılık bot; fatura iptali, iade kararı veya hesap silme gibi geri dönüşü olmayan işlemlerde son sözü söylememelidir.
Kural tabanlı bot ile LLM tabanlı bot arasındaki fark
Kural tabanlı botlar önceden yazılmış akışları takip eder; öngörülebilir ama kırılgandır. Kullanıcı beklenmeyen bir cümle kurduğunda akış çöker. LLM tabanlı botlar ise doğal dili anlar, ancak bilgi tabanına bağlanmadıklarında uydurma yanıt üretme riski taşır. Üretimde en sağlıklı yaklaşım ikisinin birleşimidir: niyet tespiti ve kritik işlemler kural tabanlı, açıklama ve yönlendirme LLM tabanlı yürütülür.
Destek botu mimarisi: bilgi tabanı, RAG ve fonksiyon çağrıları

Sağlam bir destek botu üç katmandan oluşur. Birinci katman bilgi tabanıdır: yardım merkezi yazıları, ürün dokümanları, iade politikası ve sık sorulan sorular. İkinci katman getirme (retrieval) katmanıdır: soruya en yakın doküman parçalarını bulur. Üçüncü katman ise üretim katmanıdır; model yalnızca getirilen bağlama dayanarak yanıt yazar.
Bu yapının adı RAG’dir ve uydurma yanıtları en aza indiren en pratik yöntemdir. Kurulum ayrıntıları için RAG sistemi nedir ve web sitesine nasıl eklenir yazısına, metinleri vektöre çevirme adımı için embeddings kullanımına ve saklama katmanı için vector store seçimine bakabilirsiniz.
Fonksiyon çağrıları ile canlı veriye bağlanmak
“Siparişim nerede?” sorusunun yanıtı bir dokümanda değil, veritabanınızdadır. Bu tür sorularda modele fonksiyon tanımlarsınız; model hangi fonksiyonun çağrılacağına karar verir, sonucu siz döndürürsünüz. Uygulama detayları için OpenAI function calling entegrasyonu rehberini izleyebilirsiniz.
Eskalasyon: botun “bilmiyorum” diyebilmesi
İyi bir destek botunun en önemli özelliği, sınırını bilmesidir. Getirilen bağlamda yeterli bilgi yoksa model tahmin yürütmemeli; konuyu insana devretmelidir. Pratikte bunu iki mekanizma sağlar: getirme skoru eşiği ve sistem talimatındaki net kural. Talimat yazımını güçlendirmek için prompt engineering ilkelerini uygulayın.
PHP ile adım adım destek botu kurulumu

- Bilgi tabanını hazırlayın. Dokümanları 500-1000 karakterlik anlamlı parçalara bölün, her parçaya başlık ve kaynak URL bilgisi ekleyin. Kalitesiz kaynak, kalitesiz yanıt üretir.
- Parçaları vektöre çevirin. Embedding modeliyle her parça için bir vektör üretip veritabanına yazın. PostgreSQL kullanıyorsanız pgvector, MySQL tarafında ise ayrı bir vektör servisi pratik bir seçimdir.
- Sohbet uç noktası yazın. Gelen soruyu vektöre çevirin, en yakın 4-6 parçayı getirin ve sistem talimatıyla birlikte modele gönderin.
- Yanıtı kaynakla birlikte döndürün. Her yanıtın altında kullanılan doküman bağlantılarını gösterin; bu hem güveni artırır hem hata ayıklamayı kolaylaştırır.
- Kayıt ve izleme ekleyin. Soru, getirilen parçalar, token tüketimi ve yanıt süresi kaydedilmelidir. Bu kayıtlar botun zayıf noktalarını gösteren tek güvenilir kaynaktır.
$payload = [
'model' => 'gpt-4o-mini',
'messages' => [
['role' => 'system', 'content' => $systemPrompt],
['role' => 'user', 'content' => $context . "\n\nSoru: " . $question],
],
'temperature' => 0.2,
];
$ch = curl_init('https://api.openai.com/v1/chat/completions');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Content-Type: application/json', 'Authorization: Bearer ' . $apiKey],
CURLOPT_POSTFIELDS => json_encode($payload),
CURLOPT_TIMEOUT => 30,
]);
Sistem talimatında botun kapsamını net yazın: hangi konularda yanıt vereceği, hangi durumda insana devredeceği ve hangi dilde konuşacağı açıkça belirtilmelidir. Sıcaklık (temperature) değerini düşük tutmak, destek senaryolarında tutarlılığı artırır.
Maliyet, gecikme ve güvenlik dengesi
| Konu | Risk | Önerilen yaklaşım |
|---|---|---|
| Token maliyeti | Uzun bağlam her istekte tekrar gönderilir | Getirilen parça sayısını sınırlayın, özet bağlam kullanın; ayrıntı için token maliyeti rehberine bakın |
| Gecikme | Yanıt 5 saniyeyi aşarsa kullanıcı sekmeyi kapatır | Akış (streaming) yanıt kullanın, retrieval sorgusunu indeksleyin |
| Uydurma yanıt | Model bağlam dışına çıkar | Sistem talimatında “yalnızca verilen bağlamı kullan” kuralını zorunlu kılın |
| Kötüye kullanım | Prompt injection ve uygunsuz içerik | Kullanıcı girdisini moderasyondan geçirin, sistem talimatını kullanıcı metniyle karıştırmayın |
| Kişisel veri | Sohbet kayıtlarında kimlik bilgisi birikir | Kayıtları maskeleyin, saklama süresi tanımlayın, KVKK aydınlatma metni ekleyin |
| Limit aşımı | Yoğun saatlerde 429 yanıtı | Kuyruk ve yeniden deneme stratejisi kurun |
Maliyeti düşürmenin en etkili yolu daha ucuz model seçmek değil, gönderilen bağlamı küçültmektir; yöntemler için token maliyetini azaltma yazısına göz atın. Yanıt süresini kullanıcıya kısa hissettirmek içinse streaming yanıt kullanımı etkili bir çözümdür. Kullanıcı girdilerini süzmek için moderasyon katmanı kurmayı ihmal etmeyin.
Canlıya almadan önce kontrol listesi
- Bilgi tabanı güncel mi, kaldırılmış ürün ve eski fiyat bilgileri temizlendi mi?
- Bot, bağlamda yanıt bulamadığında insana devrediyor mu?
- Her yanıtta kaynak bağlantısı gösteriliyor mu?
- Sohbet kayıtlarında kişisel veri maskeleniyor mu ve saklama süresi tanımlı mı?
- API anahtarı sunucu tarafında mı tutuluyor, istemciye sızma ihtimali var mı?
- Limit aşımı ve zaman aşımı durumlarında kullanıcıya anlaşılır bir mesaj gösteriliyor mu?
- Aylık token bütçesi ve uyarı eşiği tanımlandı mı?
- Yanlış yanıtları bildirmek için geri bildirim düğmesi var mı?
Sıkça Sorulan Sorular
Destek botu için hangi model yeterli olur?
Destek senaryolarının çoğu küçük ve hızlı modellerle çözülür; asıl belirleyici model boyutu değil, getirilen bağlamın kalitesidir. Sağlayıcılar arasındaki farklar için Claude, OpenAI ve Gemini karşılaştırmasına bakabilirsiniz.
Bot yanlış bilgi verirse sorumluluk kimde olur?
Sorumluluk her zaman siteyi işleten taraftadır. Bu nedenle fiyat, iade ve yasal konularda botun yanıtı bilgilendirme niteliğinde sunulmalı, kritik işlemler insan onayına bağlanmalıdır.
Bilgi tabanını ne sıklıkla güncellemeliyim?
İçerik değiştikçe. Pratikte doküman güncellemesini indeksleme işine bağlamak en sağlıklısıdır; yayın akışına bağlı otomatik yeniden indeksleme, elle yapılan haftalık güncellemeden daha güvenilirdir.
Sohbet geçmişini saklamak zorunda mıyım?
Hayır, ancak kalite ölçümü için anonimleştirilmiş kayıt tutmak faydalıdır. Kişisel veri içeren alanları maskeleyin ve saklama süresini aydınlatma metninizde belirtin.
Bot API limitine takılırsa ne olur?
Sağlayıcı 429 yanıtı döndürür ve istek reddedilir. Kuyruk, üstel geri çekilme ve kullanıcıya gösterilecek nazik bir hata mesajı bu durumu yönetir; ayrıntı için rate limit hatası çözümü yazısına bakın.
Botu kendi sunucumda çalışan bir modelle kurabilir miyim?
Evet. Gizlilik gereksinimi yüksek projelerde yerel modeller mantıklıdır; ancak donanım ve bakım maliyeti artar. Karşılaştırma için Local LLM ve Cloud API karşılaştırması yazısı yol gösterir.
Prompt injection saldırısına karşı ne yapmalıyım?
Kullanıcı metnini asla sistem talimatıyla aynı yetkide değerlendirmeyin, dış kaynaklı metinleri veri olarak işaretleyin ve fonksiyon çağrılarında beyaz liste kullanın.
Kaynaklar
- OpenAI Platform — Metin üretimi dokümantasyonu
- Anthropic — Araç kullanımı (tool use) dokümantasyonu
- Google Gemini API dokümantasyonu
- pgvector — PostgreSQL vektör eklentisi
Sonuç
Başarılı bir yapay zeka destek botu, güçlü bir modelden çok iyi hazırlanmış bir bilgi tabanına, net sınırlara ve ölçülebilir bir izleme düzenine dayanır. Küçük bir kapsamla başlayın, gerçek soruları izleyin ve bilgi tabanını bu verilere göre büyütün.
İlgili rehberler:




