This commit is contained in:
team3
2026-06-14 22:09:48 +02:00
parent 54adcdc50c
commit 6e5d673ca7
5 changed files with 39 additions and 28 deletions

View File

@@ -52,7 +52,8 @@ def _transcript(messages: list[dict]) -> str:
async def vertiefung_generieren(topic: str, baustein: str, section: str, art: str = "vertiefung", provider: str = DEFAULT_PROVIDER) -> str | None: async def vertiefung_generieren(topic: str, baustein: str, section: str, art: str = "vertiefung", provider: str = DEFAULT_PROVIDER) -> str | None:
"""Ausführlichere Fassung des Bausteins als Markdown · None bei Fehler. """Ausführlichere Fassung des Bausteins als Markdown · None bei Fehler.
art "vertiefung" = kurz (~75150 Wörter), "deepdive" = lang (300600 Wörter). art "vertiefung" = gleicher Stoff, nur umfangreicher;
"deepdive" = Label „Amateur": gleicher Stoff, für Einsteiger aufbereitet.
""" """
try: try:
prompt = _prompt( prompt = _prompt(

View File

@@ -148,7 +148,7 @@ async def remove_bausteine(topic: str):
# --- Baustein-Lernen: Vertiefung, Chat, Prüfung --- # --- Baustein-Lernen: Vertiefung, Chat, Prüfung ---
async def _bester_text(topic: str, baustein: str) -> str | None: async def _bester_text(topic: str, baustein: str) -> str | None:
"""Kontext für Chat/Prüfung: Deep Dive bevorzugt, sonst kurze Vertiefung.""" """Kontext für Chat/Prüfung: Amateur-Fassung (art 'deepdive') bevorzugt, sonst Vertiefung."""
return await get_vertiefung(topic, baustein, "deepdive") or await get_vertiefung(topic, baustein, "vertiefung") return await get_vertiefung(topic, baustein, "deepdive") or await get_vertiefung(topic, baustein, "vertiefung")

View File

@@ -27,7 +27,7 @@ function toggle(tab) {
if (activeTab.value === 'vertiefung' || activeTab.value === 'deepdive') openText(activeTab.value) if (activeTab.value === 'vertiefung' || activeTab.value === 'deepdive') openText(activeTab.value)
} }
// --- Vertiefung (kurz) + Deep Dive (lang), beide persistiert --- // --- Vertiefung (gleicher Stoff, mehr) + Amateur (gleicher Stoff, für Einsteiger), beide persistiert (intern art 'deepdive') ---
const texte = ref({ const texte = ref({
vertiefung: { md: null, loading: false, error: '' }, vertiefung: { md: null, loading: false, error: '' },
deepdive: { md: null, loading: false, error: '' }, deepdive: { md: null, loading: false, error: '' },
@@ -174,7 +174,7 @@ function neuBewerten() {
Vertiefung Vertiefung
</button> </button>
<button :class="{ active: activeTab === 'deepdive' }" @click="toggle('deepdive')"> <button :class="{ active: activeTab === 'deepdive' }" @click="toggle('deepdive')">
Deep Dive Amateur
</button> </button>
<button :class="{ active: activeTab === 'chat' }" @click="toggle('chat')"> <button :class="{ active: activeTab === 'chat' }" @click="toggle('chat')">
Chat Chat
@@ -189,7 +189,7 @@ function neuBewerten() {
</div> </div>
<div v-if="activeTab" class="bp-panel"> <div v-if="activeTab" class="bp-panel">
<!-- Vertiefung (kurz) / Deep Dive (lang) --> <!-- Vertiefung (gleicher Stoff, mehr) / Amateur (gleicher Stoff, für Einsteiger) -->
<div v-if="activeTab === 'vertiefung' || activeTab === 'deepdive'"> <div v-if="activeTab === 'vertiefung' || activeTab === 'deepdive'">
<p v-if="texte[activeTab].loading" class="bp-hint">{{ texte[activeTab].md === null ? 'Generiere' : 'Lade' }}</p> <p v-if="texte[activeTab].loading" class="bp-hint">{{ texte[activeTab].md === null ? 'Generiere' : 'Lade' }}</p>
<template v-else-if="texte[activeTab].md"> <template v-else-if="texte[activeTab].md">
@@ -197,9 +197,9 @@ function neuBewerten() {
<button class="bp-action" @click="generateText(activeTab)">Neu generieren</button> <button class="bp-action" @click="generateText(activeTab)">Neu generieren</button>
</template> </template>
<template v-else> <template v-else>
<p class="bp-hint">{{ activeTab === 'deepdive' ? 'Noch kein Deep Dive zu diesem Baustein.' : 'Noch keine Vertiefung zu diesem Baustein.' }}</p> <p class="bp-hint">{{ activeTab === 'deepdive' ? 'Noch keine Amateur-Fassung zu diesem Baustein.' : 'Noch keine Vertiefung zu diesem Baustein.' }}</p>
<button class="bp-action" @click="generateText(activeTab)"> <button class="bp-action" @click="generateText(activeTab)">
{{ activeTab === 'deepdive' ? 'Deep Dive generieren' : 'Vertiefung generieren' }} {{ activeTab === 'deepdive' ? 'Amateur generieren' : 'Vertiefung generieren' }}
</button> </button>
</template> </template>
<p v-if="texte[activeTab].error" class="bp-error">{{ texte[activeTab].error }}</p> <p v-if="texte[activeTab].error" class="bp-error">{{ texte[activeTab].error }}</p>

View File

@@ -1,19 +1,24 @@
Schreibe einen Deep Dive zum Baustein "{baustein}" aus dem Lern-Guide zum Thema "{topic}". Der Leser kennt die Guide-Fassung — die erklärt das Konzept schon — und will jetzt tief einsteigen. Schreibe eine Einsteiger-Fassung („Amateur") des Bausteins "{baustein}" aus dem Lern-Guide zum Thema "{topic}". Gleicher Stoff wie im Guide — aber für absolute Anfänger aufbereitet: maximal verständlich, kleinschrittig, nichts vorausgesetzt.
GUIDE-FASSUNG DES BAUSTEINS: GUIDE-FASSUNG DES BAUSTEINS:
{section_block} {section_block}
Inhalt des Deep Dives: So baust du es auf:
- Geh deutlich tiefer als die Guide-Fassung: das Warum hinter den Regeln gründlich, Mechanik im Detail, nicht nur das Wie. - Genau dasselbe Konzept wie der Guide — nur viel ausführlicher und einfacher erklärt.
- Mehr und reichere Beispiele als im Guide — Varianten, Grenzfälle, ein realistischer Anwendungsfall. - Sehr kleinschrittig: Gedanke für Gedanke, nichts überspringen.
- Typische Fehler und Missverständnisse, jeweils mit Korrektur. - Viele Alltags-Analogien und Bilder, die das Konzept greifbar machen.
- Abgrenzung zu verwandten Konzepten, wo Verwechslungsgefahr besteht. - Jeden Fachbegriff beim ersten Auftreten ausführlich erklären, in Alltagssprache.
- Baue auf der kompakten Fassung auf, wiederhole sie nicht. - Beispiele langsam durchgehen — Schritt für Schritt zeigen, was passiert.
Was NICHT:
- NICHT schwerer oder tiefer. Keine Grenzfälle, keine Abgrenzung, kein Experten-Stoff.
- Du bringst mehr ERKLÄRUNG, nicht mehr Konzepte.
- Setze nichts voraus — auch nicht, dass der Leser die Guide-Fassung verstanden hat.
Stil: Stil:
- Klares Deutsch, direkt, praxisorientiert. Fachbegriffe beim ersten Auftreten kurz erklären. - Klares, geduldiges Deutsch. Du nimmst den Leser an die Hand.
- Markdown: Absätze, `inline-code`, Codeblöcke mit Sprachangabe nur für Code, ### für Zwischenüberschriften, **fett** sparsam. - Ausführlicher als die Guide-Fassung, aber kein Roman. Die Länge folgt dem Verständnis, nicht dem Wortzähler.
- Umfang: deutlich ausführlicher als die Guide-Fassung, aber kein Roman — etwa 300600 Wörter plus Beispiele. - Mathematik IMMER als LaTeX: inline `$…$` (z. B. `$\Sigma^*$`, `$O(n^d)$`), abgesetzt `$$…$$`. KEINE Unicode-Krücken (`x₁`, `¬`, `≤`).
- KEINE Zusammenfassung am Ende, kein Fazit-Abschnitt. - Markdown: Absätze, `inline-code`, Codeblöcke mit Sprachangabe nur für Code, `###` für Zwischenüberschriften, **fett** sparsam. KEINE Zusammenfassung am Ende, kein Fazit-Abschnitt.
Gib NUR das Markdown des Deep Dives aus — keine Einleitung wie "Hier ist…", kein Code-Fence um das Ganze, kein JSON. Gib NUR das Markdown der Einsteiger-Fassung aus — keine Einleitung wie "Hier ist…", kein Code-Fence um das Ganze, kein JSON.

View File

@@ -1,17 +1,22 @@
Schreibe eine kurze Vertiefung zum Baustein "{baustein}" aus dem Lern-Guide zum Thema "{topic}". Der Leser kennt die Guide-Fassung — die erklärt das Konzept bereits — und will einen Schritt weiter, nicht mehr. Schreibe eine ausführlichere Fassung des Bausteins "{baustein}" aus dem Lern-Guide zum Thema "{topic}". Gleicher Stoff wie im Guide — nur umfangreicher. Keine Erweiterung, nur MEHR.
GUIDE-FASSUNG DES BAUSTEINS: GUIDE-FASSUNG DES BAUSTEINS:
{section_block} {section_block}
Inhalt: Was „mehr" heißt:
- Geh über die Guide-Fassung hinaus: ein tieferer Grund, eine Feinheit oder ein Aspekt, den der Guide bewusst weglässt. Wiederhole NICHT das Warum, das der Guide schon erklärt. - Genau dasselbe Konzept, dieselbe Stufe, derselbe Leser (Anfänger ohne Vorwissen).
- 12 zusätzliche Beispiele: eine andere Variante oder ein Grenzfall, nicht die Guide-Beispiele wiederholen. - Jeden Punkt der Guide-Fassung etwas weiter ausführen, langsameres Tempo.
- Höchstens ein typischer Fehler, wenn er wirklich häufig ist. - Mehr Beispiele und zusätzliche Varianten zum SELBEN Konzept.
- Nichts wiederholen, was die kompakte Fassung schon sagt.
Was NICHT:
- KEINE neuen Konzepte, keine Grenzfälle, keine Abgrenzung zu Nachbarthemen.
- Nichts „über den Guide hinaus" — du gehst nicht tiefer, du gehst breiter.
- Kein Aufblähen mit Floskeln. Mehr Text nur, wo er echtes Verständnis bringt.
Stil: Stil:
- Klares Deutsch, direkt. ~75150 Wörter Prosa plus die Beispiele. - Klares, direktes Deutsch. Merklich ausführlicher als die Guide-Fassung, aber kein Roman.
- Markdown: Absätze, `inline-code`, Codeblöcke mit Sprachangabe nur für Code. - Fachbegriffe beim ersten Auftreten in einem Halbsatz auflösen.
- KEINE Zwischenüberschriften, KEINE Zusammenfassung, kein Fazit. - Mathematik IMMER als LaTeX: inline `$…$` (z. B. `$\Sigma^*$`, `$O(n^d)$`), abgesetzt `$$…$$`. KEINE Unicode-Krücken (`x₁`, `¬`, `≤`).
- Markdown: Absätze, `inline-code`, Codeblöcke mit Sprachangabe nur für Code. KEINE Zwischenüberschriften, KEINE Zusammenfassung, kein Fazit.
Gib NUR das Markdown der Vertiefung aus — keine Einleitung wie "Hier ist…", kein Code-Fence um das Ganze, kein JSON. Gib NUR das Markdown der Vertiefung aus — keine Einleitung wie "Hier ist…", kein Code-Fence um das Ganze, kein JSON.