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

Bash
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:

Bash
# 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.

Bash
# 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.

  1. Proje klasöründe (~/PardusAsistan) dosyamızı oluşturalım:

    Bash
    nano asistan_gui.py
    
  2. Aş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.

Python
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())
  1. Dosyayı kaydedip çıkın (Ctrl+O -> Enter -> Ctrl+X).


▶️ 3. İlk Test

Hala terminalde ve sanal ortamdayken (etap_env) uygulamamızı test edelim:

Bash
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.

  1. Masaüstünde yeni bir dosya oluşturun: PardusAsistan.desktop

  2. Dosyayı 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)

Ini, TOML
[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;
  1. 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;

  1. Sistem dosyalarını kirletmeden Sanal Ortam kurdunuz.

  2. Geleceğin teknolojisi PyQt6 ile arayüz tasarladınız.

  3. 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

Bu blogdaki popüler yayınlar

Android Telefon/Tablet Ekranını Pardus ETAP 23 Yüklü Akıllı Tahtaya Yansıtma

Pardus Etap 23’de Unutulmuş Etap Yetkili Parolasını Sıfırlama

Pardus Başlangıç Onarma