update
This commit is contained in:
@@ -6,6 +6,7 @@ Prüfungs-Zähler (DB) und die Vertiefung (DB).
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import logging
|
import logging
|
||||||
|
import re
|
||||||
import uuid
|
import uuid
|
||||||
from datetime import datetime, timezone
|
from datetime import datetime, timezone
|
||||||
|
|
||||||
@@ -181,6 +182,20 @@ def _bewertung_text(bew: dict) -> str:
|
|||||||
return f"Bewertung: {bew['bewertung']}\nFeedback: {bew['feedback']}"
|
return f"Bewertung: {bew['bewertung']}\nFeedback: {bew['feedback']}"
|
||||||
|
|
||||||
|
|
||||||
|
# Deterministischer Guard gegen Doppelfragen — der KI-Kritiker übersieht „…, und welchen…".
|
||||||
|
_FRAGEWORT = r"(was|welche[rsnm]?|wie|wieso|warum|wofür|wozu|wann|wo|wer|wem|wen|nenne)"
|
||||||
|
_DOPPEL_RE = re.compile(r"[,;]?\s+(und|sowie|außerdem|bzw\.?)\s+" + _FRAGEWORT + r"\b", re.IGNORECASE)
|
||||||
|
|
||||||
|
|
||||||
|
def _doppelfrage_mangel(frage: str) -> str | None:
|
||||||
|
"""Erkennt zwei verkettete Fragen. None = ok. Flaggt NUR 'und/sowie' + Fragewort."""
|
||||||
|
if frage.count("?") > 1:
|
||||||
|
return "Mehr als ein Fragezeichen — stelle GENAU EINE Frage."
|
||||||
|
if _DOPPEL_RE.search(frage):
|
||||||
|
return "Zwei Fragen mit 'und'/'sowie' verkettet — stelle GENAU EINE Frage, eine Sache."
|
||||||
|
return None
|
||||||
|
|
||||||
|
|
||||||
async def _frage_mit_kritik(
|
async def _frage_mit_kritik(
|
||||||
topic: str, baustein: str, section_block: str, vertiefung_block: str,
|
topic: str, baustein: str, section_block: str, vertiefung_block: str,
|
||||||
transcript: str, provider: str,
|
transcript: str, provider: str,
|
||||||
@@ -202,6 +217,9 @@ async def _frage_mit_kritik(
|
|||||||
topic=topic, baustein=baustein, section_block=section_block,
|
topic=topic, baustein=baustein, section_block=section_block,
|
||||||
vertiefung_block=vertiefung_block, transcript=transcript, frage=frage,
|
vertiefung_block=vertiefung_block, transcript=transcript, frage=frage,
|
||||||
)
|
)
|
||||||
|
hart = _doppelfrage_mangel(frage) # erzwingt Neugenerierung, auch wenn der KI-Kritiker es übersah
|
||||||
|
if hart:
|
||||||
|
probleme = [hart, *(probleme or [])]
|
||||||
if not probleme:
|
if not probleme:
|
||||||
return frage
|
return frage
|
||||||
kritik_block = _kritik_block(frage, probleme)
|
kritik_block = _kritik_block(frage, probleme)
|
||||||
|
|||||||
Reference in New Issue
Block a user