Auto-hospedagem de um LLM OpenSource para DiscourseAI

O plugin Discourse AI possui muitos recursos que exigem um LLM ativado, como, por exemplo, Sumarização, Assistente de IA, Pesquisa por IA, Bot de IA. Embora você possa usar uma API de terceiros, como Configurar Chaves de API para OpenAI ou Configurar Chaves de API para Anthropic, nós construímos o Discourse AI desde o primeiro dia para não ficarmos presos a eles.

Executando com HuggingFace TGI

A HuggingFace fornece uma imagem de contêiner impressionante que pode colocá-lo em funcionamento rapidamente.

Por exemplo:

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

Deve colocá-lo em funcionamento com uma instância local do Mistral 7B Instruct no localhost na porta 8080, que pode ser testada com

curl http://localhost:8080/ \
    -X POST \
    -H 'Content-Type: application/json' \
    -d '{"inputs":"<s>[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!</s> [INST] Do you have mayonnaise recipes? [/INST]","parameters":{"max_new_tokens":500, "temperature":0.5,"top_p": 0.9}}'

Executando com vLLM

Outra opção para auto-hospedar LLMs que o Discourse AI suporta é o vLLM, que é um projeto muito popular, licenciado sob a Licença Apache.

Veja como começar com um modelo:

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

Que você pode testar com

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

Executando com Ollama

Ollama é outra opção popular para executar modelos de código aberto localmente. Ele simplifica o gerenciamento de modelos e fornece uma API compatível com a OpenAI.

ollama pull mistral
ollama serve

Isso inicia um servidor local em http://localhost:11434 ao qual o Discourse AI pode se conectar usando o provedor Ollama.

Tornando-o disponível para sua instância do Discourse

Na maioria das vezes, você estará executando isso em um servidor dedicado devido ao requisito de GPU. Ao fazer isso, recomendo executar um proxy reverso, fazendo terminação TLS e protegendo o endpoint para que ele só possa ser conectado pela sua instância do Discourse.

Configurando o Discourse AI

As conexões de LLM são agora configuradas através da UI de administração em vez das configurações do site. Navegue até /admin/plugins/discourse-ai/ai-llms e adicione um novo LLM:

  1. Clique em New (Novo) para adicionar um modelo
  2. Selecione um Provider (Provedor) — escolha vLLM, Hugging Face ou Ollama, dependendo do seu servidor de inferência
  3. Insira a URL do seu endpoint de inferência (por exemplo, http://seu-servidor:8080)
  4. Insira uma API key (chave de API) se o seu endpoint exigir uma
  5. Preencha o model name (nome do modelo), tokenizer, max prompt tokens (tokens máximos de prompt) e outros detalhes do modelo

Assim que seu LLM for adicionado, defina-o como o padrão através da configuração do site ai_default_llm_model, ou atribua-o a recursos específicos através da sua configuração de agente em /admin/plugins/discourse-ai/ai-features.

17 curtidas