AI API

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?

Yapay zeka destek botunun soru, bilgi tabanı ve yanıt akışını gösteren mimari şema
Kullanıcı sorusu, bilgi tabanından getirilen bağlam ve modelin ürettiği yanıt aynı akışta birleşir.

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ı

Destek botu mimarisi: doküman indeksleme, vektör arama ve fonksiyon çağrısı katmanları
Bilgi tabanı indekslenir, ilgili parçalar getirilir ve model yalnızca bu bağlamla yanıt üretir.

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

PHP ile destek botu kurulum adımları: bilgi tabanı hazırlığı, indeksleme ve sohbet uç noktası
Kurulum; içerik hazırlığı, indeksleme, sohbet uç noktası ve izleme olmak üzere dört adımda tamamlanır.
  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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

KonuRiskÖnerilen yaklaşım
Token maliyetiUzun bağlam her istekte tekrar gönderilirGetirilen parça sayısını sınırlayın, özet bağlam kullanın; ayrıntı için token maliyeti rehberine bakın
GecikmeYanıt 5 saniyeyi aşarsa kullanıcı sekmeyi kapatırAkış (streaming) yanıt kullanın, retrieval sorgusunu indeksleyin
Uydurma yanıtModel bağlam dışına çıkarSistem talimatında “yalnızca verilen bağlamı kullan” kuralını zorunlu kılın
Kötüye kullanımPrompt injection ve uygunsuz içerikKullanıcı girdisini moderasyondan geçirin, sistem talimatını kullanıcı metniyle karıştırmayın
Kişisel veriSohbet kayıtlarında kimlik bilgisi birikirKayı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

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:

ozgur

Özgür Bayram, WordPress, Laravel, yapay zekâ ve web performansı alanlarında çalışan bir yazılım geliştiricisidir. Bilim Meraklısı’nda teknoloji, yazılım, hosting, SEO ve dijital araçlar hakkında anlaşılır, uygulanabilir rehberler hazırlar. Amacı, teknik konuları sade bir dille anlatarak okuyucuların doğru kararlar vermesine ve sorunlarını güvenle çözmesine yardımcı olmaktır.

İlgili Makaleler

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Başa dön tuşu