O plugin Discourse AI possui muitos recursos que exigem um LLM habilitado, como, por exemplo, Sumarização, Auxiliar de IA, Pesquisa de IA, Robô de IA. Embora você possa usar uma API de terceiros, como Configurar Chaves de API para OpenAI ou Configurar Chaves de API para Anthropic, criamos o Discourse AI desde o primeiro dia para não ficarmos presos a eles.
Executando com HuggingFace TGI
O HuggingFace fornece uma imagem de contêiner incrível que pode colocá-lo em funcionamento rapidamente.
Por exemplo:
mkcdir -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:
mkcdir -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}'
Tornando-o disponível para sua instância do Discourse
Na maioria das vezes, você estará executando isso em um servidor dedicado por causa do 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 por sua instância do Discourse.
Configurando o DiscourseAI
O Discourse AI envia configurações do site para configurar o servidor de inferência para modelos de código aberto. Você deve apontá-lo para seu servidor usando ai_hugging_face_api_url ou ai_vllm_endpoint, de acordo com o software de inferência que você escolheu.
Depois disso, altere cada módulo para usar o modelo que você está executando, nas configurações de seleção de modelo, como
- ai_helper_model
- ai_embeddings_semantic_search_hyde_model
- summarization strategy
- ai_bot_enabled_chat_bots