Zum Hauptinhalt springen
Version: 2024.2.0

LocalAI

Generelle Informationen

Diese Anleitung dient nur dazu, Ihnen zu zeigen wie Sie eine OpenAI kompatible API lokal betreiben können. Bitte haben Sie dafür Verständnis, dass wir keinen Support dafür anbieten.

DocBee bietet ab der Version 2023.3 die Möglichkeit, OpenAI kompatible API anzubinden. Eine Möglichkeit so eine API lokal zu betreiben ist LocalAI.

Installation

Vorbereitung

Um LocalAI wie in dieser Anleitung beschrieben zu installieren und zu betreiben, benötigen Sie ein System mit mindestens 16 GB Arbeitsspeicher. Welches über eine öffentliche IP-Adresse erreichbar ist.

Bei unserer Beispiel-Installation handelt es sich um eine Linux VM

LocalAI

Um LocalAI zu installieren, gibt es mehrere Möglichkeiten die auch alle im Getting started von LocalAI beschrieben werden.

Wir haben uns für die Variante über Docker compose entschieden, dafür muss auf dem System Docker Engine und Docker compose installiert werden. Wie dies für Ihr System erfolgen kann nehmen Sie bitte der offiziellen Dokumentation von Docker.

Nachdem Docker installiert ist, können wir nun LocalAI auf das System kopieren, dies können Sie entweder über den Befehl git clone https://github.com/go-skynet/LocalAI machen oder Sie laden LocalAI als Zip-Datei herunter.

Für den Befehl git muss git ebenfalls installiert werden

Damit haben wir die Installation auch schon abgeschlossen und benötigen nun ein KI-Modell.

KI-Modell

Um ein KI-Modell im richtigen Format zu bekommen, kann Hugging Face aufgesucht werden, hier gibt es unzählige KI-Modelle in unterschiedlichsten Formaten.

Wir haben in unseren Tests die besten Ergebnisse mit dem Modell LeoLM Mistral erreicht. Dieses Modell gibt auch schon vorbereitet unter https://huggingface.co/TheBloke/em_german_leo_mistral-GGUF.

Hier gibt es wieder unterschiedliche Versionen, die je nach System gewählt werden sollte, höhere Zahlen bedeuten, dass mehr Arbeitsspeicher benötigt wird und die Ausführung länger dauert. Dafür sind bei diesen Modellen die Ergebnisse meist besser.

Wir haben uns für die goldende Mitte Q4_K_M entschieden

Konfiguration

Nachdem wir uns nun für ein KI-Modell entschieden haben müssen wir es nun in LocalAI bekommen. Dafür kopieren wir die GGUF in den models Ordner im LocalAI Verzeichnis.

Jetzt brauchen wir noch eine Konfiguration Datei im yaml-Format und Template-Dateien die LocalAI sagt wie dieses Modell verwendet werden soll.

Alle Dateien müssen ebenfalls im models Order im LocalAI Verzeichnis gelegt werden

em_german_leo_mistral_Q4.yaml

# Name des Modells (Wir nachher benötigt)
name: em_german_leo_mistral_Q4
# Default model parameters
parameters:
# Relative to the models path
model: em_german_leo_mistral.Q4_K_M.gguf
# temperature
temperature: 0.1
# all the OpenAI request options here

# Default context size
context_size: 2048
# Wie viele Threads sollen verwendet werden
threads: 8
# Define a backend (optional). By default it will try to guess the backend the first time the model is interacted with.
backend: llama # available: llama, stablelm, gpt2, gptj rwkv

# Hier kann prompt caching aktiviert werden, wir haben es aus Datenschutzgründen nicht aktiviert
#prompt_cache_path: "q4-cache"
#prompt_cache_all: false

# define chat roles
roles:
assistant: 'ASSISTANT:'
system: ''
user: 'USER:'
template:
# template file ".tmpl" with the prompt template to use by default on the endpoint call. Note there is no extension in the files
completion: completion
chat: chat

completion.tmpl

{{.Input}}

chat.tmpl

Du bist ein hilfreicher Assistent. {{.Input}} ASSISTANT:

Starten

Nachdem nun alles konfiguriert wurde, können wir LocalAI zum ersten Mal starten. Dafür gehen wir mit einem Terminal in das LocalAI Verzeichnis und führen dort den Befehl docker compose up -d --pull always aus.

Dies kann einen Moment dauern und danach ist LocalAI unter Port 8080 erreichbar und kann getestet werden.

curl 'http://localhost:8080/v1/chat/completions' -H 'Content-Type: application/json' -d '{
"messages": [
{
"role": "user",
"content": "Was bringt KI mit DocBee?"
}
],
"temperature": 0.1,
"max_tokens": 1024,
"model": "em_german_leo_mistral_Q4"
}'

Falls Ihr System eine öffentliche IP hat, können Sie natürlich localhost durch die IP ersetzen.

Weitere Schritte

HTTPS

Damit die Kommunikation über HTTPS erfolgt (Was wir dringend empfehlen) sollte nun vor LocalAI ein HTTP Proxy gesetzt werden mit gültigen SSL Zertifikat.

Absicherung

Damit nicht jeder Ihr LocalAI erreichen kann, können Sie entweder über eine Firewall nur die IP Ihres DocBees erlauben und/oder Sie können einbauen, dass der Authorization Header überprüft wird.

In DocBee hinterlegen

Damit Sie nun in DocBee Ihr LocalAI verwenden können, müssen unter Administration > Anbindung > OpenAI Ihre Daten hinterlegt werden.

NameBeschreibung
URLDie Öffentlich IP Adresse oder die URL zur Ihrer LocalAI Instanz
API KeyOptionaler Key (Dieser wird im Authorization Header gesetzt im Format Bearer <API KEY>)
Modellem_german_leo_mistral_Q4

Falls das Modell aus unserem Beispiel verwendet wurde, können nun folgende Benutzerdefinierte Prompts hinterlegt werden, um ein möglichst gutes Ergebnis zu erhalten:

Vorgangs-Beschreibung

{
"messages": [
{
"role": "user",
"content": "Erstelle eine Zusammenfassung dieser Mail, wobei die Signatur ignoriert werden soll. Das Ergebnis soll aus einem Titel und zusätzlich 2 bis 3 Sätzen bestehen. Mail: %INPUT%"
}
],
"temperature": 0.1,
"max_tokens": 256,
"model": "em_german_leo_mistral_Q4"
}

Nachrichten

{
"messages": [
{
"role": "user",
"content": "Unterstütze mich beim schreiben einer kurzen professionellen E-Mail mit folgenden Inhalt %INPUT%"
}
],
"temperature": 0.1,
"max_tokens": 2048,
"model": "em_german_leo_mistral_Q4"
}