Self-Hosting di un LLM OpenSource per DiscourseAI

Il plugin Discourse AI ha molte funzionalità che richiedono l’attivazione di un LLM, come, ad esempio, Riassunto, AI Helper, Ricerca AI, Bot AI. Sebbene sia possibile utilizzare un’API di terze parti, come Configura chiavi API per OpenAI o Configura chiavi API per Anthropic, abbiamo costruito Discourse AI fin dal primo giorno per non essere vincolati a queste.

Esecuzione con HuggingFace TGI

HuggingFace fornisce un’eccellente immagine container che può farti partire rapidamente.

Per esempio:

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

Dovrebbe farti partire con un’istanza locale di Mistral 7B Instruct su localhost alla porta 8080, che può essere testata con

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}}'

Esecuzione con vLLM

Un’altra opzione per l’auto-hosting di LLM supportati da Discourse AI è vLLM, che è un progetto molto popolare, con licenza Apache License.

Ecco come iniziare con un modello:

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

Che puoi testare con

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}'

Esecuzione con Ollama

Ollama è un’altra opzione popolare per eseguire modelli open source localmente. Semplifica la gestione dei modelli e fornisce un’API compatibile con OpenAI.

ollama pull mistral
ollama serve

Questo avvia un server locale su http://localhost:11434 a cui Discourse AI può connettersi utilizzando il provider Ollama.

Renderlo disponibile per la tua istanza Discourse

La maggior parte delle volte lo eseguirai su un server dedicato a causa del requisito della GPU. Quando lo fai, ti consiglio di eseguire un reverse proxy, gestendo la terminazione TLS e proteggendo l’endpoint in modo che possa essere connesso solo dalla tua istanza Discourse.

Configurazione di Discourse AI

Le connessioni LLM sono ora configurate tramite l’interfaccia di amministrazione anziché tramite le impostazioni del sito. Naviga su /admin/plugins/discourse-ai/ai-llms e aggiungi un nuovo LLM:

  1. Clicca su Nuovo per aggiungere un modello
  2. Seleziona un Provider — scegli vLLM, Hugging Face o Ollama a seconda del tuo server di inferenza
  3. Inserisci l’URL del tuo endpoint di inferenza (ad esempio http://your-server:8080)
  4. Inserisci una API key se il tuo endpoint ne richiede una
  5. Compila il nome del modello, il tokenizer, i max prompt tokens e altri dettagli del modello

Una volta aggiunto il tuo LLM, impostalo come predefinito tramite l’impostazione del sito ai_default_llm_model, oppure assegnarlo a funzionalità specifiche tramite la sua configurazione dell’agente in /admin/plugins/discourse-ai/ai-features.

17 Mi Piace