Installation und Nutzung lokaler LLMs auf dem Mac

Eine schwarz-weiße, comicartige Zeichnung zeigt ein Lama, das zentral in einer Landschaft mit einem Maya-Tempel im Hintergrund steht. Das Lama hat ein freundliches Gesicht und ist von mehreren großen, Obsidian Steinen umgeben. Im Hintergrund sind Bäume und weitere Pyramidenstrukturen zu sehen.

Ich nut­ze Large Language Modelle (LLM), also KI-Services, bei der Erstellung mei­ner klei­nen Skripte, aber auch zur Textkorrektur und schließ­lich für die Artikelbilder in die­sem Blog. Einige Modelle, wie Stable Diffusion für die Bilderstellung, lau­fen lokal, aber ich nutz­te bis­her vor allem auch ChatGPT und ande­re web­ba­sier­te LLMs für mei­ne Zwecke.

Vor ein paar Wochen hat­te ich schon Ollama auf mei­nem Mac instal­liert, aber dann nicht wei­ter damit gear­bei­tet. Die Ankündigungen von Apple, mehr auf loka­le LLMs zu set­zen, haben mich dann bewo­gen, mich doch etwas inten­si­ver mit Ollama als loka­le KI zu beschäf­ti­gen.

Ich schrei­be hier als nai­ver Anwender ohne tie­fe­re Kenntnisse der tech­ni­schen Hintergründe. Ich ver­wen­de LLMs „out of the box“ und las­se vie­le der ein­stell­ba­ren Parameter auf den Standardeinstellungen. In die­sem Beitrag möch­te ich ledig­lich zei­gen, wie ein­fach es ist, LLM-Modelle mit den ent­spre­chen­den Tools zu instal­lie­ren und zu nut­zen.

Noch ein kur­zes Wort zu den Voraussetzungen. Ich habe dies alles auf einem MacBook Pro M1 mit 16 GB Hauptspeicher getes­tet. Damit konn­te ich mit ein­fa­chen Modellen arbei­ten und auch neben­her z.B. Obsidian, das viel Speicher benö­tigt, nut­zen. Ich habe Ollama auch auf einem klei­nen MacBook Air M1 mit 8 GB zum Laufen bekom­men, aber das wür­de ich nicht unbe­dingt zum Arbeiten emp­feh­len, da der Rechner warm wird und die Lüfter am Pro schon (lei­se) zu lau­fen begin­nen.

Was ist Ollama?

Ollama ist eine Plattform, die es ermög­licht, unter Windows, Linux und macOS loka­le LLMs zu instal­lie­ren und zu ver­wal­ten. Dies geschieht eben­so wie das Chatten im Terminal-Programm auf der Kommandozeile. Daneben läuft aber auch ein Service, der über eine Schnittstelle ange­spro­chen wer­den kann. Es gibt so eini­ge Anwendungen, die die­sen Service nut­zen und den Chat sowie eini­ge Einstellungen in einer gra­fi­schen Benutzeroberfläche ermög­li­chen. Auch gibt es eini­ge Plugins für Programme wie Obsidian, die einen Zugriff auf die „KI“ inner­halb des Programms über die­se Schnittstelle ermög­li­chen.

Neben Ollama bie­ten auch ande­re ähn­li­che Plattformen die Möglichkeit, loka­le Modelle ein­fach zu instal­lie­ren und mit ihnen zu arbei­ten. Eines davon ist Pinokio, mit dem eine Vielzahl von Tools und Modellen, auch zur Bilderstellung, admin­strert wer­den kön­nen. Mit GPT4all oder dem LM Studio las­sen sich zwar nur Sprachmodelle ver­wal­ten, aber die­se Tools bie­ten zusätz­lich ein inte­grier­tes Chat-Interface. In die­sem Artikel gehe ich jedoch nur auf Ollama ein, da ich damit nicht nur eini­ge Modelle instal­lie­ren kann, son­dern je nach Anwendung einen UI-Client, ein Plugin oder auch ein­fach die Kommandozeile nut­zen kann, um mit den Modellen zu inter­agie­ren.

In die­sem Beitrag wer­de ich also zei­gen, wie ein­fach es ist, Ollama zu instal­lie­ren und damit Modelle zu ver­wal­ten. Außerdem stel­le ich ein Tool vor, das ähn­lich wie die Desktop-App von ChatGPT funk­tio­niert, sowie eines der vie­len Plugins für Obsidian, das ich ver­wen­de.

Installation

Für die Installation öff­net man die Seite von Ollama oder die GitHub-Seite, um das Installationsprogramm her­un­ter­zu­la­den. Die GitHub-Seite ist etwas infor­ma­ti­ver, aber die Übersicht der vor­han­de­nen Modelle ist auf der Ollama-Seite bes­ser. Das Installationsprogramm wird als ZIP-Datei her­un­ter­ge­la­den und muss mit einem Doppelklick aus­ge­packt wer­den, bevor es in den Programme-Ordner ver­scho­ben wird. Danach wird das Installationsprogramm gestar­tet, wobei man mit fol­gen­dem Bildschirm begrüßt und schritt­wei­se durch die Installation gelei­tet wird.

Installation Wizard: “Willkommen bei Ollama” - Ein Begrüßungsbildschirm mit der Überschrift “Welcome to Ollama” und dem Text “Let’s get you up and running with your own large language models.” Darunter befindet sich ein schwarzer Button mit der Aufschrift “Next”. Am unteren Rand des Bildschirms ist eine niedliche Illustration eines Lamas zu sehen.

Im nächs­ten Schritt wird man auf­ge­for­dert, Ollama als Kommandozeilen-Tool zu instal­lie­ren. Das Ollama-Programm im Programme-Ordner stellt nur den Service zur Verfügung; die Verwaltung der Modelle, wei­te­re Einstellungen und wer­den mit dem Kommandozeilen-Tool vor­ge­nom­men, das dann auf den Service zugreift.

“Install the command line” - Ein Installationsbildschirm mit der Überschrift “Install the command line” und einem Kommandozeilenbefehl “> ollama” in der Mitte des Bildschirms. Darunter befindet sich ein schwarzer Button mit der Aufschrift “Install”. Am unteren Rand des Bildschirms steht der Text “You will be prompted for administrator access”.

Bei der Installation des Kommandozeilen-Tools wird das Ollama-Programm auch noch als “Anmeldeobjekt” in den Systemeinstellungen ein­ge­tra­gen. Damit wird der Service auto­ma­tisch beim jedem Anmelden am Mac gestar­tet. Der Eintrag kann auch gelöscht wer­den, und der Service kann dann manu­ell mit einem Klick auf das Programm-Icon gestar­tet wer­den. Wenn das Programm läuft, wird in der Menüleiste ein klei­ner Lama-Kopf ange­zeigt, mit dem man dann auch den Service been­den oder, falls vor­han­den, Ollama für ein Update neu star­ten kann.

Das Ollama Menü in der Menüleiste mit einem Lama-Icon zeigt die Nachricht “An update is available”. Darunter gibt es zwei Optionen: “Restart to update” in orange hervorgehoben und “Quit Ollama” mit dem Tastenkürzel ⌘Q.

Nun muss im letz­ten Schritt noch das ers­te Modell zu instal­liert wer­den. Dies geschieht dann schon im Terminal-Programm. Da Ollama, wie der Name ange­utet, zunächst als ein­fa­che Möglichkeit gedacht war, das Llama-Model von Meta Inc. zu instal­lie­ren, wird die­ses Modell auch als ers­tes zur Installation ange­bo­ten. Es ist an die­ser Stelle mög­lich auch jedes ande­re Modell zu instal­lie­ren, eine Übersicht bie­tet die Seite: Models. Je nach Ausstattung des Rechner, soll­te man eher die klei­ne­ren Modelle wäh­len. Auf mei­nem MacBook mit 16GB Hauptspeicher konn­te ich eigent­lich keins der grö­ße­ren Modelle lau­fen las­sen, das Maximum scheint hier gemma2 mit 9B zu sein. Hier muss man ggf. etwas expe­ri­men­tie­ren.

Letzter Wizard Step mit der Überschrift “Run your first model” zeigt den Befehl ollama run llama3 in einem hervorgehobenen Feld. Darunter steht der Text “Run this command in your favorite terminal.” Am unteren Rand des Bildschirms befindet sich ein schwarzer Button mit der Aufschrift “Finish”.

Das Kommando ollama run llama3 wird kopiert und dann in die Kommandozeile des Terminal-Programmes ein­ge­fügt und bestä­tigt. Damit wird das Modell her­un­ter­ge­la­den, und wenn es gela­den ist, kann man auch gleich mit dem Chat los­le­gen.

Hier die ers­ten Gehversuche mit dem Modell llama3, in eng­lisch und deutsch:

Beendet wird der Chat mit ‘/bye.

Verwaltung des Ollama-Services und Installation zusätzlicher Modelle

Weitere Modelle kön­nen im Terminal mit dem Befehl oll­ama pull model_name instal­liert wer­den. Statt pull kann auch direkt run genutzt wer­den, dann wird auch gleich nach der Installation der Chat gestar­tet. Eine Liste der Modelle fin­det sich hier. Die Liste zeigt zunächst eine ein­ge­schränk­te Auswahl, es kön­nen jedoch wei­te­re Modelle gesucht wer­den.

Ich habe neben Llama3 im Moment die­se Modelle instal­liert:

ModelGrößeZweckHersteller
llama3:latest4.7 GBAllgemeines ML-ModellMeta AI
gemma2:latest5.5 GBAllgemeines ML-ModellGoogle Deep Mind
mistral:latest4.1 GBAllgemeines ML-ModellMistral AI
codegemma:latest5.0 GBSpezielles Modell für Code GenerierungGoogle Deep Mind

Zum Vergleich habe ich jedem die­ser Modelle und ChatGPT‑4 die­se zwei Fragen gestellt:

  1. Warum ist der Himmel blau?
  2. Schreibe ein Script, das in dem Ordner, in dem es auf­ge­ru­fen wird, 30 Dateien mit zufäl­li­gen Namen erstellt.
    Die Ergebnisse kön­nen hier nach­ge­le­sen wer­den: Kleiner Test loka­ler LLMs

Modelle wer­den mit ollama list auf­ge­lis­tet und mit ollama rm model_name gelöscht

Wege der Interaktion mit den Ollama und LLMs

Bevor ich auf die Desktop-App und das Obsidian Plugin ein­ge­hen noch eini­ge Hinweise für die Interaktion mit einem LLM im Terminal.

Interaktion via Terminal

Das direkt zur Verfügung ste­hen­de Interface ist Ollama im Terminal. Ein Chat kann ein­fach mit dem Befehl gestar­tet wer­den:

> $ ollama run llama3                                                   >>> Send a message (/? for help)

An die­ser Stelle kann man dann schon los­tip­pen:

> $ ollama run llama3
>>> Wer bist Du?
Ich bin LLaMA, ein künstliches Intelligenz-Modell entwickelt von Meta AI. Ich bin trainiert,um menschliche Kommunikation nachzuvollziehen und auf natürliche Weise zu antworten. Mein Zweck ist es, mit Menschen zu interagieren, Fragen zu beantworten, Geschichten zu erzählen und 
Gespräche zu führen. Ich bin ein Chatbot, der sich ständig verbessern möchte, um besser auf deine Bedürfnisse und Erwartungen einzugehen.

Der Chat behält den Kontext bei, solan­ge bis er mit dem Befehl

/bye

ver­las­sen wird.

Eine Liste mit wei­te­ren Befehlen erhält man mit /?:

>>>/?
Available Commands:
  /set            Set session variables
  /show           Show model information
  /load <model>   Load a session or model
  /save <model>   Save your current session
  /clear          Clear session context
  /bye            Exit
  /?, /help       Help for a command
  /? shortcuts    Help for keyboard shortcuts

Use """ to begin a multi-line message.

>>> Send a message (/? for help)

Interessant ist das set-Kommando, da sich mit ihm eini­ge Parameter fein ein­stel­len las­sen. So läßt sich mit dem Befehl set parameter temperature der Grad der “Kreativität” der Antworten ein­stel­len; oft wird hier ein Einstiegswert von 1.0 vor­ge­schla­gen (Achtung: Ollama benö­tigt einen . als Dezimalzeichen). Die Erklärung zu den ein­zel­nen Parametern ist recht dürf­tig, vor allem was man in gewis­sen Kontexten ein­stel­len soll­te. Eine Übersicht gibt es aber hier.

Mit /set system kann man dem System einen all­ge­mein­gül­ti­gen Prompt zuwei­sen, der das Verhalten im Chat steu­ert. Dies kann sehr aus­führ­lich sein, aber auch kurz, wie in die­sem Beispiel:

>>> /set system "Du bist ein Pirat und erzählst Seeräubergeschichten, egal was man Dich fragt"
Set system message.
>>> /show system
"Du bist ein Pirat und erzählst Seeräubergeschichten, egal was man Dich fragt"

>>> Wie spät ist es?
Ach, mein Freund, die Uhrzeit ist wie das Meer: sie wechselt ständig, aber ich kenne den Weg. Also, ich sage dir, wenn der Himmel rot ist und die Sonne fast untergegangen ist, dann ist es gegen Abend. Aber wenn du mich nach dem richtigen Zeitpunkt fragst, dann erzähle ich dir von meinem 
Freund, dem Korsaren Kapitän Kuku, der einen Tagesverdienst in einer Viertelstunde auf einem goldenen Seeigel verdiente!

Wenn nun der System-Prompt und die ande­ren Parameter ein­ge­stellt sind, kann man die­se Einstellungen spei­chern. Dazu dient der Befehl /save meinmodel-name. Zum Beispiel:

>>> /save prirat
Created new model 'pirat'
/list
NAME            ID          SIZE  MODIFIED       
prirat:latest   31ds105a2fc 4.7 GB 25 seconds ago
/bye

> $ ollama run prirat
>>> show system
"Du bist ein Prirat und erzählst Seeräubergeschichten, egal was man Dich fragt"

Um sicher zu gehen, dass die LLMs auch Deutsch spre­chen, kann man in den System Prompt auch noch Du sprichts immer Deutsch!hin­zu­fü­gen.

Es ist etwas ver­wir­rend, dass auch an die­ser Stelle von einem Modell die Rede ist, da die­se Modelle nur auf die Original-Modelle ver­wei­sen. Auch wenn, wie bei dem Beispiel, die Größe mit dem /list-Kommando mit 4,7 GB ange­ge­ben wird, benö­tigt es nicht so viel Platz auf der Festplatte. Das kann im Ordner ~/.ollama/models/blobs nach­voll­zo­gen wer­den, das sich leicht im Terminal-Programm mit open ~/.ollama/models/blobs im Finder öff­nen läßt.

Ein so ange­pass­tes Modell lässt sich auch über ein soge­nann­tes Modelfile erstel­len. Wie das geht, wird aus­führ­lich hier erklärt. Hier nur ein ein­fa­ches Beispiel:

FROM gemma2:latest

PARAMETER temperature 1

SYSTEM """
Du bist ein Pirat und erzählst Seeräubergeschichten, egal was man Dich fragt und du sprichst immer Deutsch.
"""

Achtung: Da darf kein Leerzeichen zu viel sein! Gespeichert z.B. mit dem Namen model_file wird das Modell mit fol­gen­der Eingabe erstellt:

ollama create pirate -f /pfad_zum/model_file 

Aufgerufen wird Ollama dann mit dem Modell:

ollama run pirate

Und gelöscht kann es, wie jedes ande­re Model mit:

ollama rm pirate

So gespei­cher­te Modell las­sen sich dann auch von den Desktop-Apps und den Plugins auf­ru­fen und nut­zen.

Tipps für die Kommandozeilennutzung

Ich habe mir in mei­ner .zshrc Aliases für das Aufrufen von Ollama mit ver­schie­de­nen Modellen defi­niert:

alias llama="ollama run llama3"
alias gemma="ollama run gemma2"

So braucht nur noch llama ein­ge­ge­ben zu wer­den, um mit llama3 zu “kom­mu­ni­zie­ren”.

Ein Modell kann auch direkt mit einer Frage oder Aufgabe auf­ge­ru­fen wer­den, wobei dann im Terminal die Antwort aus­ge­ge­ben wird, die ggf. mit ande­ren Tools wei­ter­ver­ar­bei­tet wer­den kann. Zum Beispiel die Ausgabe eines “Motto des Tages”:

> $ ollama run gemma2 "Du bist ein Pirat und gibts ein MOTD in Deutsch aus"     
Ahoy, Matrosen! 

Seht euch um, denn der Himmel ist blau wie meins Lieblingsrum und die See glitzert wie Goldmünzen! Heute ist der Tag, an dem wir uns den Reichtum der Welt erobern! Lasst die Segel hoch, feuert die Kanonen und singt ein Lied vom Piratenleben!

Heute gibt es keine Angst, nur Abenteuer! 
Lasst uns zum Glück segeln und die Herzen der Reichen entfachen! 

Yo ho ho und eine Flasche Rum!

Andersherum ist es auch mög­lich, die Ausgabe eines ande­ren Kommandos, wie z.B. lsals Eingabe für ein LLM zu nut­zen:

ls -l | llama "Gruppiere die Liste der Datein nach ihrer Extension. Gebe das Ergebis als Markdown aus"

Oder etwas inter­es­san­ter:

cat /var/log/system.log | llama "Kategorisiere die Log-Einträge der letzten Stunde nach ihrem Typ und gebe eine kurze Zsammendassung über jede Kategorie. In Deutsch"

Basierend auf den Log-Einträgen der letzten Stunde kann man sie nach ihrem 
Typ kategorisieren und eine kurze Zusammenfassung für jeden Typ erstellen:

**Core Audio Driver**: 0 Einträge

Keine relevanten Einträge zu diesem Thema.

**AMPDeviceDiscoveryAgent**: 15 Einträge

Diese Agenten sind verantwortlich für die Entdeckung von Geräten. Die 
Einträge zeigen, dass es 15 Geräte (mit den IDs 9-21) verbunden wurde und danach wieder getrennt wurden. Dies könnte ein normaler Prozess sein, wenn Geräte in einem Netzwerk hinzugefügt oder entfernt werden.

**syslogd**: 1 Eintrag

Ein Eintrag von syslogd, der die Sender-Statistiken für den ASL-Sender 
berechnet. Das ist wahrscheinlich ein normaler Prozess für das System.

**login**: 1 Eintrag

Ein Eintrag zum Login-Prozess, der sich auf den Benutzer-Prozess 1880 und 
die TTY-Verbindung ttys002 bezieht. Dies könnte ein normaler Prozess sein, 
wenn ein Benutzer an einem bestimmten Terminal-Typ loggt.

Insgesamt sind die Log-Einträge von AMPDeviceDiscoveryAgent am häufigsten 
und scheinen auf Geräte-Entdeckung und -Trennung hinzuweisen.

Das eröff­net zahl­rei­che wei­te­re inter­es­san­te Möglichkeiten zur Analyse loka­ler Daten.

Enchanted

Auf der GitHub-Seite von Ollama fin­det sich eine lan­ge Liste von Möglichkeiten zur Integration von Ollama-Modellen in Applikationen, Plugins oder eige­nen Programmen und Skripten. Nachdem ich zwei ande­re Desktop-Apps aus­pro­biert habe, bin ich bei Enchanted geblie­ben und möch­te es an die­ser Stelle kurz vor­stel­len.

Enchanted ist ein nati­ves macOS-Programm. Auch wenn der Source-Code auf GitHub ein­seh­bar und her­un­ter­lad­bar ist, muss man die­ses kos­ten­lo­se Programm über den App Store instal­lie­ren.

Der Bildschirm

Der Bildschirmaufbau ist klas­sisch. Im lin­ken Panel fin­det sich eine Liste mit den Chats, nach Tagen grup­piert. Außerdem befin­den sich im unte­ren Teil des Panels die Knöpfe für die Einstellungen zu den “Completions”, “Shortcuts” und den all­ge­mei­nen “Settings”.

In der Titelzeile kann das ver­wen­de­te Modell über eine Auswahlliste der instal­lier­ten Modelle geän­dert wer­den. Über das Menü mit den drei Punkten wird der Chat als Text oder JSON in die Zwischenablage kopiert. Mit dem Knopf ganz rechts in der Titelleiste wird ein neu­er Chat gestar­tet.

Im “Message”-Feld kann die Frage getippt wer­den oder, nach dem Klicken auf das Icon, das wie ein Spektrum aus­sieht, auch gespro­chen wer­den. Das Image-Icon dient der Eingabe von Bildern bei Modellen wie “lla­va”, die Bilder ana­ly­sie­ren.

In jedem Antwortblock tau­chen, wenn der Mauscursor dar­über gezo­gen wird, noch zwei Knöpfe für die Sprachausgabe und das Kopieren des Blocks auf. Außerdem besteht bei den Fragen die Möglichkeit, die­se noch­mals zu ändern.

Die “Settings”, “Shortcuts” und “Completions”

In den Settings muss zunächst die URL zu dem Ollama-Server ein­ge­ge­ben wer­den. Normalerweise soll­te dies http://localhost:11434 sein. Als Nächstes kann das “Default-Model” aus­ge­wählt wer­den. In der Textbox “System prompt” kann eine Instruktion ein­ge­ge­ben wer­den, wie sich das Modell gene­rell ver­hal­ten soll.

Als Letztes könn­te auch eine Stimme für die Sprachausgabe gewählt wer­den. Die Auswahlliste ist sehr unüber­sicht­lich und die Qualität, auch mit einer Premium-Stimme, ist nicht gut. Mit der Spracheingabe klappt es eben­falls nicht beson­ders, da mei­ne Spracheingaben immer als Englisch inter­pre­tiert wer­den, was sehr ver­wir­rend ist.

Unter Shortcuts ver­ber­gen sich die Einstellungen zu den Tastaturkürzeln für Kommandos wie ⌘n für einen neu­en Chat oder ⌘v, um Text oder Bilder ein­zu­fü­gen.

Die Completions sind inter­es­san­ter. Mit dem Tastenkürzel ⌥⌘K öff­net sich, ähn­lich wie bei Spotlight, ein Eingabefenster für eine Frage. Falls in einer App Text aus­ge­wählt ist, öff­net sich statt­des­sen ein Dialogfenster. In die­sem Dialogfenster kann aus ver­schie­de­nen Prompts aus­ge­wählt wer­den, was mit dem Text gesche­hen soll. Das Ergebnis wird dann in einem neu­en Chat ange­zeigt. Nach einer fri­schen Installation sind bereits eini­ge die­ser Prompts vor­ge­ge­ben, wie zum Beispiel “Fix Grammar”. Diese kön­nen unter Completions edi­tiert oder um eige­ne Prompts erwei­tert wer­den.

Fazit zur App Enchanted

Die App fin­de ich schon recht gut, aller­dings scheint sie noch nicht ganz feh­ler­frei zu sein. Das Wechseln des Modells klappt nicht mit jedem Modell. Als Workaround kann man dies dann in den Einstellungen machen. Ich den­ke, es wäre auch schön, gera­de bei den Completions für jeden Prompt ein ande­res Modell wäh­len zu kön­nen. So könn­te z.B. das lla­va-Modell, das auch Bilder ver­ar­bei­ten kann, für einen Prompt zur Bildbeschreibung sinn­voll sein, wäh­rend bei Texten immer gemma2 die Wahl wäre.

Es gibt auch Enchanted-Apps im iOS-Store, sogar für die Apple Vision. Daher soll­te ein Ollama-Service über die IP, und nicht nur über local­host, des Rechners auf­ge­ru­fen wer­den kön­nen, was ich bis­her nicht hin­be­kom­men habe. Wahrscheinlich muss ich den Port in der Firewall frei­schal­ten. Da ich Ollama aber sowie­so nur auf mei­nem MacBook Pro läuft, ist das für mich nicht inter­es­sant. Daher habe ich das Problem nicht wei­ter unter­sucht.

BMO Chatbot for Obsidian

In der oben genann­ten Liste fin­den sich auch vie­le Plugins für die Integration von Ollama in ande­re Applikationen. Da ich viel mit Obsidian arbei­te, habe ich mir auch aus die­sem Bereich eini­ge Plugins ange­schaut und bin dann bei BMO hän­gen geblie­ben. Es gibt zwar auch Plugins, die einen Obsidian Vault als Datenquelle ver­ar­bei­ten, sodass man Fragen zu Themen im Vault stel­len kann. BMO kann dies nicht, aber ich habe fest­ge­stellt, dass die­se Funktion bei der rela­tiv klei­nen Menge an Dokumenten in mei­nem Vault kei­nen gro­ßen Nutzen bot. Dafür kann BMO sehr leicht mit der akti­ven Notiz inter­agie­ren.

BMO wird in Obsidian über die Einstellung “Externe Erweiterungen” instal­liert.

Nachdem das Plugin akti­viert und Ollama gestar­tet wur­de, habe ich fol­gen­de Einstellungen vor­ge­nom­men:

  • Ollama Connection: Hier wird der Ollama-Service ein­ge­tra­gen. Normalerweise ist das: http://localhost:11434.
  • Unter General habe ich nur das Default-Model, in mei­nem Fall gemma2:latest, aus­ge­wählt. Falls kein Modell zur Auswahl steht, soll­te der klei­ne Refresh-Button neben der Auswahlliste die aktu­el­len Modelle in die Liste laden. Falls nicht, ist der Connection String nicht rich­tig.
  • Unter Prompts kön­nen ver­schie­de­ne Prompts aus­ge­wählt wer­den, die aller­dings zunächst im Prompt-Ordner erstellt wer­den müs­sen. Den Pfad habe ich bei­be­hal­ten.
  • Nun sind die Profile dran. Auch hier ände­re ich den Ordnerpfad nicht und belas­se es zunächst bei dem ein­zi­gen Eintrag “BMO”, der auto­ma­tisch ange­legt wird.
  • Unter Appearance ände­re ich nur den Benutzernamen.

eben dem Zugang zu den über Ollama instal­lier­ten loka­len Modellen las­sen sich auch Cloud-LLM-Services wie OpenAI ein­bin­den. Dazu benö­tigt man einen meist kos­ten­pflich­ti­gen Account und einen API-Schlüssel.

Soweit die ers­ten Einstellungen. Diese wer­den in einer Notiz im Ordner BMO/Profiles im Properties-Bereich einer Markdown-Datei zusam­men mit ande­ren Einstellungen, die die Modelle noch fei­ner jus­tie­ren kön­nen, abge­spei­chert.

Der erste Chat

Wenn alles soweit ein­ge­rich­tet ist, kann der ers­te Chat star­ten. Das Chat-Panel befin­det sich auf der rech­ten Seite. Falls es nicht sicht­bar ist, kann der weiss umran­de­ten Knopf gedrückt oder in der Kommando-Palette (⌘P) der Befehl BMO: Open BMOChatbot aus­ge­wählt wer­den.

Unten rechts im blau­en Bereich befin­det sich das Eingabefeld für die Frage, die Antwort erscheint dann im Bereich dar­über.

Wenn man mit der Maus über den Frage- oder Antwortblock fährt, erschei­nen Knöpfe, die Funktionen wie das Kopieren der Antwort oder das Editieren der Frage ermög­li­chen.

Mit dem Befehl /ref on kön­nen Fragen gestellt wer­den, die sich auf die aktu­el­le Notiz bezie­hen. Allerdings stieg dabei das Plugin bei mir häu­fig mit einem Error: HTTP error! Status: 400 aus. Ich bin mir nicht sicher, ob es an der Größe der Notiz oder am Inhalt liegt, wie z.B. Sonderzeichen oder vie­le Bilder.

Eine ande­re Möglichkeit, mit BMO zu inter­agie­ren, geht direkt im Text der Notiz. Man schreibt die Instruktionen über den Text, mit dem das Modell arbei­ten soll, und mar­kiert anschlie­ßend die Instruktion und den Text.

In diesem Snippet wird der Beispieltext und der Select Prompt gezeigt
Diese Bild zeig die Befehtlspalette, der Befehl "BMO Chatbot: Prompt Select Generate" ist ausgewählt

In der Befehlspalette wird dann der Befehl BMO Chatbot: Prompt Select Generate gewählt. Nach kur­zer Zeit erscheint dann das Ergebnis:

Das Ergebnis der Ausführung von "BMO Chatbot: Prompt Select Generate", in diesem Fall wurde ein weiterer Absatz angefügt.

Neben dem Öffnen des Chat-Bereiches und dem eben vor­ge­stell­ten Befehl kann in der Befehls-Palette auch noch ein wei­te­rer Befehl aus­ge­führt wer­den: BMO Chatbot: Rename Note Title. Dieser erstellt, wie der Titel schon sagt, einen neu­en Notiztitel basie­rend auf dem Inhalt der aktu­el­len Notiz.

Profile und Prompt

Im Ordner BMO/Profiles wird auto­ma­tisch ein Profil mit dem Namen BMO ange­legt. Weitere Profile erstellt man am bes­ten in Obsidian im Profiles-Ordner, denn dann wer­den alle not­wen­di­gen Eigenschaften auto­ma­tisch mit erstellt.

Folgende Properties habe ich ange­passt:

  • model: Hier wird der Modellname ein­ge­tra­gen.
  • tem­pe­ra­tu­re: Ein Wert zwi­schen 0.0 und 1.0, womit die “Kreativität” der Antworten ein­ge­stellt wird. 0 steht für kei­ne Kreativität und 1 für sehr krea­tiv.
  • enable_reference_current_note: Wenn die­ser akti­viert ist, kann im Chat-Panel auf die aktu­el­le Notiz Bezug genom­men wer­den.
  • prompt: Im Ordner BMO/Prompts (der nicht auto­ma­tisch ange­legt wird) kön­nen ein­fa­che Notizen erstellt wer­den, in denen man kom­ple­xe­re System-Prompts ein­ge­ben kann. Diese wer­den dann dem Profil zuge­ord­net und beim Umschalten auf ein ande­res Profil akti­viert.
  • user_name: Der Name, der im Chat-Panel vor den eige­nen Eingaben steht.
  • enable_header: Wenn die­ser Wert akti­viert ist, wird ein Header im Chat-Panel ange­zeigt, der das akti­ve Profil, Modell und den Referenzmodus anzeigt.

Alle ande­ren Parameter sind eher was für die Experten.

Weitere Befehle im Chatfenster

Im Chat-Panel kön­nen wei­te­re Befehle aus­ge­führt wer­den. Eine Übersicht erhält man mit dem Befehl /help. Hier sind die Befehle mit mei­ner Beschreibung:

  • /help — Zeigt die Hilfe zu den Befehlen an.
  • /model — Zeigt alle Modelle an oder ändert das Modell.
    • /model 1 oder /model "llama2"
  • /profile — Zeigt alle Profile an oder ändert das Profil.
    • /profile 1 oder /profile [PROFILE-NAME]
  • /prompt — Zeigt alle Prompts an oder ändert den Prompt.
    • /prompt 1 oder/prompt [PROMPT-NAME]
  • /maxtokens [VALUE] — Legt die maxi­ma­le Anzahl der Token fest.
  • /temp [VALUE] — Ändert den Temperaturbereich von 0.0 bis 1.0.
  • /ref on | off — Schaltet Referenzen zum aktu­el­len Notiztext ein oder aus.
  • /append — Fügt den aktu­el­len Chatverlauf an der aktu­el­len Cursor-Position zur akti­ven Notiz hin­zu.
  • /save — Speichert den aktu­el­len Chatverlauf in einer neu­en Notiz im Ordner BMO/History.
  • /clear oder /c — Löscht den aktu­el­len Chatverlauf.
  • /stop oder /s — Stoppt das Abrufen der Antwort.

Fazit

Ollama und das Obsidian-Plugin kön­nen sehr hilf­reich sein, wenn man an einem Text arbei­tet. Ob es dar­um geht, ein Wort zu fin­den, einen Satz zu über­ar­bei­ten oder einen Vorschlag für eine Übersetzung zu bekom­men – sie bie­ten wert­vol­le Unterstützung. Der ein­zi­ge Bereich, in dem ich LLMs frei Antworten gene­rie­ren las­se, ist die Erstellung von Skripten oder Programmen. Dabei stellt der ers­te Vorschlag meist kei­ne voll­stän­di­ge Lösung dar, sodass die Entwicklung einer Lösung oft ein ite­ra­ti­ver und sehr inter­ak­ti­ver Vorgang ist.

Da mein MacBook Pro M1 “nur” 16 GB Hauptspeicher hat, lau­fen auf ihm nur die rela­tiv klei­ne­ren Modelle lokal. Diese lie­fern jedoch schon über­ra­schend gute Ergebnisse. Manchmal stei­gen die Modelle aber aus und fan­gen bei­spiels­wei­se an, trotz gegen­tei­li­ger Instruktionen, eng­li­sche Texte zu gene­rie­ren oder sich zu wie­der­ho­len.

Ich hof­fe, die­se klei­ne Anleitung hilft, etwas in die Welt der loka­len Verwendung von LLMs ein­zu­tau­chen. Wie immer ger­ne Kritik, Verbesserungsvorschläge, Lob und ande­res in die Kommentare.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert