Einstieg in lokale Artificial Intelligence (AI) mit Ollama

Bewusstsein für einen Wissens-Agenten mit lokaler KI
und Wikipedia/Wikidata als Wissensquelle (Teil 9)

Dr.-Ing. Erhard Henkes, Stand: 04.12.2025

Zurück
 

siehe auch: https://github.com/ehenkes/functional-self-model

 

Einleitung

In diesem Tutorial geht es um eine etwas ungewöhnliche Frage:
Wie kann man einem ganz normalen Desktop-Programm so etwas wie ein „funktionales Bewusstsein“ geben?
Basis ist eine lokale KI (z. B. Ollama + LLM) und Wikidata/Wikipedia-RAG?

Gemeint ist damit kein echtes menschliches Bewusstsein, sondern ein technisches Konstrukt, das dem Programm erlaubt, über sich selbst „Buch zu führen“ und sich anzupassen:

Aus einem einfachen Frage-Antwort-Tool mit Feedback soll dadurch ein Wissensagent werden, der

All das läuft offline auf dem eigenen PC, mit lokalem LLM und Wikipedia-RAG im Hintergrund. Wikidata und Wikipedia werden noch(!) online abgefragt.

In den folgenden Abschnitten zeige ich Schritt für Schritt, wie man diese Idee in C# / WinForms praktisch umsetzt.

Wir beginnen mit einfachen Zustandswerten und enden bei Reflexion, Langzeitstatistik und einem „Charakterprofil“ für den Wissensagenten.

 

Voraussetzungen / Installationen

    Für diesen Teil benötigen wir die gleiche Umgebung wie in den vorherigen Kapiteln:

    Software

    Modelle in Ollama

    Für das Tutorial reicht ein kleines, schnelles Modell, z. B.:

    ollama pull gemma3:4b
    
    	

    Optional kannst du größere Modelle testen, aber für die Wikipedia-Abfragen bringen sie in der Praxis kaum Vorteile, erzeugen aber deutlich höhere Latenzen.
    Unser Modell arbeitet eher als Moderator und als Übersetzer. Das gesicherte Wissen kommt aus Wikidata und Wikipedia.

    Zugriff auf Wikipedia

    Wir verwenden in diesem Teil die offizielle Wikipedia-API (REST), noch kein kiwix-serve und ZIM-File.
    Die Suche und die Artikelabrufe funktionieren mit HTTP-Requests – komplett kostenlos und ohne Registrierung.


Das System besteht aus den bekannten Bausteinen.

1. Wikidata-Client (Retrieval)

Der Wikidata-Client ruft die API auf und liefert passende Begriffe aus einer Datenbank


2. Wikipedia-Client (Retrieval)

Der Wikipedia-Client ruft die API auf und liefert drei Datentypen:

Diese beiden Wissens-Daten bilden die Basis für das RAG-System. Die lokale KI darf in speziellen Fällen auch ihren Kommentar abgeben, der wegen der üblichen Probleme (Halluzination, Zeithorizont) getrennt geloggt wird.


3. RAG-Engine (Augmentation)

Die RAG-Engine übernimmt die gesamte Aufbereitung der Wikidata/Wikipedia-Daten:

  1. Suchbegriffe erzeugen

  2. Artikel abrufen

  3. Artikel zerlegen (Chunking)

  4. Kontext für das KI-Modell aufbauen

  5. Antwort erzeugen (Generation)

  6. Faktenprüfung

Damit entstehen im besten Fall stabile, überprüfte Antworten, die exakt auf Wikidata/Wikipedia basieren. Halluzinationen werden unterdrückt.


4. WinForms User Interface (Interaktion & Streaming)

Das UI zeigt:

Der Benutzer kann mehrere Fragen stellen, ohne dass die Anwendung neu gestartet werden muss.

Der Benutzer kann (bisher) ein einfaches Feedback (gut/schlecht/neutral) zurückgeben.

 


  • Für das "funktionale Bewusstsein" wurde folgendes Modell entworfen:

    E-Ebene (Erlebens- / Verarbeitungs-Schichten)

    E1 – Wahrnehmung & Normalisierung

    E2 – Weltzugriff (Wikipedia + Wikidata)

    E3 – Global Workspace

    E4 – Episoden & Memory

    E5 – FactGuard / Verifikation

    E6 – Metakognition / „funktionales Bewusstsein“

    E7 – Schnittstellen & Persona


    F-Ebene (Fehler, Feedback & Lernen)

    F1 – Fehler erkennen

    F2 – Reflexion pro Episode

    F3 – Darstellung & Portabilität des „Charakters“

    F4 – Erweiterte Routing- & Antwortstrategien (Ideen-Ebene)

     

    1. Was meine ich überhaupt mit „funktionalem Bewusstsein“?

  • „Bewusstsein“ = Self-Monitoring + Memory + Anpassung, nicht Esoterik.

  •  

    2. SelfModel + ValueSystem = innerer Zustand

     

     

     

    4. Episoden & MemoryBank: Erleben und Erinnern

    Hier kommen wir einem Bewusstsein näher:

    Wichtig ist, dass man versteht, dass die Antworten nicht spurlos verschwinden.
    Das System baut eine Erfahrungshistorie auf, die für zukünftige Entscheidungen genutzt wird.
    "Vergessen" oder "Verdrängen" ist bisher noch nicht implementiert.

     

    5. Reflexion (Ebene E6.x): Metakognition

    Das ist der Kern des „Bewusstseins“. Daher betrachten wir dies etwas ausführlicher:

    a) Reflexion über die aktuelle Antwort (E6.1 / E6.2)

    Du kannst das so formulieren:

    Nach jeder Antwort schaut der Agent gewissermaßen auf sich selbst und bewertet:
    „War meine Antwort vollständig? Habe ich den Kontext gut genutzt? War ich beim Thema?“

    b) Auto-ReAsk (E6.3)

    Kurz erklären, keine Details zu allen Schwellwerten.

    c) Self-Distortion Guard (E6.4)

     

    6. LongTermSelfModel: Langzeitgedächtnis über Fehler & Stärken

     

    Und ganz wichtig:

    Das ist einer der stärksten „Bewusstseins-Hooks“:

    Der Agent lernt aus Hunderten Episoden nicht nur Fakten, sondern etwas über sich selbst.

     

    7. Persona & Selbstbericht (E7 + Easter Eggs)

    Mittels Eastereggs-Fragen kann man einen Blick ins Innenleben des Programms werfen:

    Psychologisch hat das etwas Menschliches:
    Hier zeigt das Programm, wie aus nackten JSON-Werten ein subjektiv wirkender Selbstbericht wird.
    Natürlich ist das nur ein reiner Funktionsoutput, aber er fühlt sich wie Innensicht an.

     

    Zusammenfassung: Elemente des „funktionalen Bewusstseins“

  • Motivation – Was ist funktionales Bewusstsein?

    Kein echtes Bewusstsein mit Gefühlen oder Qualia, sondern ein technisches Konstrukt:
    Der Wissensagent beobachtet sein eigenes Verhalten, bewertet seine Antworten und passt sich an.
    Das ist der Unterschied zu einem einfachen Frage rein → Antwort raus.
    Bewertung und Anpassung wirken als Regelkreis.

  • Innerer Zustand – SelfModel + ValueSystem

    Das SelfModel hält Zustände wie Fokus, Müdigkeit, Neugier, Vorsicht (ConfidenceBias).

    Das ValueSystem gewichtet Ziele wie Genauigkeit, Effizienz, Kohärenz.
    Zusammen steuern sie, wie der Agent antwortet (vorsichtig, knapp, ausführlich, gründlich).

  • Globaler Arbeitsbereich – GlobalWorkspace

    Ein zentraler „Arbeitsbereich“, in dem alles zusammenläuft: Frage, Suchbegriffe, Artikel, Chunks, Wikidata- und Wikipedia-Fakten, rohe Antwort, geprüfte Antwort, Reflexion.

    Alle Module lesen und schreiben in diesen gemeinsamen Zustand – wie ein internes „Blackboard“ für den Agenten.

  • Erleben & Erinnern – Episoden + MemoryBank

    Jede Anfrage wird als Episode gespeichert (Frage, Kontexte, Antworten, Scores, Bias, Reflexion).

    Die MemoryBank kann ähnliche Episoden wiederfinden.
    So entsteht eine Art Erfahrungs-Gedächtnis, aus dem der Agent langfristig lernen kann.

  • Selbstbeobachtung – Reflexion, ContextErrorScore, Self-Distortion Guard

    Nach jeder Antwort reflektiert das System:

    War ich beim Thema? Habe ich den Kontext gut genutzt? War die Antwort vollständig?
    Daraus entstehen Kennzahlen wie ContextErrorScore & ReflectionScore.
    Der Self-Distortion Guard erkennt gefährliche Fälle (z. B. „schöne, aber unbelegte“ Antworten) und schaltet den Agenten intern vorsichtiger.

  • Langzeit-Ich – LongTermSelfModel + ApplyLearningRules

    Ein Langzeitmodell sammelt Statistiken über Themen (Politik, Technik, …), Fehlertypen und Stärken.

    ApplyLearningRules passt anhand dieser Langzeitdaten die Strategie an – z. B. weniger Neugier bei vielen Halluzinationen oder mehr Effizienz bei vielen sicheren Treffern.
    Der Agent lernt nicht nur Fakten, sondern auch etwas über sich selbst.

  • Subjektive Stimme – Easter Eggs als Fenster nach innen

    Befehle wie „Wie geht es dir?“ oder „Zeig mir deine Fehlerbilanz“ verwandeln den internen Zustand in einen quasi-subjektiven Bericht.

    Das ist kein echtes Fühlen, aber es wirkt wie eine Innensicht: der Agent „erzählt“ von Fokus, Müdigkeit, Neugier, Fehlerbilanz und Stärken.



  • Hier ist mein aktuelles Programm zum Testen: Stand 03.12.2025:

    WikipediaRagWinForms_Consciousness_DE_EN_ES.zip  (Version 0.0.4, nur zum Experimentieren, keine Gewähr oder Garantie)

    Voraussetzung: Windows 10/11, Ollama mit gemma3:4b (empfohlen) und gemma3:12b (nur bei 16 GB VRAM)

    Wichtig: Reset-Mechanismus -
    Wenn der Wissens-Agent „neu geboren“ werden soll

    Das System lernt über viele Fragen hinweg:

    SelfModel, ValueSystem, LongTermSelfModel und die Episoden-Historie wachsen mit jeder Anfrage.

    Das ist gewollt – manchmal möchte man aber wieder bei Null anfangen, z. B.:

    Dafür wurde ein Hard-Reset des Bewusstseins eingebaut (wie bei Men in Black).


    Was der Hard-Reset macht

    Der Hard-Reset setzt im Kern den gesamten inneren Zustand zurück:

    Technisch bedeutet das: die entsprechenden JSON-Dateien werden überschrieben bzw. neu angelegt und der ConsciousnessController startet wieder wie beim allerersten Programmstart.

    Wann sollte man den Reset nutzen?

    Wichtig: Ein Hard-Reset löscht das gelernte Verhalten – der Agent beginnt wieder „naiv“ und muss sich durch neue Episoden + ApplyLearningRules schrittweise neu einstellen.
    Für normale Nutzung reicht es, den Agenten einfach arbeiten zu lassen und gelegentlich sein Profil zu exportieren (Backup) statt ständig zu resetten.

    Wie geht es genau?

    Reset per ragconfig.json (empfohlen)

    1. Programm beenden (WikipediaRagWinForms.exe darf NICHT laufen).

    2. Programmordner öffnen (Wo sich WikipediaRagWinForms.exe befindet, liegen auch die JSON-Dateien, z. B.:
      WikipediaRagWinForms.exe
      ragconfig.json
      selfmodel.json
      selfmodel_longterm.json
      values.json
      episodes.json
      workspace_last.json
      localAI.json
      ...

    3. ragconfig.json mit einem Texteditor öffnen
      (z. B. Notepad, Notepad++, VS Code, …).

    4. Eintrag HardResetOnStartup auf true setzen

      Suche in der Datei nach der Zeile: "HardResetOnStartup": false,
      und ändere sie nach: "HardResetOnStartup": true, (Achtung: Kommas nicht löschen, sonst ist die JSON ungültig.)

    5. Datei speichern und Editor schließen.

    6. Programm neu starten
      Dabei passiert Folgendes:

  • selfmodel.json → auf Defaultwerte zurückgesetzt

  • Danach setzt das Programm HardResetOnStartup automatisch wieder auf false.
    Der Reset ist also einmalig – beim nächsten Start läuft alles normal weiter, aber mit „frisch geborenem“ Agenten.

    Alternativ kann man die obigen json-Files löschen. Das Programm setzt diese dann neu auf.


    Anmerkungen:

    Problematisch ist noch die RAG-Pipeline. Das Bewusstsein selbst funktioniert in dieser Grundversion bereits gut, lässt sich aber weiter verbessern im Sinne der User.
    Bitte selbst mit diesem Programm experimentieren! Feedback ist erwünscht.
    Am besten hier: https://www.c-plusplus.net/forum/topic/355411/funktionales-bewusstsein-f%C3%BCr-ein-programm-mit-lokaler-ki/6

    Da dies m.E. ein
     sehr interessantes Gebiet ist, bin ich an Diskussionen vor allem zum funktionalen Bewusstsein interessiert.
    Eine Mitarbeit an diesem Projekt ist ebenfalls möglich.
     


    Hier geht es weiter