Self-Hosting eines OpenSource LLM für DiscourseAI

Das Plugin Discourse AI verfügt über viele Funktionen, die ein LLM (Large Language Model, Großes Sprachmodell) erfordern, wie zum Beispiel Zusammenfassung, KI-Assistent, KI-Suche, KI-Bot. Obwohl Sie eine Drittanbieter-API verwenden können, wie z. B. API-Schlüssel für OpenAI konfigurieren oder API-Schlüssel für Anthropic konfigurieren, wurde Discourse AI von Anfang an so entwickelt, dass es nicht an diese gebunden ist.

Ausführung mit HuggingFace TGI

HuggingFace bietet ein hervorragendes Container-Image, mit dem Sie schnell starten können.

Zum Beispiel:

mkdir -p /opt/tgi-cache
docker run --rm --gpus all --shm-size 1g -p 8080:80 \
  -v /opt/tgi-cache:/data \
  ghcr.io/huggingface/text-generation-inference:latest \
  --model-id mistralai/Mistral-7B-Instruct-v0.2

Sollte Sie eine lokale Instanz von Mistral 7B Instruct auf dem localhost unter Port 8080 starten, die Sie testen können mit

curl http://localhost:8080/ \
    -X POST \
    -H 'Content-Type: application/json' \
    -d '{"inputs":"\u003cs\u003e[INST] What is your favourite condiment? [/INST] Well, I'm quite partial to a good squeeze of fresh lemon juice. It adds just the right amount of zesty flavour to whatever I'm cooking up in the kitchen!\u003c/s\u003e [INST] Do you have mayonnaise recipes? [/INST]","parameters":{"max_new_tokens":500, "temperature":0.5,"top_p": 0.9}}'

Ausführung mit vLLM

Eine weitere Option zum Selbst-Hosten von LLMs, die Discourse AI unterstützt, ist vLLM, ein sehr beliebtes Projekt unter der Apache License.

So starten Sie mit einem Modell:

mkdir -p /opt/vllm-cache
docker run --gpus all \
  -v /opt/vllm-cache:/root/.cache/huggingface \
  -e "MODEL=mistralai/Mistral-7B-Instruct-v0.2" \
  -p 8080:8000 --ipc=host vllm/vllm-openai:latest

Das Sie testen können mit

curl -X POST http://localhost:8080/v1/completions \
-H "Content-Type: application/json" \
-d '{
"model": "mistralai/Mistral-7B-Instruct-v0.2",
"prompt": "\u003cs\u003e [INST] What was the latest released hero for Dota 2? [/INST] The latest released hero for Dota 2 was", "max_tokens": 200}'

Ausführung mit Ollama

Ollama ist eine weitere beliebte Option zum lokalen Ausführen von Open-Source-Modellen. Es vereinfacht die Modellverwaltung und bietet eine OpenAI-kompatible API.

ollama pull mistral
ollama serve

Dies startet einen lokalen Server unter http://localhost:11434, mit dem sich Discourse AI unter Verwendung des Ollama-Providers verbinden kann.

Bereitstellen für Ihre Discourse-Instanz

Meistens werden Sie dies aufgrund der GPU-Anforderung auf einem dedizierten Server ausführen. In diesem Fall empfehle ich, einen Reverse-Proxy zu verwenden, TLS-Terminierung durchzuführen und den Endpunkt abzusichern, sodass er nur von Ihrer Discourse-Instanz verbunden werden kann.

Konfiguration von Discourse AI

LLM-Verbindungen werden nun über die Admin-UI anstatt über die Site-Einstellungen konfiguriert. Navigieren Sie zu /admin/plugins/discourse-ai/ai-llms und fügen Sie ein neues LLM hinzu:

  1. Klicken Sie auf Neu, um ein Modell hinzuzufügen
  2. Wählen Sie einen Provider – wählen Sie vLLM, Hugging Face oder Ollama abhängig von Ihrem Inferenzserver
  3. Geben Sie die URL Ihres Inferenz-Endpunkts ein (z. B. http://ihr-server:8080)
  4. Geben Sie einen API-Schlüssel ein, falls Ihr Endpunkt einen benötigt
  5. Füllen Sie den Modellnamen, Tokenizer, maximale Prompt-Tokens und andere Modelldetails aus

Sobald Ihr LLM hinzugefügt wurde, legen Sie es über die Site-Einstellung ai_default_llm_model als Standard fest oder weisen Sie es bestimmten Funktionen über deren Agentenkonfiguration unter /admin/plugins/discourse-ai/ai-features zu.

17 „Gefällt mir“