Heim >Backend-Entwicklung >Python-Tutorial >Tutorial: Erstellen Sie Ihren eigenen KI-Lernpartner

Tutorial: Erstellen Sie Ihren eigenen KI-Lernpartner

Susan Sarandon
Susan SarandonOriginal
2024-12-03 19:36:19917Durchsuche

Tutorial: Create Your Own AI Study Buddy

Fühlen Sie sich jemals überfordert, etwas Neues zu lernen? Als würden Sie in Informationen ertrinken, aber nichts wirklich aufnehmen? Wir waren alle dort. Wäre es nicht großartig, einen persönlichen Lernbegleiter zu haben, der Ihr Niveau versteht und Dinge auf eine Art und Weise erklärt, die Klick macht? Genau das werden wir gemeinsam aufbauen.

Dieses Tutorial zeigt Ihnen, wie Sie die BotHub-API mit PyQt5 kombinieren, um ein interaktives und anpassungsfähiges Lerntool zu erstellen. Es ist nicht nur ein weiterer Chatbot; Es ist eher wie ein persönlicher Nachhilfelehrer, der rund um die Uhr verfügbar ist.

Vorbereiten Ihres Arbeitsplatzes

Bevor wir mit dem Bau beginnen, packen wir unsere Werkzeuge zusammen. Wir benötigen ein paar wichtige Python-Bibliotheken:

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)

Stellen Sie sich diese Bibliotheken als verschiedene Teile Ihres Toolkits vor. Einige kümmern sich um die Grundlagen, wie Dateiverwaltung (OS), Zeitmessung (Datum/Uhrzeit) und Datenverarbeitung (JSON). Andere, wie Datenklassen und Typisierung, helfen uns, sauberen, organisierten Code zu schreiben. Die wahre Magie geschieht mit OpenAI, das uns die Kraft der KI nutzen lässt. dotenv schützt unsere sensiblen Informationen (wie API-Schlüssel). Und schließlich hilft uns PyQt5 dabei, eine schöne und intuitive Benutzeroberfläche zu erstellen.

Erstellen von Benutzeranfragen

Um mit unserer KI zu kommunizieren, erstellen wir eine UserRequest-Klasse. Dies hilft bei der Organisation der vom Benutzer bereitgestellten Informationen:

@dataclass
class UserRequest:
   query: str
   user_level: str
   preferences: Dict

Mit dem praktischen @dataclass-Dekorator definieren wir drei wichtige Informationen: die Anfrage des Benutzers (was er fragt), seine Benutzerebene (Anfänger, Mittelstufe oder Fortgeschrittene) und seine Präferenzen (z. B. wie lange er möchte). Antwort sein). Dadurch wird alles ordentlich in einem einzigen Objekt verpackt.

Erinnern an Benutzersitzungen

Um das Lernerlebnis wirklich personalisiert zu gestalten, müssen wir uns daran erinnern, was der Benutzer getan hat und wie er gerne lernt. Hier kommt die UserSession-Klasse ins Spiel:

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)

Eine UserSession verfolgt den Konversationsverlauf, die Präferenzen des Benutzers und sein aktuelles Niveau. Es ist, als hätte man einen engagierten Assistenten, der sich alles merkt und sich an die Bedürfnisse des Benutzers anpasst.

Das Gehirn der Operation: EducationalAssistant

Die EducationalAssistant-Klasse ist das Herzstück unserer Bewerbung. Es ist für die Interaktion mit der BotHub-API verantwortlich:

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}"

Dieser Kurs behandelt einige wichtige Aufgaben. Zunächst wird die Verbindung zu BotHub mithilfe Ihres API-Schlüssels initialisiert (wir haben bereits darüber gesprochen). Außerdem wird eine UserSession eingerichtet, um die Interaktion zu verfolgen. Die Methode „generate_prompt“ nimmt die Anfrage des Benutzers auf und wandelt sie in eine Eingabeaufforderung um, die die API verstehen kann. Schließlich sendet generic_text_response die Eingabeaufforderung an die API und ruft die von der KI generierte Antwort ab.

Reibungslos und reaktionsschnell: GenerateResponseThread

Um zu vermeiden, dass der Benutzer warten muss, während die KI denkt, verwenden wir einen separaten Thread für API-Aufrufe:

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)

Dieser GenerateResponseThread, der auf dem QThread von PyQt5 basiert, führt die API-Anfrage im Hintergrund aus und stellt so sicher, dass die Benutzeroberfläche reaktionsfähig bleibt.

Personalisierung der Erfahrung

Jeder lernt anders. Um auf individuelle Vorlieben einzugehen, erstellen wir einen PreferencesDialog:

@dataclass
class UserRequest:
   query: str
   user_level: str
   preferences: Dict

In diesem Dialogfeld können Benutzer Einstellungen wie den Tonfall der KI, die gewünschte Antwortlänge und die Einbindung von Beispielen anpassen. Dieser Grad der Anpassung sorgt für ein ansprechenderes und effektiveres Lernerlebnis.

Aufbau der Schnittstelle

Zuletzt erstellen wir die Benutzeroberfläche mit der EducationalAssistantGUI-Klasse:

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)

Diese Klasse erstellt das Hauptfenster, das zwei Registerkarten enthält: „Chat“ und „Verlauf“. Auf der Registerkarte „Chat“ können Benutzer ihre Fragen eingeben, ihr Level auswählen und die Antworten der KI sehen. Die Registerkarte „Verlauf“ zeigt vergangene Konversationen an und bietet Such- und Exportfunktionen.

Starten Sie Ihren AI Study Buddy

Jetzt erwecken wir unsere Kreation zum Leben:

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}"

Herzlichen Glückwunsch! Sie haben Ihren eigenen personalisierten KI-Lernassistenten erstellt.


Nachdem Sie eine funktionierende App haben, überlegen Sie, wie Sie sie noch besser machen können! Die BotHub-API bietet viel Flexibilität. Statt reiner Textantworten könnten Sie auch die Bildgenerierung oder Sprachtranskription integrieren. BotHub bietet Ihnen außerdem Zugriff auf mehrere KI-Modelle, sodass Sie das beste Modell für verschiedene Aufgaben auswählen können. Stellen Sie sich vor, Ihr Assistent könnte komplexe Themen zusammenfassen, Sprachen übersetzen oder sogar Übungsquiz erstellen! Die Möglichkeiten sind riesig. Sie haben ein solides Fundament geschaffen; Jetzt geh los und erkunde!

Das obige ist der detaillierte Inhalt vonTutorial: Erstellen Sie Ihren eigenen KI-Lernpartner. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn