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.
Name | Beschreibung |
---|---|
URL | Die Öffentlich IP Adresse oder die URL zur Ihrer LocalAI Instanz |
API Key | Optionaler Key (Dieser wird im Authorization Header gesetzt im Format Bearer <API KEY> ) |
Modell | em_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"
}