El plugin Discourse AI tiene muchas funcionalidades que requieren que un LLM esté habilitado, como, por ejemplo, Resumen, Asistente de IA, Búsqueda por IA, Bot de IA. Aunque puedes usar una API de terceros, como Configurar claves de API para OpenAI o Configurar claves de API para Anthropic, construimos Discourse AI desde el primer día para no estar atados a esas.
Ejecutando con HuggingFace TGI
HuggingFace proporciona una increíble imagen de contenedor que puede ponerte en funcionamiento rápidamente.
Por ejemplo:
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
Debería ponerte en funcionamiento con una instancia local de Mistral 7B Instruct en localhost en el puerto 8080, que se puede probar con
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}}'
Ejecutando con vLLM
Otra opción para autoalojar LLMs que Discourse AI soporta es vLLM, que es un proyecto muy popular, licenciado bajo la Licencia Apache.
Así es como puedes empezar con un 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
Lo cual puedes probar con
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}'
Ejecutando con Ollama
Ollama es otra opción popular para ejecutar modelos de código abierto localmente. Simplifica la gestión de modelos y proporciona una API compatible con OpenAI.
ollama pull mistral
ollama serve
Esto inicia un servidor local en http://localhost:11434 al que Discourse AI puede conectarse usando el proveedor Ollama.
Ponerlo disponible para tu instancia de Discourse
La mayoría de las veces lo ejecutarás en un servidor dedicado debido al requisito de GPU. Cuando lo hagas, recomiendo ejecutar un proxy inverso, haciendo terminación TLS y asegurando el endpoint para que solo pueda ser conectado por tu instancia de Discourse.
Configurando Discourse AI
Las conexiones LLM ahora se configuran a través de la UI de administración en lugar de la configuración del sitio. Navega a /admin/plugins/discourse-ai/ai-llms y añade un nuevo LLM:
- Haz clic en Nuevo para añadir un modelo
- Selecciona un Proveedor — elige vLLM, Hugging Face, u Ollama dependiendo de tu servidor de inferencia
- Introduce la URL de tu endpoint de inferencia (ej.
http://tu-servidor:8080) - Introduce una clave de API si tu endpoint la requiere
- Rellena el nombre del modelo, el tokenizador, los tokens máximos de prompt y otros detalles del modelo
Una vez que tu LLM esté añadido, establécelo como predeterminado a través de la configuración del sitio ai_default_llm_model, o asígnalo a funcionalidades específicas a través de su configuración de agente en /admin/plugins/discourse-ai/ai-features.