{"id":16091,"date":"2024-03-02T21:54:03","date_gmt":"2024-03-02T20:54:03","guid":{"rendered":"https:\/\/polluxlabs.net\/?p=16091"},"modified":"2024-11-06T11:54:56","modified_gmt":"2024-11-06T10:54:56","slug":"mit-ollama-sprachmodelle-lokal-nutzen","status":"publish","type":"post","link":"https:\/\/polluxlabs.net\/raspberry-pi-projekte\/mit-ollama-sprachmodelle-lokal-nutzen\/","title":{"rendered":"Mit Ollama Sprachmodelle lokal nutzen"},"content":{"rendered":"\n

Hier auf Pollux Labs konntest du bereits dar\u00fcber lesen, wie du z.B. die API von OpenAI nutzt, um mit ChatGPT zu interagieren. Aber das geht auch lokal auf deinem eigenen Rechner<\/strong> \u2013 zwar nicht mit ChatGPT, daf\u00fcr jedoch mit anderen Sprachmodellen wie Mistral, Gemma, Llama2 und vielen anderen. Hierf\u00fcr nutzt du das Tool Ollama.<\/strong> In diesem Tutorial erf\u00e4hrst du, wie du es installierst, einrichtest und mit Python mit dem Modell deiner Wahl interagierst.<\/strong><\/p>\n\n\n\n

Ollama installieren<\/h2>\n\n\n\n

Wenn du einen Mac oder Windows benutzt, musst du Ollama erst hier auf der offziellen Webseite herunterladen<\/a>.<\/p>\n\n\n\n

\"Ollama<\/figure>\n\n\n\n

Falls du Linux verwendest, gib im Terminal den folgenden Befehl ein:<\/p>\n\n\n\n

curl -fsSL https:\/\/ollama.com\/install.sh | sh<\/code><\/pre>\n\n\n\n
<\/div>\n\n\n\n

Entpacke nach dem Download die ZIP-Datei (Mac) und starte das Programm oder starte direkt die .exe (Windows). Anschlie\u00dfend f\u00fchrt dich ein Wizard durch die n\u00e4chsten Schritte, damit du Ollama im Terminal verwenden kannst. Am Ende erh\u00e4ltst du den Befehl f\u00fcr einen ersten Test.<\/p>\n\n\n\n

<\/div>\n\n\n\n
\"Ollama-Wizard\"<\/figure>\n\n\n\n

Kopiere den Befehl und gib in im Terminal bzw. der Konsole ein. Anschlie\u00dfend wird das Sprachmodell Llama2<\/a> heruntergeladen. Dieses Modell stammt vom Facebook-Konzert Meta. Wie du auf dem Bild unten siehst, ist das mit 3,8 Gigabyte nicht gerade klein \u2013 achte also auf gen\u00fcgend Speicherplatz.<\/p>\n\n\n\n

\"Download<\/figure>\n\n\n\n
<\/div>\n\n\n\n

Ollama im Terminal verwenden<\/h2>\n\n\n\n

Um mit deinem ersten Sprachmodell (Llama2) loszulegen, kannst du direkt im selben Fenster bleiben. Du erh\u00e4ltst nach der erfolgreichen Installation eine Eingabeaufforderung, \u00fcber die du deine erste Frage stellen kannst \u2013 so wie du es vermutlich bereits von ChatGPT kennst. Nach wenigen Sekunden erh\u00e4ltst du dann die Antwort ebenfalls im Terminal:<\/p>\n\n\n\n

\"Llama2<\/figure>\n\n\n\n
<\/div>\n\n\n\n

Das funktioniert also schon einmal ganz gut. Das Beispiel oben ist auf Englisch \u2013 du kannst deine Fragen jedoch auch ebenso auf Deutsch stellen.<\/strong> Die Antwort erh\u00e4ltst du von Llama2 jedoch wiederum auf Englisch.<\/strong> Um Antworten auf Deutsch zu erhalten f\u00fcge deinem Prompt noch eine entsprechende Anweisung hinzu.<\/p>\n\n\n\n

Wenn du deine Session beenden m\u00f6chtest, gib einfach den Befehl \/bye<\/strong> ein.<\/p>\n\n\n\n

Ein anderes Sprachmodell in Ollama installieren<\/h3>\n\n\n\n

Du bist nat\u00fcrlich nicht auf Llama2 beschr\u00e4nkt. Auf der Ollama-Webseite<\/a> sowie auf deren GitHub-Seite<\/a> kannst du alle verf\u00fcgbaren Sprachmodelle einsehen. Auf letzterer erf\u00e4hrst du auch, wieviel Arbeitsspeicher du f\u00fcr die verschiedenen Modelle haben solltest. Versuche es doch als n\u00e4chstes einmal mit Mistral<\/a>, einem frei verf\u00fcgbaren franz\u00f6sischen Modell (das auch Deutsch kann). Gib hierf\u00fcr im Terminal folgenden Befehl ein, nachdem du deine aktive Session mit \/bye beendet hast:<\/p>\n\n\n\n

ollama run mistral<\/code><\/pre>\n\n\n\n
<\/div>\n\n\n\n

Nach der Installation kannst du mit Mistral interagieren, so wie du es vorher mit Llama2 getan hast.<\/p>\n\n\n\n

Das Sprachmodell von Mistral ist mit 4,1 GB sogar noch etwas gr\u00f6\u00dfer als Llama2. Es ist also hilfreich zu wissen, wie du installierte Modelle wieder loswirst. Ganz einfach \u2013 Um z.B. Llama2 zu entfernen, gib im Terminal den folgenden Befehl ein:<\/p>\n\n\n\n

ollama rm llama2<\/code><\/pre>\n\n\n\n
<\/div>\n\n\n\n

Falls du vergessen hast, welche Modelle du gerade installiert hast, hilft dir folgender Befehl weiter:<\/p>\n\n\n\n

ollama list<\/code><\/pre>\n\n\n\n
<\/div>\n\n\n\n

Ollama mit Python verwenden<\/h2>\n\n\n\n

Bis jetzt hast du „nur“ im Terminal mit deinem lokalen Sprachmodell kommuniziert. Du kannst aber hierf\u00fcr nat\u00fcrlich auch ein Python-Script verwenden, \u00e4hnlich wie ich es hier schon einmal f\u00fcr ChatGPT beschrieben habe<\/a>.<\/p>\n\n\n\n

Zun\u00e4chst musst du hierf\u00fcr die entsprechende Bibliothek installieren:<\/p>\n\n\n\n

pip install ollama<\/code><\/pre>\n\n\n\n
<\/div>\n\n\n\n

Erstelle nach der erfolgreichen Installation ein leeres Python-Script mit folgendem Inhalt:<\/p>\n\n\n\n

import<\/span> ollama<\/span>\nresponse<\/span> =<\/span> ollama<\/span>.chat<\/span>(model<\/span>=<\/span>'mistral'<\/span>, messages<\/span>=<\/span>[\n  {\n    'role'<\/span>: 'user'<\/span>,\n    'content'<\/span>: 'Welche Farben k\u00f6nnen B\u00e4ren haben? Antworte auf Deutsch.'<\/span>,\n  },\n])\nprint<\/span>(response<\/span>['message'<\/span>]['content'<\/span>])<\/path><\/path>
<\/div> <\/code><\/pre>\n\n\n\n
<\/div>\n\n\n\n

Im obigen Script ist wieder das Sprachmodell von Mistral hinterlegt. Falls du ein anderes verwendest, trage es in der zweiten Zeile hinter model=<\/strong> ein.<\/p>\n\n\n\n

Speiche die Datei nun ab und f\u00fchre sie aus. Vermutlich wirst du ziemlich lange warten m\u00fcssen, bis die Antwort erscheint. Das kannst du mit einem Stream verbessern \u2013 hierdurch erscheint die lange Antwort Wort f\u00fcr Wort zum Mitlesen. Verwende hierf\u00fcr den folgenden angepassten Code:<\/p>\n\n\n\n

import ollama\n\nstream = ollama.chat(\n    model='mistral',\n    messages=[{'role': 'user', 'content': 'Welche Farben k\u00f6nnen B\u00e4ren haben? Anworte auf Deutsch'}],\n    stream=True,\n)\n\nfor chunk in stream:\n  print(chunk['message']['content'], end='', flush=True)<\/code><\/pre>\n\n\n\n
<\/div>\n\n\n\n

Weitere Rollen verwenden<\/h2>\n\n\n\n

\u00c4hnlich wie bei ChatGPT kannst du auch in Ollama in deinen Rollen zuteilen. Wenn du also deine Antworten z.B. immer auf Deutsch erhalten m\u00f6chtest, hilft dir die Rolle system<\/strong> weiter. Dort kannst du die entsprechende Anweisung hinterlegen, sodass die Rolle user<\/strong> nur deine Frage enth\u00e4lt:<\/p>\n\n\n\n

messages=[{'role': 'user', 'content': 'Welche Farben k\u00f6nnen B\u00e4ren haben?'},\n          {'role': 'system', 'content': 'Antworte auf Deutsch'}],<\/code><\/pre>\n\n\n\n
<\/div>\n\n\n\n

Jetzt kennst du die Grundlagen, um mit Ollama auf deinem eigenen Rechner Sprachmodelle auszuf\u00fchren und in deine Projekte einzubinden. Es gibt nat\u00fcrlich noch viel mehr zu entdecken: Die verschiedenen Modelle besitzen alle unterschiedliche F\u00e4higkeiten \u2013 hier lohnt sich ein intensiver Blick, besonders da die Entwicklung nat\u00fcrlich nicht stehen bleibt.<\/p>\n\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

<\/p>\n\n\n\n

<\/p>\n","protected":false},"excerpt":{"rendered":"

Hier auf Pollux Labs konntest du bereits dar\u00fcber lesen, wie du z.B. die API von OpenAI nutzt, um mit ChatGPT zu interagieren. Aber das geht auch lokal auf deinem eigenen Rechner \u2013 zwar nicht mit ChatGPT, daf\u00fcr jedoch mit anderen Sprachmodellen wie Mistral, Gemma, Llama2 und vielen anderen. Hierf\u00fcr nutzt du das Tool Ollama. In …<\/p>\n

Mit Ollama Sprachmodelle lokal nutzen<\/span> Weiterlesen »<\/a><\/p>\n","protected":false},"author":1,"featured_media":16112,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"","site-content-layout":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","footnotes":""},"categories":[219],"tags":[223],"class_list":["post-16091","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-raspberry-pi-projekte","tag-mitglieder"],"acf":[],"wp-worthy-pixel":{"ignored":false,"public":"08f281c344ee4378ac64ef267656a7dc","server":"vg04.met.vgwort.de","url":"https:\/\/vg04.met.vgwort.de\/na\/08f281c344ee4378ac64ef267656a7dc"},"wp-worthy-type":"normal","_links":{"self":[{"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/posts\/16091"}],"collection":[{"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/comments?post=16091"}],"version-history":[{"count":1,"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/posts\/16091\/revisions"}],"predecessor-version":[{"id":17747,"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/posts\/16091\/revisions\/17747"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/media\/16112"}],"wp:attachment":[{"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/media?parent=16091"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/categories?post=16091"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/polluxlabs.net\/wp-json\/wp\/v2\/tags?post=16091"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}