KI mit privaten Dokumenten

Persönliche Informationen von einer KI verarbeiten lassen. Simpler geht es ja fast nicht mehr...

KI mit privaten Dokumenten
Photo by AbsolutVision / Unsplash

Für Firmen ist es oft nicht möglich, sich von künstlicher Intelligenz, wie z.B. ChatGPT, beraten zu lassen. Meistens verbieten es die Unternehmensvorgaben, geistiges Eigentum auf eine fremde Webseite hochzuladen.

Abhilfe schafft in dieser Situation nur eine KI, die unter der vollständigen Kontrolle des Unternehmens steht. Und über ollama habe ich ja bereits mehrfach berichtet.

open-webui ist für mich eine der besten Möglichkeiten, um mit ollama zu kommunizieren.

GitHub - open-webui/open-webui: User-friendly WebUI for LLMs (Formerly Ollama WebUI)
User-friendly WebUI for LLMs (Formerly Ollama WebUI) - open-webui/open-webui

Wie man bereits auf github sehen kann, ist die Liste der Funktionen sehr umfangreich. Ich werde daher nur ein paar davon vorstellen können.

Installation

Doch bevor wir diese Oberfläche nutzen können, müssen wir sie erst einmal installieren.

Windows-Nutzer können dies auch auf ihrem Computer ausprobieren. Der beste Start ist wohl hier:

Pinokio
AI Browser

Ich habe jedoch, wie üblich, den Weg über Docker gewählt, da ich mir diese Oberfläche später im Internet zur Verfügung stellen will.

Eigener Webserver mit offiziellen Zertifikaten
Der Basis-Artikel für alle folgenden Services, die ich hier demonstrieren werde…

Da ollama bereits in einem LXC-Container unter Proxmox läuft, packe ich open-webui einfach mit dazu:

version: '3'

services:
  openwebui:
    image: ghcr.io/open-webui/open-webui:main
    container_name: open-webui
    ports:
      - "3111:8080"
    environment:
      OLLAMA_BASE_URL: http://lxc-ollama:11434
    volumes:
      - ./open-webui:/app/backend/data
    restart: unless-stopped

Ein einfaches docker-compose up -d startet den Container. Ich gehe daher auf die URL http://lxc-ollama:3111, da ich auf diesem LXC-Container den Port 3111 für open-webui verwendet habe.

Los gehts

Hat man die Webseite aufgerufen, landet man auf einem Login-Screen. Da man noch keinen User angelegt hat, muss man natürlich erst einen erstellen. Das ist recht intuitiv. Wichtig zu wissen: Der erste angelegte User ist der Admin.

Man kann dabei festlegen, ob sich neue Benutzer registrieren dürfen. Und falls ja: Müssen sie in der obigen Einstellung von einem Admin aktiviert werden. Nutzer können auch dahingehend eingeschränkt werden, welche Modelle sie nutzen dürfen. Das ist natürlich besonders interessant, wenn die eigenen Kinder versuchen ihre Hausaufgaben so zu lösen. Wie wir später noch sehen werden, kann man auch eigene Modellfiles nutzen und darin verbieten, dass Hausaufgaben angefertigt werden. Stattdessen soll die KI nur dabei unterstützen. Und hier sind der Fantasie keine Grenzen gesetzt.

Alles, was ich bisher über das CLI mit ollama gemacht habe, lässt sich in open-webui auch leicht über die Einstellungen vornehmen:

Hier können neue Modelle eingebunden werden (ollama pull), sowie auch die Spracheingabe und Bildgenerierung (stable-diffusion).

GitHub - AUTOMATIC1111/stable-diffusion-webui: Stable Diffusion web UI
Stable Diffusion web UI. Contribute to AUTOMATIC1111/stable-diffusion-webui development by creating an account on GitHub.

Das Front-End

Geht man wieder zurück auf die Startseite von open-webui, sieht man folgendes:

Da ich ollama bereits mehrfach von der Console aus genutzt habe, sind schon viele Modelle vorhanden. Wie man sieht, wird aktuell llama2-uncensored:lastest verwendet. Wie von ChatGPT bekannt, kann man nun einfach loslegen und seine Fragen stellen. Llama2-uncensored ist heute etwa sechs Monate alt. Damit zwar deutlich neuer als ChatGPT. Aber es hat eben nur das Wissen bis zu diesem Zeitpunkt. Und es hat keinen Zugriff auf das Internet, da es ja lokal auf meinem Server läuft, oder?

Persönliche Inhalte hinzufügen

Für einen Test möchte ich wissen, wie open-webui funktioniert. Daher schreibe ich einfach mal die URL der open-webui Webseite in den Chat:

ollama schaut sich die Webseite an, und ich kann ab sofort Fragen dazu stellen. Das war mir bei der Erstellung meines Modellfiles für meinen Signal-Bot sehr nützlich. Denn es gibt sehr viele Parameter, die beeinflussen wie kreativ die Antworten von ollama ausfallen können. So habe ich also einfach gefragt, wie ich meinem Bot mehr Kreativität geben kann.

... antworte in der Sprache des ersten Posts. Die Webseite war auf englisch 😂

Persönliche Dokumente funktionieren auch!

Doch ich kann nicht nur Webseiten in den Chat einbinden. Auch Dokumente, Bilder und sogar Audiodateien lassen sich direkt in das Browserfenster werfen. Natürlich kann man sie dem Chat auch durch Klick auf "+" hinzufügen:

Mit dem richtigen Modell kann man dann entsprechende Fragen stellen, wie etwa: "Was siehst Du auf diesem Bild?".

Diese Dokumente sind dann aber nur für den einen Chat erreichbar. Will man sein Wissen in allen Chats zur Verfügung stellen, klickt man auf Dokumente und lädt sie dort hoch:

Wiederkehrende Aufgaben

Manchmal will man jedoch nur wissen, worum es in einem Dokument geht. Oder welche Deadlines in einer Konversation gesetzt wurden, die man besser nicht verpassen will...

Zu diesem Zweck kann man sich Prompts zusammenstellen, die sich dann mit vorangestelltem "/" aufrufen lassen. Und sie dürfen sogar Variablen enthalten!

Will ich also die Top N Themen eines Dokuments zusammengefasst haben, dann könnte ich schreiben: Fasse mir die top [anzahl] Themen des obigen Dokuments zusammen :

Habe ich einen größeren Text aus einem Dokument in meine Zwischenablage kopiert, kann ich selbst diesen in meinen Prompt automatisch einfügen lassen.

Wer Hausautomation mag, kann sich auch der Prompts aus der Community bedienen:

Neue Anwendungsmöglichkeiten

Ich unterstütze verschiedene Firmen dabei, ihre Unternehmenssicherheit zu erhöhen. Darunter eine, die sehr viele Standorte/Gebäude hat. Die Niederlassungen sind durch Firewalls und VPNs untereinander und mit der Außenwelt verbunden. Zu jedem Standort ist dokumentiert, welche Kunden und Netze an die Firewalls angebunden sind. Auch Auftragsdokumente, in denen die Endverbindungen beantragt wurden.

Zusammenhänge ausfindig machen

Findet nun ein Firmware-Update oder ein Hardware-Austausch statt, kann ich ollama fragen, was die Auswirkungen für die Kunden (und das Unternehmen selbst) sein werden. Dies ist eine enorme Hilfe, wenn es um die Koordination dieser Maßnahmen geht. Ich habe zum Beispiel die simple Frage an meine OPNsense gestellt: Was passiert, wenn ich das Interface mit der IP 192.168.188.1 down nehme?:

Neben der Frage, welche Kunden betroffen sind, wenn eine Firewall abgeschaltet wird, könnte das LLM auch vorhersagen, welche anderen Netzwerkkomponenten oder -dienste betroffen sein könnten. Es könnte potenzielle Ausfallzeiten und Serviceunterbrechungen vorhersagen.

Schwachstellen finden

ollama könnte auch potenzielle Sicherheitslücken oder Schwachstellen in den Firewall-Regeln identifizieren und Vorschläge zur Verbesserung der Sicherheit machen.

Compliance

Das LLM könnte überprüfen, ob die Firewall-Regeln und Routingtabellen den Compliance-Anforderungen entsprechen und Vorschläge zur Einhaltung von Standards wie z.B. PCI-DSS machen.

Firewallregeln erstellen lassen

Wenn der Bedarf einer Aussenstelle besteht, neue Verbindungen freischalten zu lassen, werden diese durch ein Anforderungsformular beauftragt. Da ollama jetzt durch open-webui die Syntax von z.B iptables, pf, Fortinet, paloalto und Checkpoint etc. kennt, kann die KI die Konfigurationsänderung vorbereiten und von einem Admin auf die beteiligten Firewalls ausrollen lassen.

Infrastructure as Code (IaC)

Wenn man von all seinen Routing-Instanzen die Konfigurationen einsammelt, kann man sich ein übersichtliches Bild über sein Netz generieren lassen. Gerade bei CISCO ist die Konfiguration der Komponenten scheinbar nurnoch mittels terraform zu handhaben. Da man auch diese Form der Administration einer KI beibringen kann, sehe ich hier großes Potential, wie das Personal unterstützt werden kann.

Support-Portal

Wenn man in einem Support-Portal mal auf der Seite des Support-Mitarbeiters sitzt, bemerkt man, wie oft die Kunden das gleiche Problem schildern. Meist verstehen sie nicht, wie Routing funktioniert. Auch hier kann ollama aus bekannten Dokumenten, FAQs und erfolgreich abgeschlossen Tickets die Antworten generieren, die einen Großteil der Kunden auf den richtigen Weg bringt.

Sicherheitslücken

Oft finden sich in Programmen, die aus dem Internet erreichbar sind, Sicherheitslücken. Diese kann eine KI suchen und Vorschläge zur Verbesserung machen. ChatGPT hat hier moralische Bedenken. Eine lokale KI hat diese jedoch nicht und ist gnadenlos. Schon die Unterstützung beim Code-Audit ist sehr hilfreich bei solch einer ermüdenden Tätigkeit und erkennt mögliche Zustände in Funktionen, die mir selbst nicht sofort aufgefallen sind.

Fazit

open-webui ist für mich ein Gamechanger. Ich habe diesem Projekt so lange keine Aufmerksamkeit geschenkt, da fast alle meiner Aufgaben mit Automation zu tun haben. Da ist ein Browserbasiertes Tool eher hinderlich.

Es hat mich jedoch enorm dabei unterstützt, meine persönlichen Daten einzupflegen, sodass meine automatisierten Tools jetzt auf diese Informationen zurückgreifen können.