Skip to main content

.QUIZ

Generiert und steuert KI-basierte Quizzes im Chat (RAGAI.QUIZ).

Hintergrund

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.

ParameterTypBeschreibung
eventDataunknown

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.

ParameterTypBeschreibung
sourcestring | z.input<typeof quizStartFromTextSchema>

Objekt-Form (validiert über quizStartFromTextSchema):

FeldTypPflichtBeschreibung
sourcestringAusgangstext, 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.

ParameterTypBeschreibung
tstring

Rückgabewert: Promise<string>

.showAnswerOptions(curr)

Zeigt die aktuelle Frage mit gemischten Antwort-Buttons (richtig + falsch) im Chatverlauf an.

ParameterTypBeschreibung
currQuizQuestion

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.

ParameterTypBeschreibung
currQuizQuestion
userAnswerstring

Rückgabewert: Promise<&#123; correct: boolean, reasoning: string &#125; | 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.

ParameterTypBeschreibung
messagestring

Rückgabewert: Promise<string | null>