Merhabalar bugün sizlere son 3 yıldır yaptığım bir python yapay zeka projesini konuşacağım.
Yapay zekam:
DIJIDOST - TÜRKÇE SESLİ YAPAY ZEKA ASİSTANI TAM AÇIKLAMASI
Dijidost, bilgisayarınızda 7/24 çalışan kişisel bir yapay zeka asistanıdır. Sistem başladığını anda arka planda çalışmaya başlar ve sistem tray'de sessizce bekler. Microphone'unuzu dinler ve "Dijidost" söyleyin diye bekler. Siz "Dijidost" dediğiniz an aktif hale geçer ve sizin söylediğiniz komutu işlemeye başlar. Sesli komutları metin haline çevirmek için Vosk (çevrimdışı) veya Google STT (çevrimiçi) kullanır.
Eğer komut "Bana şiir oku", "Haber getir", "Saat kaç", "Kamerami aç", "Yüzümü kaydet" gibi önceden tanımlanmış bir komutsa, hemen o komuta göre işlem yapar ve cevap verir. Ama eğer komut tanımadığı bir şeyse, OpenAI'nin GPT modelini kullanarak yapay zeka ile akıllı bir cevap üretir. Bu cevapı yazının konuşmaya çevirme teknolojisi (TTS) ile pyttsx3 veya Google TTS kullanarak Türkçe olarak size konuşarak cevap verir.
Yüz tanıma kısmında DeepFace kullanarak yüzlerinizi kodlar (128 boyutlu matematiksel vektör) ve face_encodings.json dosyasında saklar. Siz "Yüzümü kaydet" dediğinizde 5 tane fotoğraf çekerek bu vektörleri hesaplar ve sizi sisteme kaydeder. Daha sonra "Beni doğrula" dediğinizde kameradan canlı frame alır, yüzünüzü kodlar ve kaydedilen yüzünüzle cosine similarity (matematiksel benzerlik) hesaplayarak eşleşirse sizi tanır ve doğrular. Cosine similarity 0 ile 1 arasında değer alır, 0.4'ten yukarı ise sizin olduğunuzu kabul eder.
Kamera Sunucusu adlı Flask uygulaması HTTP protokolü ile lokal ağda açılır (http://localhost:5000). Bu sayfalara girmek için şifre gerekir. Şifresiz giriş yapılamaz. 5 yanlış şifre deneyeri sonrası IP adresi 600 saniye (10 dakika) bloke edilir. Bu koruma saldırıları önler. Sunucu başladığında kamera akışını gerçek zamanlı olarak gösterir ve istenirse indirir.
ngrok kısmı ise lokal bilgisayardaki sunucuyu internete açar. Normalde http://localhost:5000 yalnızca kendi ağda görülür ama ngrok ile https://xxxx-xx-xxx-xxx-xx.ngrok-free.app (her kez değişen harici URL) adresi verir. Bu sayede dünyanın neresinden olursa olsun kameranız internete bağlı olup log in edebilir. Çok faydalı bir teknoloji.
Email kısmı da Gmail hesabı açıp SMTP protokolü ile email göndermek için kullanılır. Dijidost başladığında kamera public URL'sini hesabınıza email ile gönderir. Bunu yapmak için Gmail'de 2-Adımlı Doğrulama açılmalı ve 16 haneli uygulama şifresi oluşturulmalı. Bu şifre .env dosyasında saklanır.
Veritabanı olarak SQLite kullanır. Tüm konuşmalar conversations tablosunda saklanır. Kullanıcı adları user tablosunda tutulur. Ayrıca hafiza.json dosyasında yapılacak işler (gorevler), alışveriş listesi (alisveris) ve notlar (notlar) JSON formatında tutulur.
OpenAI entegrasyonunda system prompt tanımlanır (Dijidost seni Türkçe konuşan arkadaşça bir asistan olarak tanıtır) ve konuşma tarihi (messages listesi) tutulur. Her seferinde tüm geçmiş konuşmaları OpenAI'ye gönderir, böylece AI bağlam hatırlar. Yeni soru gelirse messages listesine eklenir, API çağrılır, response alınır ve messages listesine asistan yanıtı da eklenir.
Bu sayede çok turlu konuşma yapılabilir. Başlangıçta program çalıştırılırsa sırasıyla şu olur: Önce main() fonksiyonu çalışır, EvAsistani sınıfı oluşturulur (bu süreçte OpenAI client başlar, veritabanı hazırlanır, yüz modülü yüklenir), kamera sunucusu subprocess'te açılır, ngrok keyi .env'den alınır ve public URL oluşturulur, bu URL email ile gönderilir, arka planda hotword dinlemesi başlar, GUI penceresi (Tkinter) açılır. Eğer kullanıcı pencereyi kapatırsa sistem tray'e gider ama program arka planda çalışmaya devam eder. Sistem tray'den tekrar açılabilir veya kapatılabilir.
Güvenlik için .gitignore dosyası oluşturulmuş, bunda .env (API keyleri), face_encodings.json (yüz verileri), hafiza.json (kişisel notlar), ngrok_url.json (public URL) gibi hassas dosyalar GitHub'a yüklenmesini engeller.
Böylece projeyi GitHub'a yukseleseydide gizli bilgiler paylaşılmaz.
Özet olarak: Dijidost Türkçe konuşan, yüzü tanıyan, kamerasını internete açabilen, GPT gücü ile cevap veren, veritabanında geçmiş tutan, email gönderebilen, 24/7 çalışabilen kişisel bir yapay zeka asistanıdır.
Birazdan github da kodları payaşlaşacağım(bu metinin birazını yapay zekadan aldım hakkınızı helal edin)
github.com
Yapay zekam:
DIJIDOST - TÜRKÇE SESLİ YAPAY ZEKA ASİSTANI TAM AÇIKLAMASI
Dijidost, bilgisayarınızda 7/24 çalışan kişisel bir yapay zeka asistanıdır. Sistem başladığını anda arka planda çalışmaya başlar ve sistem tray'de sessizce bekler. Microphone'unuzu dinler ve "Dijidost" söyleyin diye bekler. Siz "Dijidost" dediğiniz an aktif hale geçer ve sizin söylediğiniz komutu işlemeye başlar. Sesli komutları metin haline çevirmek için Vosk (çevrimdışı) veya Google STT (çevrimiçi) kullanır.
Eğer komut "Bana şiir oku", "Haber getir", "Saat kaç", "Kamerami aç", "Yüzümü kaydet" gibi önceden tanımlanmış bir komutsa, hemen o komuta göre işlem yapar ve cevap verir. Ama eğer komut tanımadığı bir şeyse, OpenAI'nin GPT modelini kullanarak yapay zeka ile akıllı bir cevap üretir. Bu cevapı yazının konuşmaya çevirme teknolojisi (TTS) ile pyttsx3 veya Google TTS kullanarak Türkçe olarak size konuşarak cevap verir.
Yüz tanıma kısmında DeepFace kullanarak yüzlerinizi kodlar (128 boyutlu matematiksel vektör) ve face_encodings.json dosyasında saklar. Siz "Yüzümü kaydet" dediğinizde 5 tane fotoğraf çekerek bu vektörleri hesaplar ve sizi sisteme kaydeder. Daha sonra "Beni doğrula" dediğinizde kameradan canlı frame alır, yüzünüzü kodlar ve kaydedilen yüzünüzle cosine similarity (matematiksel benzerlik) hesaplayarak eşleşirse sizi tanır ve doğrular. Cosine similarity 0 ile 1 arasında değer alır, 0.4'ten yukarı ise sizin olduğunuzu kabul eder.
Kamera Sunucusu adlı Flask uygulaması HTTP protokolü ile lokal ağda açılır (http://localhost:5000). Bu sayfalara girmek için şifre gerekir. Şifresiz giriş yapılamaz. 5 yanlış şifre deneyeri sonrası IP adresi 600 saniye (10 dakika) bloke edilir. Bu koruma saldırıları önler. Sunucu başladığında kamera akışını gerçek zamanlı olarak gösterir ve istenirse indirir.
ngrok kısmı ise lokal bilgisayardaki sunucuyu internete açar. Normalde http://localhost:5000 yalnızca kendi ağda görülür ama ngrok ile https://xxxx-xx-xxx-xxx-xx.ngrok-free.app (her kez değişen harici URL) adresi verir. Bu sayede dünyanın neresinden olursa olsun kameranız internete bağlı olup log in edebilir. Çok faydalı bir teknoloji.
Email kısmı da Gmail hesabı açıp SMTP protokolü ile email göndermek için kullanılır. Dijidost başladığında kamera public URL'sini hesabınıza email ile gönderir. Bunu yapmak için Gmail'de 2-Adımlı Doğrulama açılmalı ve 16 haneli uygulama şifresi oluşturulmalı. Bu şifre .env dosyasında saklanır.
Veritabanı olarak SQLite kullanır. Tüm konuşmalar conversations tablosunda saklanır. Kullanıcı adları user tablosunda tutulur. Ayrıca hafiza.json dosyasında yapılacak işler (gorevler), alışveriş listesi (alisveris) ve notlar (notlar) JSON formatında tutulur.
OpenAI entegrasyonunda system prompt tanımlanır (Dijidost seni Türkçe konuşan arkadaşça bir asistan olarak tanıtır) ve konuşma tarihi (messages listesi) tutulur. Her seferinde tüm geçmiş konuşmaları OpenAI'ye gönderir, böylece AI bağlam hatırlar. Yeni soru gelirse messages listesine eklenir, API çağrılır, response alınır ve messages listesine asistan yanıtı da eklenir.
Bu sayede çok turlu konuşma yapılabilir. Başlangıçta program çalıştırılırsa sırasıyla şu olur: Önce main() fonksiyonu çalışır, EvAsistani sınıfı oluşturulur (bu süreçte OpenAI client başlar, veritabanı hazırlanır, yüz modülü yüklenir), kamera sunucusu subprocess'te açılır, ngrok keyi .env'den alınır ve public URL oluşturulur, bu URL email ile gönderilir, arka planda hotword dinlemesi başlar, GUI penceresi (Tkinter) açılır. Eğer kullanıcı pencereyi kapatırsa sistem tray'e gider ama program arka planda çalışmaya devam eder. Sistem tray'den tekrar açılabilir veya kapatılabilir.
Güvenlik için .gitignore dosyası oluşturulmuş, bunda .env (API keyleri), face_encodings.json (yüz verileri), hafiza.json (kişisel notlar), ngrok_url.json (public URL) gibi hassas dosyalar GitHub'a yüklenmesini engeller.
Böylece projeyi GitHub'a yukseleseydide gizli bilgiler paylaşılmaz.
Özet olarak: Dijidost Türkçe konuşan, yüzü tanıyan, kamerasını internete açabilen, GPT gücü ile cevap veren, veritabanında geçmiş tutan, email gönderebilen, 24/7 çalışabilen kişisel bir yapay zeka asistanıdır.
Birazdan github da kodları payaşlaşacağım(bu metinin birazını yapay zekadan aldım hakkınızı helal edin)
GitHub - MEGEATIL/DijiDost
Contribute to MEGEATIL/DijiDost development by creating an account on GitHub.
Moderatör tarafında düzenlendi:
