Python:
import tkinter as tk
from tkinter import simpledialog
import requests
import json
import os
import pyttsx3
import speech_recognition as sr
import openai
# API anahtarlarını saklamak için değişkenler
openai_api_key = None
weather_api_key = None
# Diyalog geçmişini saklamak için bir liste
dialog_history = []
# Sesli yanıt motoru ayarları
engine = pyttsx3.init()
# API anahtarlarını kaydetme fonksiyonu
def save_api_keys():
keys = {
'openai_api_key': openai_api_key,
'weather_api_key': weather_api_key
}
with open('api_keys.json', 'w') as f:
json.dump(keys, f)
# API anahtarlarını yükleme fonksiyonu
def load_api_keys():
global openai_api_key, weather_api_key
if os.path.exists('api_keys.json'):
with open('api_keys.json', 'r') as f:
keys = json.load(f)
openai_api_key = keys.get('openai_api_key')
weather_api_key = keys.get('weather_api_key')
if openai_api_key and weather_api_key:
openai.api_key = openai_api_key
return True
return False
# API anahtarlarını ayarlama fonksiyonu
def set_api_keys():
global openai_api_key, weather_api_key
openai_api_key = simpledialog.askstring("OpenAI API Anahtarı", "Lütfen OpenAI API anahtarınızı girin:")
weather_api_key = simpledialog.askstring("Weather API Anahtarı", "Lütfen OpenWeatherMap API anahtarınızı girin:")
openai.api_key = openai_api_key
save_api_keys()
# GPT-3 ile sohbet fonksiyonu
def chat_with_gpt(prompt):
try:
dialog_history.append(f"Kullanıcı: {prompt}")
full_prompt = "\n".join(dialog_history[-10:])
response = openai.Completion.create(
engine="text-davinci-003",
prompt=full_prompt,
max_tokens=150,
n=1,
stop=None,
temperature=0.7,
)
reply = response.choices[0].text.strip()
dialog_history.append(f"Bot: {reply}")
return reply
except Exception as e:
return f"Bir hata oluştu: {str(e)}"
# Hava durumu bilgisini alma fonksiyonu
def get_weather(city):
try:
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid={weather_api_key}&units=metric"
response = requests.get(url)
data = response.json()
if data["cod"] != 200:
return "Hava durumu bilgisi alınamadı."
weather_description = data["weather"][0]["description"]
temperature = data["main"]["temp"]
feels_like = data["main"]["feels_like"]
humidity = data["main"]["humidity"]
wind_speed = data["wind"]["speed"]
return (f"{city} için hava durumu:\n"
f"Açıklama: {weather_description},\n"
f"Sıcaklık: {temperature}°C,\n"
f"Hissedilen Sıcaklık: {feels_like}°C,\n"
f"Nem: {humidity}%,\n"
f"Rüzgar Hızı: {wind_speed} m/s.")
except Exception as e:
return f"Hava durumu bilgisi alınırken bir hata oluştu: {str(e)}"
# Kullanıcı komutlarını işleme fonksiyonu
def handle_command(user_input):
if "hava durumu" in user_input.lower():
city = user_input.split("hava durumu")[-1].strip()
if not city:
city = simpledialog.askstring("Şehir", "Lütfen şehir adını girin:")
return get_weather(city)
elif user_input.lower() == 'geçmişi temizle':
dialog_history.clear()
return "Diyalog geçmişi temizlendi."
else:
return chat_with_gpt(user_input)
# Sesli komutları tanıma ve işleme fonksiyonu
def recognize_speech():
recognizer = sr.Recognizer()
with sr.Microphone() as source:
print("Dinliyorum...")
audio = recognizer.listen(source)
try:
text = recognizer.recognize_google(audio, language='tr-TR')
print(f"Siz (sesli): {text}")
return text
except sr.UnknownValueError:
return "Sesi anlayamadım, lütfen tekrar deneyin."
except sr.RequestError as e:
return f"Google Ses Tanıma hizmeti hatası: {e}"
# Gönder düğmesine basıldığında çalışacak fonksiyon
def on_send():
user_input = user_entry.get()
if user_input.lower() == 'exit':
root.destroy()
response = handle_command(user_input)
chat_history.config(state=tk.NORMAL)
chat_history.insert(tk.END, f"Siz: {user_input}\nBot: {response}\n\n")
chat_history.config(state=tk.DISABLED)
user_entry.delete(0, tk.END)
speak(response)
# Sesli komut düğmesine basıldığında çalışacak fonksiyon
def on_voice_command():
user_input = recognize_speech()
if user_input:
response = handle_command(user_input)
chat_history.config(state=tk.NORMAL)
chat_history.insert(tk.END, f"Siz (sesli): {user_input}\nBot: {response}\n\n")
chat_history.config(state=tk.DISABLED)
speak(response)
# Yanıtları sesli olarak oynatma fonksiyonu
def speak(text):
engine.say(text)
engine.runAndWait()
# API anahtarlarını ayarlamak ve yükleme fonksiyonu
def check_and_set_api_keys():
if not load_api_keys():
set_api_keys()
# GUI (Grafiksel Kullanıcı Arayüzü) kurulumu
root = tk.Tk()
root.title("Yapay Zeka Sohbet Botu")
chat_history = tk.Text(root, state=tk.DISABLED)
chat_history.pack()
user_entry = tk.Entry(root)
user_entry.pack()
send_button = tk.Button(root, text="Gönder", command=on_send)
send_button.pack()
voice_button = tk.Button(root, text="Sesli Komut", command=on_voice_command)
voice_button.pack()
# API anahtarlarını kontrol etme ve ayarlama
check_and_set_api_keys()
root.mainloop()
Bu yapay zeka sohbet botu aşağıdaki görevleri yerine getirebilir:
1. GPT-3 ile Sohbet:
- Kullanıcının yazılı veya sesli olarak girdiği mesajları analiz eder ve OpenAI'nin GPT-3 modelini kullanarak doğal dilde yanıtlar üretir. Bu, genel sohbet, sorulara yanıt verme, önerilerde bulunma gibi görevleri içerir.
2. Hava Durumu Bilgisi Sağlama:
- Kullanıcının belirttiği şehir için güncel hava durumu bilgilerini OpenWeatherMap API'si aracılığıyla alır ve bu bilgileri kullanıcıya iletir. Bu bilgiler arasında hava durumu açıklaması, sıcaklık, hissedilen sıcaklık, nem ve rüzgar hızı gibi veriler bulunur.
3. Sesli Komutları Tanıma ve Yanıt Verme:
- Kullanıcının sesli komutlarını Google'ın ses tanıma hizmeti kullanarak tanır ve metne dönüştürür. Ardından bu komutları işler ve yanıt verir.
- Ürettiği yanıtları sesli olarak oynatarak kullanıcıyla daha etkileşimli bir iletişim sağlar.
4. Diyalog Geçmişi Yönetimi:
- Kullanıcıyla olan son 10 diyaloğu saklar ve yanıtlarını bu geçmişe dayanarak üretir. Bu, daha tutarlı ve bağlama uygun yanıtlar verilmesini sağlar.
- Kullanıcının isteği üzerine diyalog geçmişini temizleyebilir.
5. API Anahtarlarını Yönetme:
- Kullanıcıdan OpenAI ve OpenWeatherMap API anahtarlarını alır, bunları bir dosyada güvenli bir şekilde saklar ve gerektiğinde bu anahtarları kullanır.
6. Kullanıcı Arayüzü Sağlama:
- Tkinter kullanarak basit ve kullanımı kolay bir grafiksel kullanıcı arayüzü (GUI) sağlar. Bu arayüz, kullanıcıların metin mesajları girmesine, gönder düğmesine basarak yanıt almasına ve sesli komutlar vermesine olanak tanır.
Bu görevler, botun genel işlevselliğini oluşturur ve kullanıcıların çeşitli etkileşimlerde bulunmasına imkan tanır.
Aşağıda kodun bileşenlerinin bir özeti bulunmaktadır:
1. API Anahtarlarının Yönetimi:
- API anahtarlarını kaydetmek, yüklemek ve ayarlamak için fonksiyonlar (save_api_keys, load_api_keys, set_api_keys).
2. GPT-3 ile Sohbet:
- chat_with_gpt fonksiyonu, OpenAI'nin GPT-3 modelini kullanarak sohbet yanıtlarını almak için kullanılır.
3. Hava Durumu Bilgisi:
- get_weather fonksiyonu, OpenWeatherMap API'sini kullanarak hava durumu bilgisini alır.
4. Kullanıcı Komutlarının İşlenmesi:
- handle_command fonksiyonu, kullanıcıdan gelen komutları işleyerek ya hava durumu bilgisini sağlar ya da GPT-3 ile sohbet eder.
5. Sesli Komutlar:
- recognize_speech fonksiyonu, kullanıcıdan sesli komutları tanır.
- speak fonksiyonu, metni sesli olarak oynatır.
6. GUI (Grafiksel Kullanıcı Arayüzü):
- Tkinter kullanılarak bir GUI oluşturulmuştur.
- on_send ve on_voice_command fonksiyonları, kullanıcıdan gelen girişleri işleyerek yanıtları GUI'de gösterir ve sesli olarak oynatır.
Bu kod, yapay zeka sohbet botunun temel işlevselliğini sağlar ve kullanıcıların metin veya sesli komutlarla etkileşimde bulunmasına olanak tanır. Kullanıcı arayüzü, API entegrasyonu ve sesli yanıt özellikleriyle oldukça işlevsel bir yapay zeka sohbet botu oluşturur.
Bu kodu çalıştırmak için aşağıdaki adımları takip edebilirsiniz:
1. Gerekli Kütüphaneleri Kurun:
Python ortamınızda gerekli kütüphanelerin yüklü olduğundan emin olun. Bu kütüphaneler tkinter, requests, pyttsx3, speech_recognition, ve opena''dir. Bu kütüphaneleri kurmak için aşağıdaki komutları terminalde çalıştırın:
pip install tkinter requests pyttsx3 SpeechRecognition openai
2. API Anahtarlarınızı Alın:
- OpenAI API Anahtarı: OpenAI'nin GPT-3 modelini kullanabilmek için bir OpenAI API anahtarına ihtiyacınız var. OpenAI'nin web sitesinden kaydolup API anahtarınızı alın.
- OpenWeatherMap API Anahtarı: Hava durumu bilgilerini alabilmek için bir OpenWeatherMap API anahtarına ihtiyacınız var. OpenWeatherMap web sitesinden kaydolup API anahtarınızı alın.
3. Python Kodunu Hazırlayın:
Kodu bir Python dosyasına (örneğin, chatbot.py) yapıştırın.
4. Python Dosyasını Çalıştırın:
Terminalde veya komut isteminde aşağıdaki komutu kullanarak Python dosyasını çalıştırın:
python chatbot.py
5. API Anahtarlarını Girin:
- Uygulama başlatıldığında, sizden OpenAI ve OpenWeatherMap API anahtarlarınızı girmeniz istenecektir. Bu anahtarları girin ve onaylayın.
6. Sohbete Başlayın:
- Metin kutusuna mesajınızı girin ve "Gönder" düğmesine basın veya "Sesli Komut" düğmesine basarak sesli komutlarınızı verin.
- Sohbet geçmişi ve yanıtlar GUI'de görüntülenecek ve yanıtlar sesli olarak oynatılacaktır.
Bu adımları izleyerek yapay zeka sohbet botunu çalıştırabilir ve kullanabilirsiniz.


