El plugin Discourse AI tiene muchas funciones que requieren un LLM habilitado, como, por ejemplo, Resumen, Ayudante de IA, Búsqueda de IA, Bot de IA. Si bien puedes usar una API de terceros, como Configurar claves API para OpenAI o Configurar claves API para Anthropic, construimos Discourse AI desde el primer día para no estar atados a ellos.
Ejecutando con HuggingFace TGI
HuggingFace proporciona una imagen de contenedor impresionante que puede ponerte en marcha rápidamente.
Por ejemplo:
mkdír -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 marcha 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.
Aquí te explicamos cómo empezar con un modelo:
mkdír -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 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}'
Haciéndolo disponible para tu instancia de Discourse
La mayoría de las veces ejecutarás esto en un servidor dedicado debido al requisito de GPU. Al hacerlo, recomiendo ejecutar un proxy inverso, realizar la terminación TLS y asegurar el endpoint para que solo pueda ser conectado por tu instancia de Discourse.
Configurando DiscourseAI
Discourse AI incluye configuraciones del sitio para configurar el servidor de inferencia para modelos de código abierto. Deberías apuntarlo a tu servidor usando ai_hugging_face_api_url o ai_vllm_endpoint según el software de inferencia que hayas elegido.
Después de eso, cambia cada módulo para usar el modelo que estás ejecutando, en la configuración de selección de modelos, como
- ai_helper_model
- ai_embeddings_semantic_search_hyde_model
- summarization strategy
- ai_bot_enabled_chat_bots