
İçindekiler
Günümüzde haber tüketimi hızla dijitalleşiyor ve kullanıcılar anlık güncellemeleri almak için yapay zeka destekli çözümlere yöneliyor. Gemini kullanarak bir haber chatbot’u geliştirmek, kullanıcılara kişiselleştirilmiş ve anlık haber akışı sunmak için güçlü bir yöntemdir. Bu yazıda, PHP kullanarak bir Gemini destekli haber chatbot’u oluşturmayı detaylıca anlatacağız.
1. Proje Gereksinimlerinin Belirlenmesi
Başlamadan önce, chatbot’un hangi özelliklere sahip olacağı belirlenmelidir. Geliştireceğimiz chatbot şu özelliklere sahip olacak:
Kullanıcının belirlediği kategoriye göre güncel haberleri getirecek.
Haberleri Google News API gibi bir kaynaktan çekecek.
Kullanıcıdan gelen mesajları analiz edip uygun yanıt verecek.
PHP ile geliştirilecek ve bir web sunucusu üzerinden çalışacak.
2. Gerekli Araçlar ve API’ler
Chatbot’u geliştirmek için aşağıdaki teknolojileri ve servisleri kullanacağız:
- PHP 8+ (Daha iyi performans ve hata yönetimi için)
- cURL (API istekleri için PHP’de kullanılan bir kütüphane)
- NewsAPI (Haber verilerini almak için)
- Gemini API (Google tarafından geliştirilen yapay zeka modeli, chatbot’un kullanıcı mesajlarını anlamasını sağlayacak)
3. NewsAPI ile Haber Çekme
a) NewsAPI Hesabı Açma
- NewsAPI web sitesine gidin.
- Ücretsiz bir hesap oluşturun.
- API anahtarınızı alın (Bu anahtar, haberleri almak için gereklidir).
b) PHP ile Haberleri Çekme Fonksiyonu
Aşağıdaki kod, belirli bir haber kategorisine göre NewsAPI üzerinden haberleri çeker.
<?php
function getNews($category) {
$apiKey = "YOUR_NEWSAPI_KEY"; // NewsAPI'den aldığınız API anahtarını buraya girin
$url = "https://newsapi.org/v2/top-headlines?category=$category&country=tr&apiKey=$apiKey";
// cURL isteğini başlatıyoruz
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// API'den dönen yanıtı alıyoruz
$response = curl_exec($ch);
curl_close($ch);
// JSON formatındaki yanıtı PHP dizisine çeviriyoruz
return json_decode($response, true);
}
// Test etmek için
$news = getNews("technology");
print_r($news);
?>
Kod Açıklaması:
curl_init()
: cURL işlemini başlatır.curl_setopt()
: cURL isteğinin detaylarını belirler.CURLOPT_URL
: API adresini belirleriz.CURLOPT_RETURNTRANSFER
: API’den dönen verinin direkt olarak alınmasını sağlar.
curl_exec()
: API isteğini çalıştırır.json_decode()
: API’den gelen JSON verisini PHP dizisine çevirir.
4. Gemini API ile Kullanıcı Mesajlarını Anlama
Gemini API, kullanıcının yazdığı mesajı anlayarak chatbot’un daha akıllı yanıtlar vermesini sağlar.
a) Google Gemini API’yi Aktif Hale Getirme
- Google Cloud Console üzerinden giriş yapın.
- Gemini API’yi etkinleştirin.
- API Anahtarınızı alın.
b) PHP ile Gemini API Kullanımı
Şimdi PHP ile kullanıcıdan gelen mesajı Gemini’ye göndererek analiz edelim:
<?php
function analyzeMessage($userMessage) {
$apiKey = "YOUR_GEMINI_API_KEY"; // Google Gemini API anahtarınızı buraya girin
$url = "https://generativelanguage.googleapis.com/v1beta/models/gemini-pro:generateText?key=$apiKey";
// Gönderilecek JSON verisini oluşturuyoruz
$data = [
"prompt" => ["text" => "Kullanıcı şu soruyu sordu: '$userMessage'. Bu soruya en iyi şekilde yanıt verebilir misin?"],
"temperature" => 0.7
];
// JSON formatına çeviriyoruz
$jsonData = json_encode($data);
// cURL isteği başlatıyoruz
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, ['Content-Type: application/json']);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
// API’den dönen yanıtı alıyoruz
$response = curl_exec($ch);
curl_close($ch);
return json_decode($response, true);
}
// Test etmek için
$response = analyzeMessage("Bana ekonomi haberlerini söyle");
print_r($response);
?>
Kod Açıklaması:
json_encode()
: Kullanıcı mesajını JSON formatına çevirir.CURLOPT_HTTPHEADER
: API’ye JSON formatında veri göndermek için HTTP başlığını ayarlar.CURLOPT_POSTFIELDS
: JSON verisini API’ye iletir.json_decode()
: Gemini’den dönen yanıtı okur ve anlamlı bir diziye çevirir.
5. Kullanıcı Mesajlarını Anlamak ve Yanıt Vermek
Chatbot’un hem haberleri çekmesini hem de Gemini ile akıllı yanıtlar vermesini sağlamak için aşağıdaki kodu yazıyoruz:
<?php
function getChatbotResponse($userMessage) {
$keywords = ["teknoloji", "spor", "ekonomi", "magazin", "sağlık"];
// Kullanıcının mesajında belirli bir kategori var mı kontrol edelim
foreach ($keywords as $keyword) {
if (strpos(strtolower($userMessage), $keyword) !== false) {
$news = getNews($keyword);
if (!empty($news['articles'])) {
$topArticle = $news['articles'][0]; // İlk haberi alıyoruz
return "İşte en son $keyword haberi: " . $topArticle['title'] . " - " . $topArticle['url'];
} else {
return "Üzgünüm, şu anda $keyword kategorisinde yeni bir haber bulunmuyor.";
}
}
}
// Eğer haber isteği değilse, Gemini'ye soralım
$aiResponse = analyzeMessage($userMessage);
return $aiResponse['candidates'][0]['text'] ?? "Bu konuda yardımcı olamıyorum.";
}
// Test için
$userInput = "Bana ekonomi haberlerini söyle";
$response = getChatbotResponse($userInput);
echo $response;
?>
Kod Açıklaması:
- Kullanıcıdan gelen mesajı analiz ederiz
strpos(strtolower($userMessage), $keyword) !== false
ile kullanıcı mesajında haber kategorisini arıyoruz.- Eğer mesajda teknoloji, spor, ekonomi gibi bir kategori geçiyorsa, ilgili haberleri çekeriz.
- Eğer kullanıcı haber istememişse, mesajı Gemini API’ye göndererek doğal dilde yanıt üretiriz.
- Sonucu ekrana yazdırırız.
-
PHP ile bir haber chatbot’u yapmak için hangi API’leri kullanabilirim?
Haber verilerini çekmek için NewsAPI, kullanıcı mesajlarını anlamlandırmak için ise Google Gemini API kullanabilirsiniz. Alternatif olarak:
Bing News API, GDELT API, NYTimes API gibi servisleri de tercih edebilirsiniz -
Gemini API’nin ücretsiz kullanımı var mı?
Evet, Google Gemini API’nin ücretsiz bir kullanım kotası bulunmaktadır. Ancak, belirli bir sorgu limitini aşarsanız ücretli plana geçmeniz gerekir. Güncel fiyatlandırmayı Google Cloud üzerinden kontrol edebilirsiniz.
-
Chatbot haberleri nasıl güncelliyor?
Chatbot, NewsAPI’den her istekte en güncel haberleri çeker. Ancak:Önbellekleme (caching) sistemi ekleyerek API isteklerini azaltabilirsiniz.Saatlik veya günlük belirli aralıklarla haberleri yenileyerek sunucu yükünü optimize edebilirsiniz.
-
Kullanıcılar chatbot’a nasıl mesaj gönderebilir?
Chatbot’u bir web sayfasında, mobil uygulamada veya bir mesajlaşma platformunda (örneğin Telegram veya WhatsApp) çalıştırabilirsiniz
-
PHP chatbot’um farklı dillerde çalışabilir mi?
Evet, Gemini API çoklu dil desteği sunar. Kullanıcının dilini otomatik tespit ederek, API’ye hangi dilde yanıt vermesi gerektiğini belirleyebilirsiniz.
-
Chatbot’u mobil uygulamada nasıl kullanabilirim?
PHP API’nizi bir RESTful servis olarak sunarak, mobil uygulamanızdan bu servise istek gönderebilirsiniz.
-
Chatbot birden fazla haber kaynağından veri çekebilir mi?
Evet, farklı haber API’lerinden gelen verileri birleştirerek chatbot’unuzun daha geniş bir haber yelpazesi sunmasını sağlayabilirsiniz.
-
Chatbot’un hafızası var mı? Kullanıcı geçmişi kaydedilebilir mi?
Varsayılan olarak chatbot’un bir hafızası yoktur, ancak veritabanı veya dosya tabanlı bir sistemle kullanıcı geçmişini kaydedebilirsiniz.Örneğin, kullanıcının önceki sorgularını bir MySQL veritabanında saklayabilirsin.
-
API istek limitlerini nasıl yönetebilirim?
NewsAPI ve Gemini API’nin ücretsiz planlarında belirli bir istek limiti vardır. Bu nedenle:
Önbellekleme (Caching) kullanarak API isteklerini azaltın.
Gereksiz API çağrılarını engellemek için bir sorgu limiti koyun.
Farklı API servislerini birleştirerek yükü dağıtın.
Sonuç ve Geliştirme Önerileri
Bu yazıda, Gemini ve NewsAPI kullanarak bir PHP haber chatbot’u geliştirdik. Kullanıcılar belirli bir haber kategorisiyle ilgili soru sorduklarında, bot ilgili haberleri çekerek yanıt veriyor. Eğer haber içermeyen bir soru sorulursa, chatbot Gemini API üzerinden en iyi yanıtı oluşturuyor.
Geliştirme Önerileri:
• Farklı haber kaynaklarını ekleyin (Örneğin: BBC, CNN, Reuters).
• Telegram, WhatsApp veya Discord entegrasyonu yapın.
• Haberleri özetleyerek daha kısa cevaplar verin.
• Kullanıcı tercihlerini kaydedip, kişiselleştirilmiş haber önerileri sunun.
Bu chatbot, PHP ile yapay zeka ve haber kaynaklarını birleştirerek interaktif bir haber asistanı oluşturmanıza yardımcı olabilir. Daha fazla bilgi için “Yapay Zeka” kategorisine bakabilirsin.
Henüz yorum yapılmamış. İlk yorumu siz yapabilirsiniz!