Tutoring Machine

KI-basierter Moodle-Block zur Unterstützung von Lernenden.

Ein Block für Moodle, der eine KI-basierte Tutoring Machine zur Unterstützung von Lernenden bereitstellt. Die Tutoring Machine kann Fragen zum Kursinhalt basierend auf verschiedenen Kursressourcen beantworten.

Installation

  1. Entpacke das Plugin in das /blocks/tutoring_machine-Verzeichnis Ihrer Moodle-Installation.
  2. Navigiere zu „Website-Administration“ > „Mitteilungen“ > „Benachrichtigungen aktualisieren“.
  3. Folge dem Installationsprozess und bestätige die Installation.

Konfiguration

Das Plugin kann über die Blockeinstellungen in jeder Kursseite konfiguriert werden:

  1. Schalte den Bearbeitungsmodus ein.
  2. Füge den „Tutoring Machine“-Block hinzu.
  3. Klicken Sie auf das Zahnrad-Symbol und wähle „Tutoring Machine konfigurieren“.
  4. Passe die Einstellungen nach Bedarf an:
    • Tutoring Machine-Anweisungen: Gebe spezielle Anweisungen für die Tutoring Machine ein, zum Beispiel: Gebe keine Lösungen vor, sondern verweise auf das Material, in dem die Lösung auf die gestellte Frage zu finden ist.
    • Willkommensnachrichten: Lege Begrüßungstexte fest – inklusive einer optionalen Analytics-Variante –, damit Lernende direkt verstehen, welche Rolle der Bot übernimmt.
    • Kontextweitergabe: Schalte explizit frei, ob Kursmaterialien überhaupt an den KI-Anbieter übertragen werden dürfen. Erst danach lassen sich einzelne Aktivitäten selektiv einbeziehen.
    • Willkommensnachrichten: Lege Begrüßungstexte fest – inklusive einer optionalen Analytics-Variante –, damit Lernende direkt verstehen, welche Rolle der Bot übernimmt.
    • Kontextweitergabe: Schalte explizit frei, ob Kursinhalte überhaupt an den KI-Anbieter übertragen werden dürfen. Erst danach lassen sich einzelne Aktivitäten selektiv einbeziehen.
    • KI-Modell-Einstellungen: Wähle das Modell aus, dass für deine Aufgabe im Kurs geeignet ist
    • Darstellung: Wähle die Hauptfarbe für die Benutzeroberfläche
    • Kontext: Wähle, welche Kursressourcen als Kontext verwendet werden sollen:
      • Textseiten
      • Glossare
      • H5P-Aktivitäten
      • PDF-Dokumente
      • Internetsuche (für Fragen, die nicht durch Kursinhalte beantwortet werden können) Quellen, die nicht ausgewählt werden, werden auch nicht in den Kontext einbezogen, Die Tutoring Machine gibt dann die Antwort, dass dazu keine Informationen im Kurs gefunden werden konnten und die Referent*innen befragt werden müssen.
    • Lehr-Analysen: Wenn die Lehr-Analysen aktiviert werden, werden alle Prompts der Teilnehmenden gespeichert und in einem für die Referentinnen zugänglichen Analyse-Dashboard ausgewertet, bzw. angezeigt. Der Willkommensprompt weist die Teilnehmenden darauf hin, dass ihre Eingaben gespeichert und den Referentinnen zugänglich gemacht werden.
    • Prompt-Empfehlungen: Wenn aktiviert, wird ein weiterer Button angezeigt, mit dem den Teilnehmenden Prompt-Empfehlungen für die Nutzung der Tutoring Machine vorgeschlagen werden. Die können ausgewählt und abgeschickt werden. Um zu verschiedenen Kategorien Prompt-Empfehlugnen zu machen kann eine Raute vorausgeschickt werden. Beispiel: #Anfänger Wie alt ist Einstein geworden? Wann ist Einstein geboren? #Forgeschrittene Wie alt ist Watts geworden? Wann ist Watts geboren?

Globale Einstellungen

Globale Einstellungen für die Tutoring Machine können unter „Website-Administration“ > „Plugins“ > „Blöcke“ > „Tutoring Machine“ konfiguriert werden:

  • Assistantname: Der Name, der im Chat-Interface angezeigt wird
  • Kurskontext standardmäßig teilen: Voreinstellung, ob neue Blöcke Kursmaterialien automatisch an die KI weitergeben oder zunächst lokal behalten.
  • Domain-Whitelist für Links: Nur Domains aus dieser Liste werden für externe Kontextlinks abgefragt.
  • robots.txt respektieren: Steuert, ob der Linkcrawler Hinweise aus robots.txt beachtet und gesperrte Pfade auslässt.
  • Crawler-User-Agent: HTTP User-Agent, unter dem der Linkcrawler auftritt.
  • Link-Aktualisierungsintervall: Legt fest, wie lange gecachte Link-Inhalte gültig bleiben, bevor sie erneut geladen werden.
  • OpenAI API-Schlüssel: Dein OpenAI API-Schlüssel für die Verbindung mit OpenAI-Modellen
  • Google API-Schlüssel: Dein Google API-Schlüssel für die Verbindung mit Gemini-Modellen
  • Standard-Modell: Das zu verwendende Standard-KI-Modell im Format „provider:model“
    • Unterstützte OpenAI-Modelle: gpt-5, gpt-5-mini, gpt-5-nano und weitere
    • Unterstützte Google-Modelle: gemini-1.5-pro, gemini-1.5-flash, gemini-pro

Unterstützte Kursressourcen

Die Tutoring Machine kann folgende Kursressourcen als Kontext verwenden:

  • Textseiten (Moodle Page-Aktivitäten)
  • Glossare und deren Einträge
  • H5P-Aktivitäten (wenn installiert)
  • PDF-Dokumente (mit automatischer Textextraktion)

Sicherheitsfunktionen

Die Tutoring Machine implementiert folgende Sicherheitsfunktionen:

  • Eingabevalidierung: Alle Benutzereingaben werden geprüft und bereinigt
  • CSRF-Schutz: Verhinderung von Cross-Site Request Forgery durch Session-Key-Validierung
  • Rate-Limiting: Begrenzung auf 30 Anfragen pro Stunde pro Benutzer
  • XSS-Schutz: Bereinigung von HTML-Inhalten zur Vermeidung von Cross-Site-Scripting
  • Zugriffskontrolle: Prüfung der Benutzerberechtigungen

Chat-Verlauf & Sitzungen

  • Chatverläufe und UI-Zustände werden clientseitig pro Kurs und Blockinstanz gespeichert. Beim Wechsel in andere Kurse oder das Dashboard startet immer eine frische Unterhaltung.
  • Legacy-Schlüssel in localStorage werden automatisch bereinigt, damit bestehende Installationen ohne manuelles Eingreifen auf das neue Scoped-Storage-Verhalten umstellen.

Technische Anforderungen

  • PHP 8.2 oder höher
  • Moodle 4.1 oder höher
  • OpenAI API-Schlüssel oder Google Gemini API-Schlüssel
  • Für PDF-Textextraktion (mindestens eine der folgenden Optionen):
    • pdftotext (empfohlen, Teil von Poppler-Utils)
      • Ubuntu/Debian: apt-get install poppler-utils
      • CentOS/RHEL: yum install poppler-utils
      • macOS: brew install poppler
    • Alternative PHP-Bibliotheken:
      • Smalot/PdfParser: composer require smalot/pdfparser
      • Spatie/PdfToText: composer require spatie/pdf-to-text

API-Test-Tools

Zur Überprüfung der API-Verbindungen stehen zwei Test-Tools zur Verfügung:

Kommandozeilen-Test

Der Kommandozeilen-Test kann über die Moodle-Wurzel ausgeführt werden:

php blocks/tutoring_machine/api_test.php [provider]

Wobei [provider] einer der folgenden Werte sein kann:

  • openai – Test nur für OpenAI API
  • google – Test nur für Google Gemini API
  • all – Test für alle konfigurierten APIs (Standard)

Die Ergebnisse werden sowohl in der Konsole ausgegeben als auch in einer Logdatei im Verzeichnis blocks/tutoring_machine/logs/ gespeichert.

Web-basierter Test

Der web-basierte Test kann über folgende URL aufgerufen werden:

https://ihre-moodle-url/blocks/tutoring_machine/api_test_web.php

Dieser Test bietet eine benutzerfreundliche Oberfläche zur Überprüfung der API-Verbindungen und ist nur für Administratoren im Entwicklungsmodus verfügbar.

Unterstützte Sprachen

  • Englisch
  • Deutsch
  • Deutsch Du-Form

Caching-System

Die Tutoring Machine nutzt ein umfassendes Caching-System, um die Leistung zu verbessern und die Anzahl der API-Aufrufe zu reduzieren:

  • PDF-Caching: Extrahierte PDF-Inhalte werden in der Datenbank gespeichert (TTL: 1 Woche)
  • Kursinhalt-Caching: Vollständiger extrahierter Kurskontext wird im Moodle Cache gespeichert (TTL: 12 Stunden)
  • Ressourcen-Caching: Einzelne Ressourcen (Seiten, Glossare, H5P) werden separat gecacht (TTL: 24 Stunden)
  • Automatische Cache-Invalidierung: Cache-Einträge werden automatisch ungültig, wenn Kursinhalte aktualisiert werden

Dieses Caching-System reduziert die Verarbeitungszeit und verbessert die Reaktionsfähigkeit der Tutoring Machine erheblich.

Screenshots

Code auf Github