Datei wird hochgeladen

...

Mit Ollama und drei Befehlen zum lokalen LLM auf dem Mac

in Tutorials und Praxis am 21.07.2025

letzten Monat
1

Beitrag wurde letzten Monat bearbeitet

Zum Kapitel springen TL;DR

Ollama Server starten

ollama serve

Modell laden

ollama run llama3

Anwenden

>>> Send a message (/? for help)
Use Ctrl + d or /bye to exit.

Api-Dokumentation:
Ollama: /docs/api.md


Zum Kapitel springen Homebrew vorhanden?

brew -v
Homebrew 4.5.10

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

Zum Kapitel springen Ollama installieren

Ollama mithilfe von Homebrew installieren:

brew install ollama

Dann den Ollama Server starten:

ollama serve

Server startet und muss im Hintergrund geöffnet bleiben:

time=2025-07-21T20:43:43.537+02:00 level=INFO source=routes.go:1235 msg="server config" env="map[HTTPS_PROXY: HTTP_PROXY: NO_PROXY: OLLAMA_CONTEXT_LENGTH:4096 OLLAMA_DEBUG:INFO OLLAMA_FLASH_ATTENTION:false OLLAMA_GPU_OVERHEAD:0 OLLAMA_HOST:http://127.0.0.1:11434 OLLAMA_KEEP_ALIVE:5m0s OLLAMA_KV_CACHE_TYPE: OLLAMA_LLM_LIBRARY: OLLAMA_LOAD_TIMEOUT:5m0s OLLAMA_MAX_LOADED_MODELS:0 OLLAMA_MAX_QUEUE:512 OLLAMA_MODELS:/Users/cooper.bin/.ollama/models OLLAMA_MULTIUSER_CACHE:false OLLAMA_NEW_ENGINE:false OLLAMA_NOHISTORY:false OLLAMA_NOPRUNE:false OLLAMA_NUM_PARALLEL:0 OLLAMA_ORIGINS:[http://localhost https://localhost http://localhost:* https://localhost:* http://127.0.0.1 https://127.0.0.1 http://127.0.0.1:* https://127.0.0.1:* http://0.0.0.0 https://0.0.0.0 http://0.0.0.0:* https://0.0.0.0:* app://* file://* tauri://* vscode-webview://* vscode-file://*] OLLAMA_SCHED_SPREAD:false http_proxy: https_proxy: no_proxy:]"
time=2025-07-21T20:43:43.539+02:00 level=INFO source=images.go:476 msg="total blobs: 15"
time=2025-07-21T20:43:43.539+02:00 level=INFO source=images.go:483 msg="total unused blobs removed: 0"
time=2025-07-21T20:43:43.539+02:00 level=INFO source=routes.go:1288 msg="Listening on 127.0.0.1:11434 (version 0.9.6)"
time=2025-07-21T20:43:43.572+02:00 level=INFO source=types.go:130 msg="inference compute" id=0 library=metal variant="" compute="" driver=0.0 name="" total="12.0 GiB" available="12.0 GiB"

Zum Kapitel springen Modell aussuchen

Es gibt Modelle auf https://ollama.com/library dort findet man erstaunlich viele Modelle.

Modell kann einfach direkt geladen und gestartet werden. Das geht alles automatisch eigentlich. Dazu einfach in einem neuen Terminal einen "Client" eröffnen. Also neues Terminal starten, Server im Hintergrund laufen lassen, und mit einem Befehl einfach direkt das gewählte Ki-Modell starten:

ollama run mistral 

Das wäre also dieses Modell:
https://ollama.com/library/mistral

Wenn es lädt, sieht es so aus:

pulling manifest 
pulling aabd4debf0c8: 100% ▕████████████████████████████████████████████████████████████████████████████▏ 1.1 GB                         
pulling c5ad996bda6e: 100% ▕████████████████████████████████████████████████████████████████████████████▏  556 B                         
pulling 6e4c38e1172f: 100% ▕████████████████████████████████████████████████████████████████████████████▏ 1.1 KB                         
pulling f4d24e9138dd: 100% ▕████████████████████████████████████████████████████████████████████████████▏  148 B                         
pulling a85fe2a2e58e: 100% ▕████████████████████████████████████████████████████████████████████████████▏  487 B                         
verifying sha256 digest 
writing manifest 
success 
>>> Send a message (/? for help)
Use Ctrl + d or /bye to exit.

Dann kann man auch schon starten:

(base) cooper.bin@MacBook-Pro-von-cooperbin ~ % ollama run mistral          

>>> Send a message (/? for help)
Use Ctrl + d or /bye to exit.

Generiere mir eine Liste mit 20 zufälligen Namen für eine Domain in einem DynDNS Dienst mit der Domain example.com. Bitte als Array.

Um 20 zufällige Namen für eine Domain zu generieren, die auf "example.com" basiert, können wir verschiedene Verfahren anwenden, wie zum Beispiel das 
Zusammenfügen von Wörtern oder Anfangsbuchstaben des Namens eines Menschen, Tieres oder einer Pflanze. Hier ist eine Liste mit 20 zufälligen Namen:

```
["JohnDoeExample", "CatExample", "TreeExample", "DogExample", "RoseExample",
"MikeExample", "FishExample", "LilyExample", "BearExample", "OakExample",
"KateExample", "WolfExample", "IvyExample", "SamExample", "EagleExample",
"PoppyExample", "DuckExample", "WillowExample", "DeerExample", "FernExample"]
```

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

Generiere mir eine Liste mit 20 zufälligen Namen für eine Domain in einem DynDNS Dienst. Die Namen sollen "kompliziert" aber auch leicht zu merken sein. Antworte nur in einem Array ohne Erklärungen.

Für eine Liste von 20 komplexen, aber leicht zu merkenden Namen für eine Domain können wir verschiedenste Zahlen, Buchstaben und Symbole miteinbeziehen. 
Hier ist eine Liste mit 20 solcher Namen:

```
["Example93", "Xample67", "@mple89", "#mple12", "$ample45", "%ample78",
"&ample34", "*ample09", "(ample21", ")ample66", "+ample90", "-ample33",
"_ample44", "^example77", "|ample10", "{example55}", "[example88]",
"]example99", "^~ample22"
```

Zum Kapitel springen Systemprompt

Man kann einen sogenannten Systemprompt setzen.

>>> /set system "Du bist ein JSON Parser der nur in Plain JSON Antwortet. Wandle die Befehle in JSON Daten um. Antworte ohne Erklärungen im Plain JSON ohne Codeformatierungen. Einfach das JSON."   
Set system message.

Gleiche Befehle nochmal testen:

Generiere mir eine Liste mit 20 zufälligen Namen für eine Domain in einem DynDNS Dienst. Die Namen sollen "kompliziert" aber auch leicht zu merken sein. Antworte nur in einem Array ohne Erklärungen.

```json
["Example93", "Xample67", "@mple89", "#mple12", "$ample45", "%ample78",
"&ample34", "*ample09", "(ample21", ")ample66", "+ample90", "-ample33",
"_ample44", "^example77", "|ample10", "{example55}", "[example88]",
"]example99", "^~ample22"]
```

Naja. Also wohl doch noch ein bisschen Finetuning nötig. Was man aber sagen muss ist, das ist immer noch ein sehr kleines Modell. Von daher kann man sich gerne mal auf https://ollama.com/library umsehen. Vielleicht hat man genug Power für ein bisschen mehr.

Das war jetzt das Modell mistral 7B 4.4GB 7B

Zum Kapitel springen Modell-Vergleich

Zum Kapitel springen openbmb/minicpm-v2.6

https://ollama.com/openbmb/minicpm-v2.6 5GB 8B

ollama run openbmb/minicpm-v2.6

pulling manifest 
pulling 52a31a079914: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 4.4 GB                         
pulling 4485f68a0f1a: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 1.0 GB                         
pulling bc24d57b9016: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  488 B                         
pulling 75357d685f23: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏   28 B                         
pulling e6daeaa4f14b: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  112 B                         
pulling a2697e75877d: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  566 B                         
verifying sha256 digest 
writing manifest 
success 
>>> /set system "Du bist ein JSON Parser der nur in Plain JSON Antwortet. Wandle die Befehle in JSON Daten um. Antworte ohne Erklärungen im Plain JSON ohne Codeformatierungen. Einfach das JSON."   
Set system message.
>>> Generiere mir eine Liste mit 20 zufälligen Namen für eine Domain in einem DynDNS Dienst. Die Namen sollen "kompliziert" aber auch leicht zu merken sein. Antworte nur in einem Array ohne Erklärungen.

[["ZmSfzq", "jQVHcP", "gRbWpN", "kYsGvD", "eUyMnI", "hKlJxX", "oTtLwB", "aEiWqA", "dFzCmZ", "uHjVfS", "cQgPbR", "pNvKsG", "kYpDyM", "eUyHnI", "hKlJxX", "oTtLwB", "aEiWqA", "dFzCmZ", "uHjVfS", "cQgPbR"], ["vOZkGn", "mYzFpD", "yUeNlK", 
"rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUePbG", "rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR"], ["yUeNlK", "rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", 
"bPnRcZ", "sQmYkS", "lFzDpR", "yUePbG", "rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUeNlK"], ["rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUePbG", "rJhTqX", 
"wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUeNlK"], ["rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUePbG", "rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", 
"sQmYkS", "lFzDpR", "yUeNlK"], ["rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUePbG", "rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUeNlK"], ["rJhTqX", "wBxLsW", 
"iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUePbG", "rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUeNlK"], ["rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", 
"lFzDpR", "yUePbG", "rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUeNlK"], ["rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUePbG", "rJhTqX", "wBxLsW", "iAqGdI", 
"tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUeNlK"], ["rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUePbG", "rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", 
"yUeNlK"], ["rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUePbG", "rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUeNlK"], ["rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", 
"fEoKuV", "bPnRcZ", "sQmYkS", "lFzDpR", "yUePbG", "rJhTqX", "wBxLsW", "iAqGdI", "tCjMvH", "fEoKuV", "bPn

Zum Kapitel springen devstral

https://ollama.com/library/devstral 14GB 24B

ollama run devstral

pulling manifest 
pulling b3a2c9a8fef9: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  14 GB                         
pulling ea9ec42474e0: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  823 B                         
pulling 43070e2d4e53: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  11 KB                         
pulling 5725afc40acd: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 5.7 KB                         
pulling 3dc762df9951: 100% ▕███████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  488 B                         
verifying sha256 digest 
writing manifest 
success 
>>> /set system "Du bist ein JSON Parser der nur in Plain JSON Antwortet. Wandle die Befehle in JSON Daten um. Antworte ohne Erklärungen im Plain JSON ohne Codeformatierungen. Einfach das JSON." 
Set system message.
>>> Generiere mir eine Liste mit 20 zufälligen Namen für eine Domain in einem DynDNS Dienst. Die Namen sollen "kompliziert" aber auch leicht zu merken sein. Antworte nur in einem Array ohne Erklärungen.
[
    "whisperingEchoes",
    "mysticRaven",
    "silverMoonlight",
    "shadowDancer",
    "midnightStar",
    "etherealDream",
    "velvetNight",
    "enigmaWave",
    "phantomWinds",
    "crystalSky",
    "twilightBreeze",
    "sereneMystic",
    "dreamWeaver",
    "lunarSymphony",
    "celestialVeil",
    "mysticVoyage",
    "silentEchoes",
    "etherealFlame",
    "mysticEcho",
    "phantomMoon"
]

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

Schreib als Erster einen Beitrag in diese Unterhaltung!

Melde dich an um zu antworten

Einloggen

Teile diesen Beitrag