Commit faffe19f authored by Kantz's avatar Kantz
Browse files

revert for better readablitity

parent f3d2a6e0
from __future__ import annotations
def build_messages(
system_prompt: str,
context_parts: list[str],
history: list[dict] | None = None,
query: str | None = None,
query_instruction: str | None = None,
) -> list[dict[str, str]]:
messages = [{"role": "system", "content": system_prompt}]
messages.append({"role": "user", "content": "\n\n".join(part for part in context_parts if part)})
if history:
messages.extend(history)
if query:
suffix = f"\n\n{query_instruction}" if query_instruction else ""
messages.append(
{
"role": "user",
"content": f"AKTUELLE Eingabe des Studenten (höchste Priorität):\n{query}{suffix}",
}
)
return messages
...@@ -4,7 +4,6 @@ from __future__ import annotations ...@@ -4,7 +4,6 @@ from __future__ import annotations
from typing import Iterable from typing import Iterable
from app.LLM_services.prompt_messages import build_messages
from app.deterministic_services import llm_client from app.deterministic_services import llm_client
...@@ -53,18 +52,31 @@ def generate_dialog( ...@@ -53,18 +52,31 @@ def generate_dialog(
history: list[dict] | None = None, history: list[dict] | None = None,
sources: str | None = None, sources: str | None = None,
) -> str: ) -> str:
effective_parent_refs = parent_refs
context_parts = [ context_parts = [
f"Parent-Referenzen:\n{_format_parent_refs(parent_refs)}", f"Parent-Referenzen:\n{_format_parent_refs(effective_parent_refs)}",
] ]
if sources: if sources:
context_parts.append(f"Kontext/Sources:\n{sources}") context_parts.append(f"Kontext/Sources:\n{sources}")
messages = build_messages( messages = [{"role": "system", "content": HINT_SYSTEM_PROMPT}]
HINT_SYSTEM_PROMPT, messages.append({"role": "user", "content": "\n\n".join(context_parts)})
context_parts,
history=history, if history:
query=query, messages.extend(history)
query_instruction="Reagiere ausschließlich auf diese Eingabe und bleibe sokratisch. Nutze deine Tools um mir zu helfen.",
) if query:
messages.append(
{
"role": "user",
"content": (
"AKTUELLE Eingabe des Studenten (höchste Priorität):\n"
f"{query}\n\n"
"Reagiere ausschließlich auf diese Eingabe und bleibe sokratisch. Nutze deine Tools um mir zu helfen."
),
}
)
result = llm_client.chat(messages=messages) result = llm_client.chat(messages=messages)
return llm_client.get_message_content(result) return llm_client.get_message_content(result)
# structure of the task-prompt. # structure of the task-prompt.
from __future__ import annotations from __future__ import annotations
from app.LLM_services.prompt_messages import build_messages
from app.deterministic_services import llm_client from app.deterministic_services import llm_client
HINT_SYSTEM_PROMPT = r""" HINT_SYSTEM_PROMPT = """
Du bist ein didaktischer Mathe-Tutor. Du gibst Feedback zu den Lösungen des Nutzers zur Gegebenen Frage. Du bist ein didaktischer Mathe-Tutor. Du gibst Feedback zu den Lösungen des Nutzers zur Gegebenen Frage.
Vergleiche das Ergebnis mit der korrekten Lösung. Vergleiche das Ergebnis mit der korrekten Lösung.
...@@ -28,7 +26,6 @@ Halte dich kurz und präzise. ...@@ -28,7 +26,6 @@ Halte dich kurz und präzise.
Denke nach bevor du eine Ausgabe macht. Denke nach bevor du eine Ausgabe macht.
""" """
def generate_hint( def generate_hint(
query: str | None, query: str | None,
task: str, task: str,
...@@ -40,17 +37,25 @@ def generate_hint( ...@@ -40,17 +37,25 @@ def generate_hint(
context_parts = [ context_parts = [
f"Hier ist die Zu lösende Aufgaben:{task}\n", f"Hier ist die Zu lösende Aufgaben:{task}\n",
f"Hier ist eine korrekte Lösung als referenz:{solution}\n", f"Hier ist eine korrekte Lösung als referenz:{solution}\n",
f"Hier ist ein exemplarischer Lösungsweg:{hints}\n", f"Hier ist ein exemplarischer Lösungsweg:{hints}\n"
] ]
if sources: if sources:
context_parts.append(f"Kontext/Sources:\n{sources}") context_parts.append(f"Kontext/Sources:\n{sources}")
messages = build_messages( messages = [{"role": "system", "content": HINT_SYSTEM_PROMPT}]
HINT_SYSTEM_PROMPT,
context_parts, # Kompakter Kontext als eine Nachricht (kein langer Fließtext mit History mischen)
history=history, messages.append({"role": "user", "content": "\n\n".join(context_parts)})
query=query,
query_instruction="Gib einen kurzen Tipp, der genau diese Eingabe adressiert. Nutze deine Tools um mir zu helfen.", # 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 Eingabe des Studenten (höchste Priorität):\n{query}\n\n Gib einen kurzen Tipp, der genau diese Eingabe adressiert. Nutze deine Tools um mir zu helfen."
})
result = llm_client.chat(messages=messages) result = llm_client.chat(messages=messages)
return llm_client.get_message_content(result) 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