.QUIZ
Generiert und steuert KI-basierte Quizzes im Chat (RAGAI.QUIZ).
Fragen werden per KI aus einem Ausgangstext generiert (startFromText, nutzt RAGAI.AITEXT_OPENAI)
und dann nacheinander aus der questions-Warteschlange abgefragt (nextQuestion). ANSWER_MODE
schaltet zwischen zwei grundverschiedenen Antwort-Mechaniken um: 'buttons' (Multiple-Choice per Card-Buttons)
und 'freetext' (die nächste normale Prompt-Eingabe des Nutzers wird als Antwort auf CURRENT_QUESTION gewertet).
Jeder Quiz-Lauf bekommt eine eigene CURRENT_QUIZ_UNIQUE_ID, an die alle internen Event-Listener
(RAGAI.QUIZ.*) gebunden sind; cleanupQuiz muss diese IDs wieder abmelden, sonst häufen sich
Listener über mehrere Quiz-Durchläufe hinweg an.
Bei aktivem QUIZ_USE_HISTORY wird jede Antwort projektweit protokolliert (RAGAI.PROJECTKEYVAL über
QuizHistoryService) und fließt in zukünftige Frage-Generierungen als Prompt-Kontext ein (über Bots hinweg,
QUIZ_HISTORY_LIMIT begrenzt wie viele letzte Einträge einfließen).
Methoden
.debug(eventData?)
Gibt den aktuellen Quiz-Zustand als Debug-Karte im Chatverlauf aus.
| Parameter | Typ | Beschreibung |
|---|---|---|
eventData | unknown |
Rückgabewert: Promise<void>
.end()
Löst das RAGAI.QUIZ.END-Event aus, um das laufende Quiz vorzeitig zu beenden.
Rückgabewert: void
.endQuiz()
Kurzalias für end().
Rückgabewert: void
.cleanupQuiz()
Setzt den kompletten Quiz-Zustand zurück und meldet alle an die aktuelle Quiz-ID gebundenen Event-Listener ab.
Rückgabewert: void
.startFromText(source)
Startet ein neues Quiz: generiert Fragen per KI aus dem Ausgangstext und triggert RAGAI.QUIZ.START.
| Parameter | Typ | Beschreibung |
|---|---|---|
source | string | z.input<typeof quizStartFromTextSchema> |
Objekt-Form (validiert über quizStartFromTextSchema):
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
source | string | ✔ | Ausgangstext, aus dem das Quiz generiert wird. |
Rückgabewert: Promise<void>
.nextQuestion()
Stellt die nächste Frage aus der Warteschlange (Button- oder Freitext-Modus) oder beendet das Quiz, wenn keine mehr übrig sind.
Rückgabewert: Promise<void>
.clearHistory()
Loescht den projektweiten Quiz-Verlauf des aktuellen Nutzers (fuer Blockly nutzbar).
Rückgabewert: Promise<void>
.getQuestionsFromText(t)
Generiert per KI ein JSON-Array von Quiz-Fragen (inkl. richtiger/falscher Antworten) aus einem Ausgangstext.
| Parameter | Typ | Beschreibung |
|---|---|---|
t | string |
Rückgabewert: Promise<string>
.showAnswerOptions(curr)
Zeigt die aktuelle Frage mit gemischten Antwort-Buttons (richtig + falsch) im Chatverlauf an.
| Parameter | Typ | Beschreibung |
|---|---|---|
curr | QuizQuestion |
Rückgabewert: Promise<void>
.evaluateFreetextAnswer(curr, userAnswer)
Bewertet die Freitext-Antwort des Nutzers anhand des Ausgangsdokuments und der
extrahierten Referenz-Antwort mittels einer strukturierten KI-Antwort (structuredResponse).
Gibt bei einem Fehler (z.B. Netzwerkproblem) null zurueck.
| Parameter | Typ | Beschreibung |
|---|---|---|
curr | QuizQuestion | |
userAnswer | string |
Rückgabewert: Promise<{ correct: boolean, reasoning: string } | null>
.handleFreetextAnswer(message)
Wird als RAGAI.BEFORE_SEND-Hook registriert (siehe QUIZ_START_FROM_TEXT_FREETEXT Blockly-Block).
Faengt die normale Prompt-Eingabe des Nutzers ab, solange eine Freitext-Quizfrage offen ist,
wertet sie aus und unterbindet dadurch die normale KI-Chat-Anfrage (Rueckgabe null).
Ist kein Freitext-Quiz aktiv bzw. keine Frage offen, wird die Nachricht unveraendert
durchgereicht, damit der normale Chat-Flow unberuehrt bleibt.
| Parameter | Typ | Beschreibung |
|---|---|---|
message | string |
Rückgabewert: Promise<string | null>