# config/prompts.yaml — Final V2.6.0 (WP-15b Candidate-Validation) # WP-20: Optimierte Cloud-Templates zur Unterdrückung von Modell-Geschwätz. # FIX: Explizite Verbote für Einleitungstexte zur Vermeidung von JSON-Parsing-Fehlern. # WP-15b: Integration der binären edge_validation für den Two-Pass Workflow. # 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.