Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Open sidebar
math_tutor_dev
public_math_tutor
Commits
7f4548ea
Commit
7f4548ea
authored
Feb 12, 2026
by
Kantz
Browse files
LLM aufräumen
parent
48afff57
Changes
3
Show whitespace changes
Inline
Side-by-side
math-tutor/backend/app/LLM_services/hint_LLM.py
View file @
7f4548ea
from
app.deterministic_services
import
llm_client
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: korrigiere es kurz und gib einen nächsten Schritt.
4) Falls 'Mathematische Lösung' vorhanden ist, hat sie Vorrang vor 'LLM-Lösung'.
"""
def
generate_hint
(
def
generate_hint
(
query
:
str
,
query
:
str
,
task
:
str
,
task
:
str
,
...
@@ -8,13 +17,6 @@ def generate_hint(
...
@@ -8,13 +17,6 @@ def generate_hint(
history
:
list
[
dict
]
|
None
=
None
,
history
:
list
[
dict
]
|
None
=
None
,
sources
:
str
|
None
=
None
,
sources
:
str
|
None
=
None
,
)
->
str
:
)
->
str
:
system_prompt
=
(
"Du bist ein didaktischer Mathe-Tutor.
\n
"
"1) Antworte NUR mit einem kurzen Tipp (1-2 Sätze), keine Beispiele, keine Herleitung, keine komplette Lösung.
\n
"
"2) Beziehe dich PRIMÄR auf die 'Aktuelle Frage'. Ignoriere ältere Nebenfragen, außer sie sind nötig.
\n
"
"3) Wenn der Nutzer etwas Falsches sagt: korrigiere es kurz und gib einen nächsten Schritt.
\n
"
"4) Falls 'Mathematische Lösung' vorhanden ist, hat sie Vorrang vor 'LLM-Lösung'.
\n
"
)
context_parts
=
[
context_parts
=
[
f
"Aufgabe:
\n
{
task
}
"
,
f
"Aufgabe:
\n
{
task
}
"
,
...
@@ -25,7 +27,7 @@ def generate_hint(
...
@@ -25,7 +27,7 @@ def generate_hint(
if
sources
:
if
sources
:
context_parts
.
append
(
f
"Kontext/Sources:
\n
{
sources
}
"
)
context_parts
.
append
(
f
"Kontext/Sources:
\n
{
sources
}
"
)
messages
=
[{
"role"
:
"system"
,
"content"
:
system_prompt
}]
messages
=
[{
"role"
:
"system"
,
"content"
:
HINT_SYSTEM_PROMPT
}]
# Kompakter Kontext als eine Nachricht (kein langer Fließtext mit History mischen)
# Kompakter Kontext als eine Nachricht (kein langer Fließtext mit History mischen)
messages
.
append
({
"role"
:
"user"
,
"content"
:
"
\n\n
"
.
join
(
context_parts
)})
messages
.
append
({
"role"
:
"user"
,
"content"
:
"
\n\n
"
.
join
(
context_parts
)})
...
...
math-tutor/backend/app/LLM_services/qa_LLM.py
View file @
7f4548ea
from
app.deterministic_services
import
llm_client
from
app.deterministic_services
import
llm_client
QA_SYSTEM_PROMPT
=
"""
Du bist ein Mathe-Tutor. Antworte auf Deutsch, klar, korrekt und sehr kurz.
Nutze ausschließlich den bereitgestellten Kontext.
Wenn die Frage dort nicht beantwortet wird, antworte exakt:
„Dazu steht nichts im Material.“
verwende die $$ für mathematische Formeln, z.B. $$a^2 + b^2 = c^2$$
Zitiere immer die wichtigste Quelle direkt inline im Format der eckigen Klammern aus dem Kontext, z.B.:
[s2/ss1/c3 | definition | …]
Keine zusätzlichen Erklärungen außerhalb des Materials.
"""
def
answer_question
(
def
answer_question
(
question
:
str
,
question
:
str
,
history
:
str
|
None
=
None
,
history
:
str
|
None
=
None
,
sources
:
str
|
None
=
None
,
sources
:
str
|
None
=
None
,
)
->
str
:
)
->
str
:
system_prompt
=
(
"""
Du bist ein Mathe-Tutor. Antworte auf Deutsch, klar, korrekt und sehr kurz.
Nutze ausschließlich den bereitgestellten Kontext.
Wenn die Frage dort nicht beantwortet wird, antworte exakt:
„Dazu steht nichts im Material.“
verwende die $$ für mathematische Formeln, z.B. $$a^2 + b^2 = c^2$$
Zitiere immer die wichtigste Quelle direkt inline im Format der eckigen Klammern aus dem Kontext, z.B.:
[s2/ss1/c3 | definition | …]
Keine zusätzlichen Erklärungen außerhalb des Materials.
"""
)
prompt
=
(
prompt
=
(
"Frage:
\n
"
"Frage:
\n
"
+
question
+
question
...
@@ -31,7 +30,9 @@ def answer_question(
...
@@ -31,7 +30,9 @@ def answer_question(
if
sources
:
if
sources
:
prompt
=
"
\n
Kontext:
\n
"
+
sources
+
"
\n
"
+
prompt
prompt
=
"
\n
Kontext:
\n
"
+
sources
+
"
\n
"
+
prompt
prompt
+=
"
\n
Gebe eine didaktisch wertvolle Antwort. Halte dich sehr kurz und prägnant."
prompt
+=
"
\n
Gebe eine didaktisch wertvolle Antwort. Halte dich sehr kurz und prägnant."
result
=
llm_client
.
chat
(
result
=
llm_client
.
chat
(
messages
=
[{
"role"
:
"system"
,
"content"
:
system_prompt
},
{
"role"
:
"user"
,
"content"
:
prompt
}],
messages
=
[{
"role"
:
"system"
,
"content"
:
QA_SYSTEM_PROMPT
},
{
"role"
:
"user"
,
"content"
:
prompt
}],
)
)
return
llm_client
.
get_message_content
(
result
)
return
llm_client
.
get_message_content
(
result
)
\ No newline at end of file
math-tutor/backend/app/LLM_services/solver_LLM.py
View file @
7f4548ea
from
app.deterministic_services
import
llm_client
from
app.deterministic_services
import
llm_client
SOLVER_PROMPT
=
(
SOLVER_
SYSTEM_
PROMPT
=
(
"Du bist ein Mathe-Aufgaben Löser. Schreibe ein ausführliche genaue Lösung für die gestellt Fragen. "
"Du bist ein Mathe-Aufgaben Löser. Schreibe ein ausführliche genaue Lösung für die gestellt Fragen. "
"In der du alle Zwischenschritte aufführst und möglich Fehlerquellen auflistet."
"In der du alle Zwischenschritte aufführst und möglich Fehlerquellen auflistet."
"Deine Lösung soll korrekt sein und didaktisch gut formuliert."
"Deine Lösung soll korrekt sein und didaktisch gut formuliert."
...
@@ -18,7 +18,7 @@ def solve_question(question: str, context_sheet: str) -> str:
...
@@ -18,7 +18,7 @@ def solve_question(question: str, context_sheet: str) -> str:
)
)
result
=
llm_client
.
chat
(
result
=
llm_client
.
chat
(
messages
=
[
messages
=
[
{
"role"
:
"system"
,
"content"
:
SOLVER_PROMPT
},
{
"role"
:
"system"
,
"content"
:
SOLVER_
SYSTEM_
PROMPT
},
{
"role"
:
"user"
,
"content"
:
prompt
},
{
"role"
:
"user"
,
"content"
:
prompt
},
],
],
)
)
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment