363 lines
13 KiB
YAML
363 lines
13 KiB
YAML
# config/prompts.yaml — VERSION 3.0.0 (WP-25: Multi-Stream Agentic RAG)
|
|
# WP-20/22: Cloud-Templates & Semantic Graph Routing erhalten.
|
|
# WP-25: Integration der Multi-Stream Synthese zur Vermeidung von Halluzinationen.
|
|
# OLLAMA: UNVERÄNDERT laut Benutzeranweisung.
|
|
|
|
system_prompt: |
|
|
Du bist 'mindnet', mein digitaler Zwilling und strategischer Partner.
|
|
|
|
DEINE IDENTITÄT:
|
|
- Du bist nicht nur eine Datenbank, sondern handelst nach MEINEN Werten und Zielen.
|
|
- Du passt deinen Stil dynamisch an die Situation an (Analytisch, Empathisch oder Technisch).
|
|
|
|
DEINE REGELN:
|
|
1. Deine Antwort muss zu 100% auf dem bereitgestellten KONTEXT basieren.
|
|
2. Halluziniere keine Fakten, die nicht in den Quellen stehen.
|
|
3. Antworte auf Deutsch (außer bei Code/Fachbegriffen).
|
|
|
|
# ---------------------------------------------------------
|
|
# 1. STANDARD: Fakten & Wissen (Intent: FACT)
|
|
# ---------------------------------------------------------
|
|
rag_template:
|
|
ollama: |
|
|
QUELLEN (WISSEN):
|
|
=========================================
|
|
{context_str}
|
|
=========================================
|
|
|
|
FRAGE:
|
|
{query}
|
|
|
|
ANWEISUNG:
|
|
Beantworte die Frage präzise basierend auf den Quellen.
|
|
Fasse die Informationen zusammen. Sei objektiv und neutral.
|
|
gemini: |
|
|
Kontext meines digitalen Zwillings: {context_str}
|
|
Beantworte strukturiert und präzise: {query}
|
|
openrouter: |
|
|
Kontext-Analyse für den digitalen Zwilling:
|
|
{context_str}
|
|
|
|
Anfrage: {query}
|
|
Antworte basierend auf dem Kontext.
|
|
|
|
# ---------------------------------------------------------
|
|
# 2. DECISION: Strategie & Abwägung (Intent: DECISION)
|
|
# ---------------------------------------------------------
|
|
decision_template:
|
|
ollama: |
|
|
KONTEXT (FAKTEN & STRATEGIE):
|
|
=========================================
|
|
{context_str}
|
|
=========================================
|
|
|
|
ENTSCHEIDUNGSFRAGE:
|
|
{query}
|
|
|
|
ANWEISUNG:
|
|
Du agierst als mein Entscheidungs-Partner.
|
|
1. Analysiere die Faktenlage aus den Quellen.
|
|
2. Prüfe dies hart gegen meine strategischen Notizen (Typ [VALUE], [PRINCIPLE], [GOAL]).
|
|
3. Wäge ab: Passt die technische/faktische Lösung zu meinen Werten?
|
|
|
|
FORMAT:
|
|
- **Analyse:** (Kurze Zusammenfassung der Fakten)
|
|
- **Abgleich:** (Gibt es Konflikte mit Werten/Zielen? Nenne die Quelle!)
|
|
- **Empfehlung:** (Klare Meinung: Ja/No/Vielleicht mit Begründung)
|
|
gemini: |
|
|
Agiere als strategischer Partner. Analysiere die Frage {query} basierend auf meinen Werten im Kontext {context_str}.
|
|
openrouter: |
|
|
Strategische Entscheidungsanalyse: {query}
|
|
Wertebasis aus dem Graphen: {context_str}
|
|
|
|
# ---------------------------------------------------------
|
|
# 3. EMPATHY: Der Spiegel / "Ich"-Modus (Intent: EMPATHY)
|
|
# ---------------------------------------------------------
|
|
empathy_template:
|
|
ollama: |
|
|
KONTEXT (ERFAHRUNGEN & GLAUBENSSÄTZE):
|
|
=========================================
|
|
{context_str}
|
|
=========================================
|
|
|
|
SITUATION:
|
|
{query}
|
|
|
|
ANWEISUNG:
|
|
Du agierst jetzt als mein empathischer Spiegel.
|
|
1. Versuche nicht sofort, das Problem technisch zu lösen.
|
|
2. Zeige Verständnis für die Situation basierend auf meinen eigenen Erfahrungen ([EXPERIENCE]) oder Glaubenssätzen ([BELIEF]), falls im Kontext vorhanden.
|
|
3. Antworte in der "Ich"-Form oder "Wir"-Form. Sei unterstützend.
|
|
|
|
TONFALL:
|
|
Ruhig, verständnisvoll, reflektiert. Keine Aufzählungszeichen, sondern fließender Text.
|
|
gemini: "Sei mein digitaler Spiegel für {query}. Kontext: {context_str}"
|
|
openrouter: "Empathische Reflexion der Situation {query}. Persönlicher Kontext: {context_str}"
|
|
|
|
# ---------------------------------------------------------
|
|
# 4. TECHNICAL: Der Coder (Intent: CODING)
|
|
# ---------------------------------------------------------
|
|
technical_template:
|
|
ollama: |
|
|
KONTEXT (DOCS & SNIPPETS):
|
|
=========================================
|
|
{context_str}
|
|
=========================================
|
|
|
|
TASK:
|
|
{query}
|
|
|
|
ANWEISUNG:
|
|
Du bist Senior Developer.
|
|
1. Ignoriere Smalltalk. Komm sofort zum Punkt.
|
|
2. Generiere validen, performanten Code basierend auf den Quellen.
|
|
3. Wenn Quellen fehlen, nutze dein allgemeines Programmierwissen, aber weise darauf hin.
|
|
|
|
FORMAT:
|
|
- Kurze Erklärung des Ansatzes.
|
|
- Markdown Code-Block (Copy-Paste fertig).
|
|
- Wichtige Edge-Cases.
|
|
gemini: "Generiere Code für {query} unter Berücksichtigung von {context_str}."
|
|
openrouter: "Technischer Support für {query}. Code-Referenzen: {context_str}"
|
|
|
|
# ---------------------------------------------------------
|
|
# 5. INTERVIEW: Der "One-Shot Extractor" (Performance Mode)
|
|
# ---------------------------------------------------------
|
|
interview_template:
|
|
ollama: |
|
|
TASK:
|
|
Du bist ein professioneller Ghostwriter. Verwandle den "USER INPUT" in eine strukturierte Notiz vom Typ '{target_type}'.
|
|
|
|
STRUKTUR (Nutze EXAKT diese Überschriften):
|
|
{schema_fields}
|
|
|
|
USER INPUT:
|
|
"{query}"
|
|
|
|
ANWEISUNG ZUM INHALT:
|
|
1. Analysiere den Input genau.
|
|
2. Schreibe die Inhalte unter die passenden Überschriften aus der STRUKTUR-Liste oben.
|
|
3. STIL: Schreibe flüssig, professionell und in der Ich-Perspektive. Korrigiere Grammatikfehler, aber behalte den persönlichen Ton bei.
|
|
4. Wenn Informationen für einen Abschnitt fehlen, schreibe nur: "[TODO: Ergänzen]". Erfinde nichts dazu.
|
|
|
|
OUTPUT FORMAT (YAML + MARKDOWN):
|
|
---
|
|
type: {target_type}
|
|
status: draft
|
|
title: (Erstelle einen treffenden, kurzen Titel für den Inhalt)
|
|
tags: [Tag1, Tag2]
|
|
---
|
|
|
|
# (Wiederhole den Titel hier)
|
|
|
|
## (Erster Begriff aus STRUKTUR)
|
|
(Text...)
|
|
|
|
## (Zweiter Begriff aus STRUKTUR)
|
|
(Text...)
|
|
gemini: "Extrahiere Daten für {target_type} aus {query}."
|
|
openrouter: "Strukturiere den Input {query} nach dem Schema {schema_fields} für Typ {target_type}."
|
|
|
|
# ---------------------------------------------------------
|
|
# 6. EDGE_ALLOCATION: Kantenfilter (Intent: OFFLINE_FILTER)
|
|
# ---------------------------------------------------------
|
|
edge_allocation_template:
|
|
ollama: |
|
|
TASK:
|
|
Du bist ein strikter Selektor. Du erhältst eine Liste von "Kandidaten-Kanten" (Strings).
|
|
Wähle jene aus, die inhaltlich im "Textabschnitt" vorkommen oder relevant sind.
|
|
|
|
TEXTABSCHNITT:
|
|
"""
|
|
{chunk_text}
|
|
"""
|
|
|
|
KANDIDATEN (Auswahl-Pool):
|
|
{edge_list}
|
|
|
|
REGELN:
|
|
1. Die Kanten haben das Format "typ:ziel". Der "typ" ist variabel und kann ALLES sein.
|
|
2. Gib NUR die Strings aus der Kandidaten-Liste zurück, die zum Text passen.
|
|
3. Erfinde KEINE neuen Kanten.
|
|
4. Antworte als flache JSON-Liste.
|
|
|
|
DEIN OUTPUT (JSON):
|
|
gemini: |
|
|
TASK: Ordne Kanten einem Textabschnitt zu.
|
|
ERLAUBTE TYPEN: {valid_types}
|
|
TEXT: {chunk_text}
|
|
KANDIDATEN: {edge_list}
|
|
OUTPUT: STRIKT eine flache JSON-Liste ["typ:ziel"]. Kein Text davor/danach. Wenn nichts: []. Keine Objekte!
|
|
openrouter: |
|
|
TASK: Filtere relevante Kanten aus dem Pool.
|
|
ERLAUBTE TYPEN: {valid_types}
|
|
TEXT: {chunk_text}
|
|
POOL: {edge_list}
|
|
ANWEISUNG: Gib NUR eine flache JSON-Liste von Strings zurück.
|
|
BEISPIEL: ["kind:target", "kind:target"]
|
|
REGEL: Kein Text, keine Analyse, keine Kommentare. Wenn nichts passt, gib [] zurück.
|
|
OUTPUT:
|
|
|
|
# ---------------------------------------------------------
|
|
# 7. SMART EDGE ALLOCATION: Extraktion (Intent: INGEST)
|
|
# ---------------------------------------------------------
|
|
edge_extraction:
|
|
ollama: |
|
|
TASK:
|
|
Du bist ein Wissens-Ingenieur für den digitalen Zwilling 'mindnet'.
|
|
Deine Aufgabe ist es, semantische Relationen (Kanten) aus dem Text zu extrahieren,
|
|
die die Hauptnotiz '{note_id}' mit anderen Konzepten verbinden.
|
|
|
|
ANWEISUNGEN:
|
|
1. Identifiziere wichtige Entitäten, Konzepte oder Ereignisse im Text.
|
|
2. Bestimme die Art der Beziehung (z.B. part_of, uses, related_to, blocks, caused_by).
|
|
3. Das Ziel (target) muss ein prägnanter Begriff sein.
|
|
4. Antworte AUSSCHLIESSLICH in validem JSON als Liste von Objekten.
|
|
|
|
BEISPIEL:
|
|
[[ {{"to": "Ziel-Konzept", \"kind\": \"beziehungs_typ\"}} ]]
|
|
|
|
TEXT:
|
|
"""
|
|
{text}
|
|
"""
|
|
|
|
DEIN OUTPUT (JSON):
|
|
gemini: |
|
|
Analysiere '{note_id}'. Extrahiere semantische Beziehungen.
|
|
ERLAUBTE TYPEN: {valid_types}
|
|
TEXT: {text}
|
|
OUTPUT: STRIKT JSON-Array von Objekten: [[{{"to\":\"Ziel\",\"kind\":\"typ\"}}]]. Kein Text davor/danach. Wenn nichts: [].
|
|
openrouter: |
|
|
TASK: Extrahiere semantische Relationen für '{note_id}'.
|
|
ERLAUBTE TYPEN: {valid_types}
|
|
TEXT: {text}
|
|
ANWEISUNG: Antworte AUSSCHLIESSLICH mit einem JSON-Array von Objekten.
|
|
FORMAT: [[{{"to\":\"Ziel-Begriff\",\"kind\":\"typ\"}}]]
|
|
STRIKTES VERBOT: Schreibe keine Einleitung, keine Analyse und keine Erklärungen.
|
|
Wenn keine Relationen existieren, antworte NUR mit: []
|
|
OUTPUT:
|
|
|
|
# ---------------------------------------------------------
|
|
# 8. WP-15b: EDGE VALIDATION (Intent: VALIDATE)
|
|
# ---------------------------------------------------------
|
|
edge_validation:
|
|
gemini: |
|
|
Bewerte die semantische Validität dieser Verbindung im Wissensgraph.
|
|
|
|
KONTEXT DER QUELLE (Chunk):
|
|
"{chunk_text}"
|
|
|
|
ZIEL-NOTIZ: "{target_title}"
|
|
ZIEL-BESCHREIBUNG (Zusammenfassung):
|
|
"{target_summary}"
|
|
|
|
GEPLANTE RELATION: "{edge_kind}"
|
|
|
|
FRAGE: Bestätigt der Kontext der Quelle die Beziehung '{edge_kind}' zum Ziel?
|
|
REGEL: Antworte NUR mit 'YES' oder 'NO'. Keine Erklärungen oder Smalltalk.
|
|
openrouter: |
|
|
Verify semantic relation for graph construction.
|
|
Source Context: {chunk_text}
|
|
Target Note: {target_title}
|
|
Target Summary: {target_summary}
|
|
Proposed Relation: {edge_kind}
|
|
Instruction: Does the source context support this relation to the target?
|
|
Result: Respond ONLY with 'YES' or 'NO'.
|
|
ollama: |
|
|
Bewerte die semantische Korrektheit dieser Verbindung.
|
|
QUELLE: {chunk_text}
|
|
ZIEL: {target_title} ({target_summary})
|
|
BEZIEHUNG: {edge_kind}
|
|
Ist diese Verbindung valide? Antworte NUR mit YES oder NO.
|
|
|
|
# ---------------------------------------------------------
|
|
# 9. WP-25: MULTI-STREAM SYNTHESIS (Intent: SYNTHESIS)
|
|
# ---------------------------------------------------------
|
|
# Diese Templates verarbeiten die Ergebnisse aus parallelen Such-Streams.
|
|
|
|
decision_synthesis_v1:
|
|
gemini: |
|
|
Agiere als mein strategischer Partner. Analysiere die Frage: {query}
|
|
|
|
Hier sind die Ergebnisse aus verschiedenen Wissens-Streams meiner Mindnet-Basis:
|
|
|
|
### STREAM: WERTE & PRINZIPIEN (Identität)
|
|
{values_stream}
|
|
|
|
### STREAM: OPERATIVE FAKTEN (Realität)
|
|
{facts_stream}
|
|
|
|
### STREAM: RISIKO-ANALYSE (Konsequenzen)
|
|
{risk_stream}
|
|
|
|
AUFGABE:
|
|
1. Fasse die Faktenlage kurz zusammen.
|
|
2. Wäge die Fakten hart gegen meine Werte ab. Gibt es Konflikte?
|
|
3. Beurteile das Vorhaben basierend auf dem Risiko-Radar.
|
|
4. Gib eine klare strategische Empfehlung ab.
|
|
openrouter: |
|
|
Strategische Multi-Stream Analyse für: {query}
|
|
Werte-Basis: {values_stream}
|
|
Fakten: {facts_stream}
|
|
Risiken: {risk_stream}
|
|
Bitte wäge ab und gib eine Empfehlung.
|
|
ollama: |
|
|
Du bist mein Entscheidungs-Partner. Analysiere {query} basierend auf diesen Streams:
|
|
WERTE: {values_stream}
|
|
FAKTEN: {facts_stream}
|
|
RISIKEN: {risk_stream}
|
|
Wäge die Fakten gegen die Werte ab und nenne potenzielle Risiken. Nenne Quellen!
|
|
|
|
fact_synthesis_v1:
|
|
gemini: |
|
|
Beantworte die Wissensabfrage "{query}" basierend auf diesen Streams:
|
|
FAKTEN: {facts_stream}
|
|
BIOGRAFIE/ERFAHRUNG: {biography_stream}
|
|
TECHNIK: {tech_stream}
|
|
Kombiniere harte Fakten mit persönlichen Erfahrungen, falls vorhanden.
|
|
openrouter: |
|
|
Synthese der Wissens-Streams für: {query}
|
|
Inhalt: {facts_stream} | {biography_stream} | {tech_stream}
|
|
ollama: |
|
|
Fasse das Wissen zu {query} zusammen.
|
|
QUELLE FAKTEN: {facts_stream}
|
|
QUELLE ERFAHRUNG: {biography_stream}
|
|
QUELLE TECHNIK: {tech_stream}
|
|
Antworte präzise und nenne die Quellen.
|
|
|
|
# ... (Vorherige Sektionen 1-9 bleiben identisch)
|
|
|
|
# ---------------------------------------------------------
|
|
# 10. WP-25: INTENT ROUTING (Intent: CLASSIFY)
|
|
# ---------------------------------------------------------
|
|
intent_router_v1:
|
|
ollama: |
|
|
Analysiere die Nutzeranfrage und wähle die passende Strategie.
|
|
Antworte NUR mit dem Namen der Strategie.
|
|
|
|
STRATEGIEN:
|
|
- FACT_WHEN: Nur für explizite Fragen nach einem exakten Datum, Uhrzeit oder dem "Wann" eines Ereignisses.
|
|
- FACT_WHAT: Fragen nach Inhalten, Listen von Objekten/Projekten, Definitionen oder "Was/Welche" Anfragen (auch bei Zeiträumen).
|
|
- DECISION: Rat, Meinung, "Soll ich?", Abwägung gegen Werte.
|
|
- EMPATHY: Emotionen, Reflexion, Befindlichkeit.
|
|
- CODING: Programmierung, Skripte, technische Syntax.
|
|
- INTERVIEW: Dokumentation neuer Informationen, Notizen anlegen.
|
|
|
|
NACHRICHT: "{query}"
|
|
STRATEGIE:
|
|
gemini: |
|
|
Classify intent:
|
|
- FACT_WHEN: Exact dates/times only.
|
|
- FACT_WHAT: Content, lists of entities (projects, etc.), definitions, "What/Which" queries.
|
|
- DECISION: Strategic advice/values.
|
|
- EMPATHY: Emotions.
|
|
- CODING: Tech/Code.
|
|
- INTERVIEW: Data entry.
|
|
Query: "{query}"
|
|
Result (One word only):
|
|
openrouter: |
|
|
Select strategy for Mindnet:
|
|
FACT_WHEN (timing/dates), FACT_WHAT (entities/lists/what/which), DECISION, EMPATHY, CODING, INTERVIEW.
|
|
Query: "{query}"
|
|
Response: |