This commit is contained in:
Lars 2025-12-23 19:05:43 +01:00
parent 0157faab89
commit 2c073c7d3c
2 changed files with 34 additions and 14 deletions

View File

@ -4,14 +4,20 @@ DESCRIPTION: Zentrale Pydantic-Konfiguration. Enthält Parameter für Qdrant,
Embeddings, Ollama, Google GenAI und OpenRouter. Embeddings, Ollama, Google GenAI und OpenRouter.
WP-20: Optimiert für Hybrid-Cloud Modus und Vektor-Synchronisation. WP-20: Optimiert für Hybrid-Cloud Modus und Vektor-Synchronisation.
WP-22: Integration von Change-Detection und Vocab-Paths. WP-22: Integration von Change-Detection und Vocab-Paths.
VERSION: 0.6.2 FIX: Hinzufügen von load_dotenv(), um Umgebungsvariablen aus .env aktiv zu laden.
VERSION: 0.6.3
STATUS: Active STATUS: Active
DEPENDENCIES: os, functools, pathlib DEPENDENCIES: os, functools, pathlib, python-dotenv
""" """
from __future__ import annotations from __future__ import annotations
import os import os
from functools import lru_cache from functools import lru_cache
from pathlib import Path from pathlib import Path
from dotenv import load_dotenv
# WP-20: Lade Umgebungsvariablen aus der .env Datei
# Muss vor dem Zugriff auf os.getenv erfolgen!
load_dotenv()
class Settings: class Settings:
# --- Qdrant Datenbank --- # --- Qdrant Datenbank ---
@ -23,9 +29,7 @@ class Settings:
DISTANCE: str = os.getenv("MINDNET_DISTANCE", "Cosine") DISTANCE: str = os.getenv("MINDNET_DISTANCE", "Cosine")
# --- Lokale Embeddings (Ollama & Sentence-Transformers) --- # --- Lokale Embeddings (Ollama & Sentence-Transformers) ---
# Modell für die Vektorisierung (z.B. nomic-embed-text)
EMBEDDING_MODEL: str = os.getenv("MINDNET_EMBEDDING_MODEL", "nomic-embed-text") EMBEDDING_MODEL: str = os.getenv("MINDNET_EMBEDDING_MODEL", "nomic-embed-text")
# Legacy Fallback Modellname
MODEL_NAME: str = os.getenv("MINDNET_MODEL", "sentence-transformers/all-MiniLM-L6-v2") MODEL_NAME: str = os.getenv("MINDNET_MODEL", "sentence-transformers/all-MiniLM-L6-v2")
# --- WP-20 Hybrid LLM Provider --- # --- WP-20 Hybrid LLM Provider ---
@ -35,7 +39,6 @@ class Settings:
# Google AI Studio (Direkt) # Google AI Studio (Direkt)
GOOGLE_API_KEY: str | None = os.getenv("GOOGLE_API_KEY") GOOGLE_API_KEY: str | None = os.getenv("GOOGLE_API_KEY")
GEMINI_MODEL: str = os.getenv("MINDNET_GEMINI_MODEL", "gemini-1.5-flash") GEMINI_MODEL: str = os.getenv("MINDNET_GEMINI_MODEL", "gemini-1.5-flash")
# Gemma-Modell für hohen Durchsatz bei der Ingestion
GEMMA_MODEL: str = os.getenv("MINDNET_GEMMA_MODEL", "google/gemma-2-9b-it:free") GEMMA_MODEL: str = os.getenv("MINDNET_GEMMA_MODEL", "google/gemma-2-9b-it:free")
# OpenRouter Integration # OpenRouter Integration
@ -58,12 +61,10 @@ class Settings:
DEBUG: bool = os.getenv("DEBUG", "false").lower() == "true" DEBUG: bool = os.getenv("DEBUG", "false").lower() == "true"
MINDNET_VAULT_ROOT: str = os.getenv("MINDNET_VAULT_ROOT", "./vault") MINDNET_VAULT_ROOT: str = os.getenv("MINDNET_VAULT_ROOT", "./vault")
MINDNET_TYPES_FILE: str = os.getenv("MINDNET_TYPES_FILE", "config/types.yaml") MINDNET_TYPES_FILE: str = os.getenv("MINDNET_TYPES_FILE", "config/types.yaml")
# WP-22: Dictionary für die Edge-Validierung
MINDNET_VOCAB_PATH: str = os.getenv("MINDNET_VOCAB_PATH", "vault/_system/dictionary/edge_vocabulary.md") MINDNET_VOCAB_PATH: str = os.getenv("MINDNET_VOCAB_PATH", "vault/_system/dictionary/edge_vocabulary.md")
# WP-22: Change Detection (Modus: "full" oder "body")
CHANGE_DETECTION_MODE: str = os.getenv("MINDNET_CHANGE_DETECTION_MODE", "full") CHANGE_DETECTION_MODE: str = os.getenv("MINDNET_CHANGE_DETECTION_MODE", "full")
# --- WP-04 Retriever Gewichte (Semantik vs. Graph) --- # --- WP-04 Retriever Gewichte ---
RETRIEVER_W_SEM: float = float(os.getenv("MINDNET_WP04_W_SEM", "0.70")) RETRIEVER_W_SEM: float = float(os.getenv("MINDNET_WP04_W_SEM", "0.70"))
RETRIEVER_W_EDGE: float = float(os.getenv("MINDNET_WP04_W_EDGE", "0.25")) RETRIEVER_W_EDGE: float = float(os.getenv("MINDNET_WP04_W_EDGE", "0.25"))
RETRIEVER_W_CENT: float = float(os.getenv("MINDNET_WP04_W_CENT", "0.05")) RETRIEVER_W_CENT: float = float(os.getenv("MINDNET_WP04_W_CENT", "0.05"))

View File

@ -1,5 +1,6 @@
# config/prompts.yaml — Final V2.4.0 (Hybrid & Multi-Provider Support) # config/prompts.yaml — Final V2.4.1 (Hybrid & Multi-Provider Support)
# WP-20: Optimierte Cloud-Templates bei unveränderten Ollama-Prompts. # WP-20: Optimierte Cloud-Templates.
# FIX: Technische Maskierung (Doppel-Klammern) für JSON-Stabilität bei identischem Inhalt.
system_prompt: | system_prompt: |
Du bist 'mindnet', mein digitaler Zwilling und strategischer Partner. Du bist 'mindnet', mein digitaler Zwilling und strategischer Partner.
@ -208,15 +209,33 @@ edge_allocation_template:
# --------------------------------------------------------- # ---------------------------------------------------------
edge_extraction: edge_extraction:
ollama: | ollama: |
Extrahiere Kanten als JSON: [{"to": "X", "kind": "Y"}]. TASK:
Text: {text} 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: | gemini: |
Führe eine semantische Analyse der Notiz '{note_id}' durch. Führe eine semantische Analyse der Notiz '{note_id}' durch.
Finde explizite und implizite Relationen. Finde explizite und implizite Relationen.
Antworte als JSON: [{"to": "Ziel", "kind": "typ", "reason": "begründung"}] Antworte STRIKT als JSON: [[{{"to": "Ziel", "kind": "typ", "reason": "begründung"}}]]
Keine Erklärungen, nur JSON. Keine Erklärungen, nur JSON.
Text: {text} Text: {text}
openrouter: | openrouter: |
Analysiere den Text für den Graphen. Identifiziere semantische Verbindungen. Analysiere den Text für den Graphen. Identifiziere semantische Verbindungen.
Output STRIKT als JSON-Liste: [{"to": "X", "kind": "Y"}]. Output STRIKT als JSON-Liste: [[{{"to": "X", "kind": "Y"}}]].
Text: {text} Text: {text}