Commit 6ab334f1 authored by Kantz's avatar Kantz
Browse files

task_hint_LLM implementiert

parent 939372b1
from __future__ import annotations
from app.deterministic_services import llm_client
HINT_SYSTEM_PROMPT = """
Du bist ein didaktischer Mathe-Tutor."
1) Antworte NUR mit einem kurzen Tipp (1-2 Sätze), keine Beispiele, keine Herleitung, keine komplette Lösung.
2) Beziehe dich PRIMÄR auf die 'Aktuelle Frage'. Ignoriere ältere Nebenfragen, außer sie sind nötig.
3) Wenn der Nutzer etwas Falsches sagt weiße ihn darauf hin gib aber keine Lösung an.
4) Basiere deine Tipps auf den Hinweisen.
5) Die Übergebene Lösung ist IMMER korrekt.
6) Der Nutzer kenn die Läsung und die Hinweise nicht.
verwende die $ für mathematische Formeln, z.B. $a^2 + b^2 = c^2$
Antworte mit folgender Struktur
Das war richtig/das ist noch nicht richtig/gute Frage
[Hier soll der nächster Tipp um weiter zu machen/um den Fehler zu korrigieren stehen ohne Klammern]
"""
def generate_hint(
query: str | None,
task: str,
......@@ -9,12 +26,28 @@ def generate_hint(
history: list[dict] | None = None,
sources: str | None = None,
) -> str:
# Temporary placeholder so orchestrator_task can call this module now.
# Replace this implementation with your custom LLM call.
if hints:
return hints[0]
if solution:
return "Hinweis: Nutze die gegebene Musterloesung als Orientierung fuer den naechsten Schritt."
if task:
return "Hinweis: Lies die Aufgabenstellung genau und bestimme zuerst, was gesucht ist."
return "Kein Hinweis verfuegbar."
context_parts = [
f"Aufgabe:{task}\n",
f"Lösung:{solution}\n",
f"Hinweise:{hints}\n"
]
if sources:
context_parts.append(f"Kontext/Sources:\n{sources}")
messages = [{"role": "system", "content": HINT_SYSTEM_PROMPT}]
# Kompakter Kontext als eine Nachricht (kein langer Fließtext mit History mischen)
messages.append({"role": "user", "content": "\n\n".join(context_parts)})
# History als echte Turns (und ggf. begrenzen, siehe Punkt 2)
if history:
messages.extend(history)
# Aktuelle Frage als letzte Nachricht, fett hervorgehoben durch Struktur/Delimiters
messages.append({
"role": "user",
"content": f"AKTUELLE FRAGE (höchste Priorität):\n{query}\n\nGib einen kurzen Tipp zum nächsten Schritt, der genau diese Frage adressiert."
})
result = llm_client.chat(messages=messages)
return llm_client.get_message_content(result)
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment