Rumah > pembangunan bahagian belakang > Tutorial Python > Tutorial: Cipta Rakan Belajar AI Anda Sendiri

Tutorial: Cipta Rakan Belajar AI Anda Sendiri

Susan Sarandon
Lepaskan: 2024-12-03 19:36:19
asal
916 orang telah melayarinya

Tutorial: Create Your Own AI Study Buddy

Pernah merasa terharu semasa mempelajari sesuatu yang baharu? Seperti anda tenggelam dalam maklumat tetapi tidak benar-benar menyerap apa-apa? Kami semua pernah ke sana. Bukankah bagus untuk mempunyai teman belajar yang diperibadikan yang memahami tahap anda dan menerangkan perkara dengan cara yang mengklik? Itulah yang akan kita bina bersama.

Tutorial ini akan menunjukkan kepada anda cara menggabungkan API BotHub dengan PyQt5 untuk mencipta alat pembelajaran yang interaktif dan boleh disesuaikan. Ia bukan sekadar chatbot lain; ia lebih seperti tutor peribadi, tersedia 24/7.

Menyediakan Ruang Kerja Anda

Sebelum kita mula membina, mari kumpulkan alatan kita. Kami memerlukan beberapa perpustakaan Python utama:

import os
import datetime
import json
from dataclasses import dataclass
from typing import List, Dict
from openai import OpenAI
from dotenv import load_dotenv
from PyQt5.QtCore import Qt, QThread, pyqtSignal
from PyQt5.QtGui import QMovie
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QTextEdit, QRadioButton, QButtonGroup, QPushButton, QGroupBox, QListWidget, QListWidgetItem, QTabWidget, QFileDialog, QComboBox, QCheckBox, QMessageBox, QDialogButtonBox, QSpinBox, QFormLayout, QDialog, QDateEdit)
Salin selepas log masuk
Salin selepas log masuk

Fikirkan perpustakaan ini sebagai bahagian lain dari kit alat anda. Sesetengah mengendalikan asas, seperti pengurusan fail (os), ketepatan masa (datetime) dan pengendalian data (json). Lain-lain, seperti kelas data dan menaip, membantu kami menulis kod yang bersih dan teratur. Keajaiban sebenar berlaku dengan openai, yang membolehkan kita memanfaatkan kuasa AI. dotenv memastikan maklumat sensitif kami (seperti kunci API) selamat. Dan akhirnya, PyQt5 membantu kami mencipta antara muka pengguna yang cantik dan intuitif.

Membuat Permintaan Pengguna

Untuk berkomunikasi dengan AI kami, kami akan membuat kelas UserRequest. Ini membantu menyusun maklumat yang diberikan pengguna:

@dataclass
class UserRequest:
   query: str
   user_level: str
   preferences: Dict
Salin selepas log masuk
Salin selepas log masuk

Menggunakan penghias @dataclass yang berguna, kami mentakrifkan tiga maklumat penting: pertanyaan pengguna (apa yang mereka tanya), peringkat_pengguna mereka (pemula, pertengahan atau lanjutan) dan pilihan mereka (seperti berapa lama mereka mahu tindak balas untuk menjadi). Ini membungkus semuanya dengan kemas menjadi satu objek.

Mengingati Sesi Pengguna

Untuk menjadikan pengalaman pembelajaran benar-benar diperibadikan, kita perlu ingat perkara yang telah dilakukan oleh pengguna dan cara mereka suka belajar. Di situlah kelas UserSession masuk:

class UserSession:
   def __init__(self):
       self.history: List[Dict] = []
       self.preferences: Dict = {}
       self.level: str = "beginner"


   def add_to_history(self, query, response):
       self.history.append({"query": query, "response": response, "timestamp": datetime.datetime.now().isoformat()})


   def update_preferences(self, new_preferences):
       self.preferences.update(new_preferences)
Salin selepas log masuk
Salin selepas log masuk

Sesi Pengguna menjejaki sejarah perbualan, pilihan pengguna dan tahap semasa mereka. Ia seperti mempunyai pembantu yang berdedikasi yang mengingati segala-galanya dan menyesuaikan diri dengan keperluan pengguna.

Otak Operasi: EducationalAssistant

Kelas EducationalAssistant ialah nadi permohonan kami. Ia bertanggungjawab untuk berinteraksi dengan API BotHub:

class EducationalAssistant:
   def __init__(self):
       load_dotenv()
       self.client = OpenAI(api_key=os.getenv('BOTHUB_API_KEY'), base_url='https://bothub.chat/api/v2/openai/v1')
       self.session = UserSession()


   def generate_prompt(self, request):
       prompt = f"""As an educational assistant, provide a response for a {request.user_level} level student.
       Query: {request.query}\n"""


       if request.preferences:
           prompt += "Consider these preferences:\n"
           for key, value in request.preferences.items():
               if key == "response_length":
                   prompt += f"Desired Length: Approximately {value} words\n"
               elif key == "include_examples" and value:
                   prompt += "Include Examples: Yes\n"
               else:
                   prompt += f"{key.capitalize()}: {value}\n"


       prompt += "Please provide a detailed explanation."
       return prompt
   def generate_text_response(self, request):
       try:
           response = self.client.chat.completions.create(
               model="claude-3.5-sonnet", // u can use any model in "Models available" on BotHub
               messages=[
                   {"role": "system", "content": "You are an educational assistant."},
                   {"role": "user", "content": self.generate_prompt(request)}
               ]
           )
           return response.choices[0].message.content
       except Exception as e:
           return f"Error generating text response: {e}"
Salin selepas log masuk
Salin selepas log masuk

Kelas ini mengendalikan beberapa tugas penting. Pertama, ia memulakan sambungan ke BotHub menggunakan kunci API anda (kami telah membincangkannya sebelum ini). Ia juga menyediakan UserSession untuk menjejaki interaksi. Kaedah generate_prompt mengambil permintaan pengguna dan mengubahnya menjadi gesaan yang boleh difahami oleh API. Akhir sekali, generate_text_response menghantar gesaan kepada API dan mendapatkan semula jawapan yang dijana AI.

Lancar dan Responsif: GenerateResponseThread

Untuk mengelakkan pengguna menunggu semasa AI berfikir, kami akan menggunakan urutan berasingan untuk panggilan API:

import os
import datetime
import json
from dataclasses import dataclass
from typing import List, Dict
from openai import OpenAI
from dotenv import load_dotenv
from PyQt5.QtCore import Qt, QThread, pyqtSignal
from PyQt5.QtGui import QMovie
from PyQt5.QtWidgets import (QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QTextEdit, QRadioButton, QButtonGroup, QPushButton, QGroupBox, QListWidget, QListWidgetItem, QTabWidget, QFileDialog, QComboBox, QCheckBox, QMessageBox, QDialogButtonBox, QSpinBox, QFormLayout, QDialog, QDateEdit)
Salin selepas log masuk
Salin selepas log masuk

GenerateResponseThread ini, berdasarkan QThread PyQt5, menjalankan permintaan API di latar belakang, memastikan antara muka pengguna kekal responsif.

Memperibadikan Pengalaman

Setiap orang belajar secara berbeza. Untuk memenuhi keutamaan individu, kami akan mencipta Dialog Keutamaan:

@dataclass
class UserRequest:
   query: str
   user_level: str
   preferences: Dict
Salin selepas log masuk
Salin selepas log masuk

Dialog ini membolehkan pengguna menyesuaikan tetapan seperti nada suara AI, panjang tindak balas yang diingini dan sama ada untuk memasukkan contoh. Tahap penyesuaian ini memastikan pengalaman pembelajaran yang lebih menarik dan berkesan.

Membina Antara Muka

Akhir sekali, mari buat antara muka pengguna dengan kelas EducationalAssistantGUI:

class UserSession:
   def __init__(self):
       self.history: List[Dict] = []
       self.preferences: Dict = {}
       self.level: str = "beginner"


   def add_to_history(self, query, response):
       self.history.append({"query": query, "response": response, "timestamp": datetime.datetime.now().isoformat()})


   def update_preferences(self, new_preferences):
       self.preferences.update(new_preferences)
Salin selepas log masuk
Salin selepas log masuk

Kelas ini membina tetingkap utama, yang merangkumi dua tab: "Sembang" dan "Sejarah." Tab "Sembang" membolehkan pengguna memasukkan pertanyaan mereka, memilih tahap mereka dan melihat respons AI. Tab "Sejarah" memaparkan perbualan lalu, menawarkan fungsi carian dan eksport.

Melancarkan Rakan Belajar AI Anda

Sekarang, mari hidupkan ciptaan kita:

class EducationalAssistant:
   def __init__(self):
       load_dotenv()
       self.client = OpenAI(api_key=os.getenv('BOTHUB_API_KEY'), base_url='https://bothub.chat/api/v2/openai/v1')
       self.session = UserSession()


   def generate_prompt(self, request):
       prompt = f"""As an educational assistant, provide a response for a {request.user_level} level student.
       Query: {request.query}\n"""


       if request.preferences:
           prompt += "Consider these preferences:\n"
           for key, value in request.preferences.items():
               if key == "response_length":
                   prompt += f"Desired Length: Approximately {value} words\n"
               elif key == "include_examples" and value:
                   prompt += "Include Examples: Yes\n"
               else:
                   prompt += f"{key.capitalize()}: {value}\n"


       prompt += "Please provide a detailed explanation."
       return prompt
   def generate_text_response(self, request):
       try:
           response = self.client.chat.completions.create(
               model="claude-3.5-sonnet", // u can use any model in "Models available" on BotHub
               messages=[
                   {"role": "system", "content": "You are an educational assistant."},
                   {"role": "user", "content": self.generate_prompt(request)}
               ]
           )
           return response.choices[0].message.content
       except Exception as e:
           return f"Error generating text response: {e}"
Salin selepas log masuk
Salin selepas log masuk

Tahniah! Anda telah membina pembantu pembelajaran AI peribadi anda sendiri.


Sekarang anda mempunyai apl yang berfungsi, fikirkan tentang cara anda boleh menjadikannya lebih baik! API BotHub menawarkan banyak fleksibiliti. Daripada hanya respons teks, anda boleh menyepadukan penjanaan imej atau transkripsi pertuturan. BotHub juga memberi anda akses kepada berbilang model AI, membolehkan anda memilih yang terbaik untuk tugasan yang berbeza. Bayangkan pembantu anda dapat meringkaskan topik yang rumit, menterjemah bahasa, atau menjana kuiz latihan! Kemungkinan besar. Anda telah membina asas yang kukuh; sekarang pergi dan teroka!

Atas ialah kandungan terperinci Tutorial: Cipta Rakan Belajar AI Anda Sendiri. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan