Pardus İçin Modern Yapay Zeka Asistanı Geliştirme
Pardus ETAP ekosistemi için en güncel teknolojileri (PyQt6 ve Gemini 2.5) kullanarak kullanabileceğiniz profesyonel bir Pardus'un sistem kararlılığını bozmadan (Sanal Ortam kullanarak), modern ve şık bir eğitim asistanı uygulaması
(PyQt6 & Gemini 2.5)
Pardus ETAP yüklü etkileşimli tahtalar, modern eğitim teknolojilerinin kalbidir. Ancak bir öğretmenin ders sırasında terminal açıp komut yazması pratik değildir. Bu rehberde, öğretmenlerimizin tek tıkla açabileceği, tamamen görsel (GUI) ve PyQt6 teknolojisiyle güçlendirilmiş bir masaüstü yapay zeka asistanı geliştireceğiz.
Bu proje şunları içerir:
Modern Arayüz: PyQt6 ile yazılmış şık ve güncel bir pencere yapısı.
Google Gemini 2.5: Google'ın en yeni ve hızlı modeli.
Sistem Güvenliği: Pardus'un ana dosyalarına dokunmadan "Sanal Ortam" (venv) kullanımı.
🛠️ 1. Hazırlık: Sanal Çalışma Ortamının Kurulması
Pardus (Debian tabanlı) sistemlerde, proje geliştirirken sistemin kendi Python paketlerini bozmamak için izole bir alan oluşturmak en profesyonel yöntemdir.
Terminali açın ve sırasıyla şu adımları uygulayın:
A. Gerekli Sistem Araçlarını Yükleyin
sudo apt update
sudo apt install python3-venv python3-pip -y
B. Proje Klasörü ve Sanal Ortam (Venv) Oluşturma
Projemiz için bir klasör açalım ve içine bir "sanal fanus" kuralım:
# Klasörü oluştur ve içine gir
mkdir ~/PardusAsistan
cd ~/PardusAsistan
# Sanal ortamı oluştur (İsmi: etap_env olsun)
python3 -m venv etap_env
C. Sanal Ortamı Aktifleştirme ve Paketleri Kurma
Şimdi sanal ortamı aktif edip, en güncel kütüphaneleri (PyQt6 ve Google GenAI) kuralım.
# Ortamı aktif et (Satır başında (etap_env) yazmalı)
source etap_env/bin/activate
# Paketleri kur
pip install PyQt6 google-genai
💻 2. Kodlama: PyQt6 ile Modern Arayüz
Şimdi yapay zeka asistanımızın beynini ve yüzünü kodlayacağız. PyQt6, yüksek çözünürlüklü akıllı tahtalarda daha net görüntü sağlar.
Proje klasöründe (
~/PardusAsistan) dosyamızı oluşturalım:Bashnano asistan_gui.pyAşağıdaki kodları kopyalayıp yapıştırın.
⚠️ ÖNEMLİ: BURAYA_API_ANAHTARINIZI_YAZIN kısmına Google AI Studio'dan aldığınız anahtarı eklemeyi unutmayın.
import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QVBoxLayout, QTextEdit,
QLineEdit, QPushButton, QLabel)
from PyQt6.QtCore import Qt, QThread, pyqtSignal
from PyQt6.QtGui import QFont, QCursor
from google import genai
from google.genai import types
# --- AYARLAR ---
API_KEY = "BURAYA_API_ANAHTARINIZI_YAZIN"
MODEL_ADI = "gemini-2.5-flash" # En güncel ve hızlı model
# --- ARKA PLAN İŞÇİSİ (THREAD) ---
# Arayüzün donmaması için API isteği ayrı kanaldan yapılır
class GeminiWorker(QThread):
cevap_geldi = pyqtSignal(str)
def __init__(self, soru):
super().__init__()
self.soru = soru
def run(self):
try:
client = genai.Client(api_key=API_KEY)
response = client.models.generate_content(
model=MODEL_ADI,
contents=self.soru,
config=types.GenerateContentConfig(
system_instruction="Sen Pardus ETAP akıllı tahtasında çalışan yardımcı bir eğitim asistanısın. Cevapların kibar, Türkçe, kısa ve öğrenciler için eğitici olsun."
)
)
self.cevap_geldi.emit(response.text)
except Exception as e:
self.cevap_geldi.emit(f"Bağlantı Hatası: {str(e)}")
# --- ANA PENCERE (GUI) ---
class PardusAsistan(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# Pencere Ayarları
self.setWindowTitle('Pardus ETAP Asistanı (v2.0)')
self.setGeometry(100, 100, 700, 600)
self.setStyleSheet("background-color: #f4f6f9;") # Göz yormayan gri
layout = QVBoxLayout()
# Başlık (Logo Alanı)
baslik = QLabel("🐆 Pardus Yapay Zeka Asistanı")
baslik.setFont(QFont('Segoe UI', 16, QFont.Weight.Bold))
baslik.setAlignment(Qt.AlignmentFlag.AlignCenter) # PyQt6 Hizalama
baslik.setStyleSheet("color: #d35400; margin: 15px;")
layout.addWidget(baslik)
# Sohbet Geçmişi
self.chat_area = QTextEdit()
self.chat_area.setReadOnly(True)
self.chat_area.setFont(QFont('Segoe UI', 12))
self.chat_area.setStyleSheet("""
QTextEdit {
background-color: white;
border: 1px solid #bdc3c7;
border-radius: 10px;
padding: 15px;
}
""")
layout.addWidget(self.chat_area)
# Soru Giriş Kutusu
self.input_box = QLineEdit()
self.input_box.setPlaceholderText("Öğretmenim, sorunuzu buraya yazın...")
self.input_box.setFont(QFont('Segoe UI', 12))
self.input_box.setStyleSheet("""
QLineEdit {
border: 2px solid #3498db;
border-radius: 8px;
padding: 10px;
background-color: white;
}
QLineEdit:focus {
border: 2px solid #2980b9;
}
""")
self.input_box.returnPressed.connect(self.soru_gonder)
layout.addWidget(self.input_box)
# Gönder Butonu
self.btn_gonder = QPushButton("CEVAPLA 🚀")
self.btn_gonder.setFont(QFont('Segoe UI', 11, QFont.Weight.Bold))
self.btn_gonder.setCursor(Qt.CursorShape.PointingHandCursor)
self.btn_gonder.setStyleSheet("""
QPushButton {
background-color: #2ecc71;
color: white;
border-radius: 8px;
padding: 12px;
border: none;
}
QPushButton:hover {
background-color: #27ae60;
}
""")
self.btn_gonder.clicked.connect(self.soru_gonder)
layout.addWidget(self.btn_gonder)
self.setLayout(layout)
def soru_gonder(self):
soru = self.input_box.text().strip()
if not soru:
return
# Kullanıcı sorusunu ekrana bas
self.chat_area.append(f"<div style='margin-bottom:10px;'><b style='color:#2980b9'>Siz:</b> {soru}</div>")
# Arayüzü kilitle
self.input_box.clear()
self.input_box.setDisabled(True)
self.btn_gonder.setText("Düşünüyor...")
# İşçiyi başlat
self.worker = GeminiWorker(soru)
self.worker.cevap_geldi.connect(self.cevabi_yaz)
self.worker.start()
def cevabi_yaz(self, cevap):
# Markdown satırlarını HTML break ile değiştir
temiz_cevap = cevap.replace("\n", "<br>")
self.chat_area.append(f"<div style='background-color:#ecf0f1; padding:10px; border-radius:10px; margin-bottom:20px;'><b style='color:#d35400'>Asistan:</b><br>{temiz_cevap}</div>")
# Otomatik aşağı kaydır
self.chat_area.moveCursor(self.chat_area.textCursor().MoveOperation.End)
# Arayüzü aç
self.input_box.setDisabled(False)
self.btn_gonder.setText("CEVAPLA 🚀")
self.input_box.setFocus()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = PardusAsistan()
ex.show()
sys.exit(app.exec())
Dosyayı kaydedip çıkın (
Ctrl+O->Enter->Ctrl+X).
▶️ 3. İlk Test
Hala terminalde ve sanal ortamdayken (etap_env) uygulamamızı test edelim:
python3 asistan_gui.py
Eğer karşınıza şık bir pencere geldiyse ve soru sorduğunuzda cevap alabiliyorsanız başardınız demektir!
🚀 4. Masaüstü Kısayolu Oluşturma (Öğretmenler İçin)
Her derste terminal açmak zor olacağı için, masaüstüne tıklanabilir bir Pardus ikonu ekleyelim.
Masaüstünde yeni bir dosya oluşturun:
PardusAsistan.desktopDosyayı metin düzenleyici ile açın ve aşağıdaki satırları yapıştırın.
(Not: kullaniciadi yazan yerleri kendi kullanıcı adınızla değiştirin)
[Desktop Entry]
Version=1.0
Name=Pardus Asistan
Comment=Yapay Zeka Destekli Eğitim Aracı
# Exec satırı çok önemlidir: Önce sanal ortamdaki python'u, sonra dosyamızı gösteririz
Exec=/home/kullaniciadi/PardusAsistan/etap_env/bin/python3 /home/kullaniciadi/PardusAsistan/asistan_gui.py
Icon=utilities-terminal
Terminal=false
Type=Application
Categories=Education;
Kaydettikten sonra dosyaya sağ tıklayın -> Özellikler -> Erişim Hakları sekmesine gelin ve "Dosyayı bir program gibi çalıştırmaya izin ver" kutucuğunu işaretleyin.
Artık masaüstündeki bu ikona tıkladığınızda asistanınız açılacak!
Sonuç
Tebrikler! Pardus ETAP üzerinde;
Sistem dosyalarını kirletmeden Sanal Ortam kurdunuz.
Geleceğin teknolojisi PyQt6 ile arayüz tasarladınız.
Dünyanın en güçlü modellerinden Gemini 2.5'i sisteme entegre ettiniz.
Bu uygulama, okullarda internet erişimi olan her tahtada öğretmenlerin en büyük yardımcısı olmaya adaydır. İyi çalışmalar!
Yorumlar