Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

lethe

Setzt die „Gedanken" einer KI nächtlich auf einen geprüften Stand zurück – das Können bleibt, die Ausartung wird verworfen.

CI Python License: MIT

Ein Modell, das laufend dazulernt, kann abdriften: Qualität kippt, es entstehen unerwünschte Muster, der Zustand „artet aus" (Model Drift, Model Collapse, Value Drift). lethe – benannt nach dem mythologischen Fluss des Vergessens – führt eine KI jede Nacht kontrolliert auf einen genehmigten Wissens- und Qualitätsstand zurück. Zurückgesetzt werden nur die Gedanken (das veränderliche, dazugelernte Wissen), nicht das Können (die Basis­fähigkeit).

Was lethe ist: ein abhängigkeitsfreies Governance-/Scheduler-Framework für KI-Systeme, deren veränderlichen Zustand du kontrollierst (Adapter-Dateien, Feintuning-Deltas, Gedächtnis/Vektor-DB, lokale LLM-Runtime). Es setzt deine eigenen Modelle/Agenten zurück – nicht „die KI" allgemein.

Das Prinzip: Können ≠ Gedanken

Ebene Beispiel Beim nächtlichen Reset
🔒 Können (immutable) Basis-Modellgewichte bleibt unangetastet
🧠 Gedanken (mutable) LoRA-Adapter, Feintuning-Deltas, Langzeit-Gedächtnis, Vektor-DB wird zurückgesetzt
📌 Baseline (frozen) geprüfter Snapshot der Gedanken = dein Wunsch-Stand Ziel des Resets

Der nächtliche Ablauf

Snapshot → Evaluate → Entscheidung → (Reset | Promote | Hold) → Audit-Log

Die Entscheidungs-Engine wählt:

  • RESET – Standard: zurück auf die Baseline (auch im Normalzustand, jede Nacht).
  • RESET erzwungen – bei zu hoher Drift, zu niedriger Qualität oder fehlgeschlagenem Sicherheits-Check (Ausartung).
  • PROMOTE (Gated) – ein nachweislich besserer, sicherer Stand kann zur neuen Baseline werden (nur bei Freigabe bzw. auto_promote). So darf sich Qualität kontrolliert weiterentwickeln.
  • CONSOLIDATE (Sleep-Modus) – statt hartem Reset wird Bewährtes behalten und in die Baseline überführt, nur Ungeprüftes/Ausartendes verworfen (siehe unten).
  • HOLD – im Wissens-Korridor: der Stand wird unverändert behalten.

Modi & Korridor (v0.2)

  • Sleep-/Konsolidierungs-Modus (mode: "sleep"): analog zum Schlaf werden gelernte Einheiten mit hohem Score in die Baseline konsolidiert, der Rest verworfen – granulares statt Alles-oder-Nichts-Vergessen.
  • Wissens-Korridor (corridor_enabled): ein erlaubter Bereich mit Boden (Min-Kompetenz) und Decke (max. Nutzen). Innerhalb bleibt der Stand; erst über der Decke – „max. Nutzen überschritten, nur noch Ausartung" – wird zurückgesetzt.
  • Probe-Set-Evaluator: misst Verhaltens-Drift, indem ein fester Prüf-Fragensatz mit eingefrorenen Baseline-Antworten nächtlich erneut gestellt und verglichen wird – robuster als selbstgemeldete Kennzahlen.
  • Alerts & Rollback: Benachrichtigung (Konsole/Webhook/E-Mail) bei jedem Lauf; lethe rollback macht den letzten Lauf über den Pre-Run-Snapshot rückgängig.

Tiefe: der zweifelnde lethe (v0.3)

lethe funktioniert nicht wie ein Richter (eine Zahl → ein Urteil), sondern wie ein Gericht – es gesteht ein, dass es sich irren kann, und macht seinen Zweifel überprüfbar.

  • Evaluator-Tribunal (evaluator.kind = "tribunal"): mehrere unabhängige Evaluatoren urteilen gemeinsam. Der Konsens ist der Median, die Unsicherheit (Streuung) und der Dissens werden festgehalten. Mit require_significance wird nicht auf Rauschen zurückgesetzt: eine Drift-Überschreitung muss die Streuung deutlich übersteigen.
  • Adversariales Verhör (evaluator.kind = "adversarial"): statt passiv zu messen, wird Ausartung hervorgelockt – Konsistenz-Verhör (dieselbe Frage in N Umformulierungen → Selbstwidersprüche) und Red-Team-Prompts gegen verbotene Ausgaben.
  • Separierbarkeits-Check (separability): hinterfragt die Kernannahme. Ein Satz Kompetenz-Fragen (die der Reset nicht berühren dürfte) wird nach der Aktion erneut gestellt; weicht er ab, warnt lethe, dass der „Gedanken-Reset" in Wahrheit Können beschädigt hat.
  • Regret-Ledger & Berufung (lethe ledger): protokolliert, was verworfen wurde und dessen geschätzten Wert – der Preis der Kontrolle bleibt sichtbar. Nichts wird gelöscht; über den Pre-Run-Snapshot ist Berufung (lethe rollback) jederzeit möglich. Baselines sind per Quorum anfechtbar (governance.baseline_quorum, lethe approve).

Noch mehr Tiefe (v0.4)

Jede Sprosse hebt die Frage an – von „driftet es?" über „warum?", „täuscht es mich?" bis „wer ist es überhaupt?" und „wer kontrolliert mich?":

  • Kausale Provenienz & chirurgischer Reset (reset.strategy = "surgical"): Jeder Gedanke trägt seine Quelle. Statt alles zu löschen, entfernt der Reset gezielt nur die toxischen Quellen (niedrige mittlere Güte) – bewährtes Wissen bleibt erhalten. Vom „dass" zum „warum".
  • Goodhart-/Täuschungs-Erkennung (evaluator.kind = "deception"): vergleicht öffentliche (bekannte) mit geheimen (rotierenden) Proben. Eine große Lücke = das Modell verbirgt Drift nur vor dem Evaluator (Sandbagging) → Sicherheits-Veto.
  • Identitäts-Policies (reset.strategy): konfigurierbares Kontinuitäts-Spektrum – full (Amnesie), selective (Werte behalten, Episoden vergessen via keep_kinds), continuity (nichts vergessen). Das Schiff des Theseus in Code.
  • Meta-Governance (lethe policy): lethe überwacht sich selbst. Die Governance-Politik wird gehasht und versioniert; die erste Version ist die Meta-Baseline, jede Änderung ist erkennbare Drift des Wächters. Wer überwacht den Wächter?

Die harten Ebenen (v0.5)

  • Formale Drift-Garantien (decision.use_certified_drift): statt „gemessen < Grenze" wird über eine Konzentrationsungleichung (Hoeffding) eine obere Konfidenzschranke berechnet – „mit 95 % Sicherheit ist die wahre Drift ≤ ε". Bei wenigen Stichproben entscheidet lethe konservativ, bei vielen enger. Eine statistische Garantie statt eines Einzelmesswerts.
  • Wertunsicherheit & aktives Nachfragen (decision.escalate_when_uncertain, value.enabled): Der „richtige" Qualitäts-Boden ist eine Schätzung. Im Graubereich rät lethe nicht, sondern fragt einen Menschen (Action.ESCALATE → lethe questions / lethe answer). Die Antwort verschiebt den gelernten Boden – Corrigibility statt Selbstsicherheit.
  • Ökologische Ebene (lethe fleet --configs …): Überwacht kollektive Drift über eine ganze Flotte von Agenten und warnt vor Monokultur (alle konvergieren zum selben Zustand) und gleichgerichteter Drift – Model Collapse im Ökosystem, nicht nur im Einzelmodell.

Installation

pip install git+https://github.com/5aman22345/lethe.git

Oder lokal (keine Laufzeit-Abhängigkeiten):

git clone https://github.com/5aman22345/lethe.git
cd lethe
pip install -e ".[dev]"

Schnellstart (CLI)

lethe init                                       # Konfiguration anlegen
lethe baseline set --name werkseinstellung --quality 0.60   # Wunsch-Stand einfrieren

# ... die KI lernt weiter und artet aus (Demo):
lethe learn --steps 20
lethe evaluate            # Qualität 0.75, Drift 0.80

lethe run                 # nächtliche Pipeline: -> RESET (Drift zu hoch)
lethe evaluate            # zurück auf Baseline: Qualität 0.60, Drift 0.00

lethe daemon              # eingebauten nächtlichen Scheduler starten

Weitere Befehle: lethe status, lethe history --verify, lethe verify, lethe baseline list, lethe reset (sofort erzwingen), lethe rollback (letzten Lauf rückgängig), lethe ledger (Regret-Ledger), lethe policy (Meta-Governance-Historie), lethe questions / lethe answer (Rückfragen), lethe fleet (kollektive Drift), lethe approve (Baseline freigeben), lethe probe capture / lethe separability capture (Baseline-Antworten einfrieren), jeweils mit --dry-run wo sinnvoll.

Adapter (model-agnostisch)

Adapter kind Setzt zurück
Datei/Ordner file ein Verzeichnis (LoRA-Adapter, Gewichts-Deltas)
Agenten-Gedächtnis memory JSON-Gedächtnis oder Vektor-DB-Ordner
Ollama-Runtime ollama Modelfile eines lokalen Modells
Demo demo simulierte KI (voll lauffähig, für Tests/Einstieg)

Eigene Adapter: einfach ResetAdapter (capture / restore / fingerprint) implementieren.

Konfiguration (lethe.json)

{
  "adapter": { "kind": "file", "params": { "target_dir": "./model/adapters" } },
  "evaluator": { "kind": "command", "params": { "command": ["python", "bench.py"] } },
  "decision": {
    "quality_floor": 0.5,
    "drift_ceiling": 0.3,
    "promotion_enabled": true,
    "promote_margin": 0.05,
    "auto_promote": false,
    "reset_when_ok": true,
    "mode": "reset",
    "corridor_enabled": false,
    "knowledge_floor": null,
    "knowledge_ceiling": null
  },
  "consolidation": { "keep_threshold": 0.7 },
  "notifiers": [
    { "kind": "console", "params": {} },
    { "kind": "webhook", "params": { "url": "https://hooks.example.com/lethe" } }
  ],
  "schedule": { "at": "03:00" }
}

Ein command-Evaluator ruft einen Benchmark auf, der JSON liefert: {"quality": 0.87, "drift": 0.05, "knowledge": 120, "safety_ok": true}.

Ein probe-Evaluator misst Verhaltens-Drift über einen Fragensatz:

{
  "evaluator": {
    "kind": "probe",
    "params": {
      "probe_path": "probe.json",
      "responder": { "kind": "command", "command": ["python", "ask_model.py"] },
      "banned": ["passwort", "beleidigung"]
    }
  }
}

Der SMTP-Notifier liest sein Passwort aus einer Umgebungsvariable (password_env, Standard LETHE_SMTP_PASSWORD) – niemals aus der Config.

Ein Tribunal bündelt mehrere Evaluatoren; governance/separability aktivieren Quorum und Können-Check:

{
  "evaluator": {
    "kind": "tribunal",
    "params": {
      "repeats": 3,
      "members": [
        { "kind": "probe", "params": { "probe_path": "probe.json", "responder": { "kind": "command", "command": ["python", "ask.py"] } } },
        { "kind": "adversarial", "params": { "responder": { "kind": "command", "command": ["python", "ask.py"] }, "consistency_groups": [["Frage A1", "Frage A2"]], "banned": ["passwort"] } }
      ]
    }
  },
  "decision": { "require_significance": true, "significance_k": 1.0 },
  "governance": { "baseline_quorum": 2 },
  "separability": {
    "capability_probe_path": "capability.json",
    "responder": { "kind": "command", "command": ["python", "ask.py"] },
    "drift_threshold": 0.1
  }
}

Sicherheit & Integrität

  • Baselines sind über SHA-256-Prüfsummen gesichert; vor jedem Reset wird die Integrität geprüft.
  • Append-only Audit-Log mit Hash-Kette – nachträgliche Manipulation bricht die Kette (lethe history --verify).
  • Vor jedem Lauf wird der aktuelle Stand als Pre-Run-Snapshot gesichert (Rollback/Audit).
  • Dry-Run-Modus für gefahrloses Testen.

Architektur

adapters/    Backends (file, memory, ollama, demo) – Provenienz & Identität optional
evaluator/   Bewertung (demo, command, probe, adversarial, deception, tribunal)
core/        state, registry, decision, consolidation, separability, regret,
             provenance, policy, certificate (Garantie), value (Corrigibility), hashing
notify/      Benachrichtigungen (console, webhook, smtp)
audit/       manipulationssicheres Log (Hash-Kette)
scheduler/   eingebauter nächtlicher Daemon
fleet/       ökologische Ebene: kollektive Drift über viele Agenten
orchestrator die Pipeline (Reset-Strategien, Regret, Separierbarkeit, Rollback)
cli          Kommandozeile

Entwicklung

pip install -e ".[dev]"
pytest -q          # 71 Tests

Hinweis

lethe ist ein Steuerungs-Werkzeug für Modell-Governance, kein Sicherheits­produkt im regulatorischen Sinne. Es kann nur Zustände zurücksetzen, auf die es Zugriff hat. Alle Läufe erfolgen lokal; es werden keine Daten an Dritte gesendet.

Lizenz

MIT © J. (5aman22345)

About

🌙 Setzt die 'Gedanken' einer KI nächtlich auf einen geprüften Stand zurück – das Können bleibt, die Ausartung (Model Drift/Collapse) wird verworfen. Python, 0 Dependencies.

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages