GenAI : Be more OPEN with Mistral and open-webui!

GenAI : Be more OPEN with Mistral and open-webui!

Hi!

En tant qu'ingénieur, passionné par les technologies open source, j'aimerais partager avec vous comment utiliser Mistral, open-webui et Exoscale pour une utilisation plus open source des outils liés aux technologies de génération de langage naturel (GenAI).

Mistral AI | Frontier AI in your hands

Mistral est un projet open source qui permet de gérer les modèles de langage naturel. Il offre plusieurs avantages par rapport aux modèles et interfaces closed-source, notamment :

  • Transparence dans les algorithmes utilisés, ce qui permet de comprendre les décisions prises par les modèles.

  • Possibilité de personnaliser les modèles pour répondre à des besoins spécifiques.

  • L'accès à une communauté active de développeurs qui contribuent régulièrement à l'amélioration du projet.

Pour accéder à Mistral, vous devez suivre les étapes suivantes :

  1. Créez un compte sur le site web de Mistral https://mistral.ai/

  2. Connectez-vous à votre compte et cliquez sur "API keys" dans le menu de gauche.

  3. Cliquez sur "Create new API key" pour générer une nouvelle clé d'API.

Une fois que vous avez obtenu votre clé API, vous pouvez utiliser open-webui pour interagir avec les modèles de Mistral. open-webui est un outil open source qui permet de visualiser et de manipuler les modèles de langage naturel.

Pour démarrer open-webui en local, vous devez effectuer la commande suivante :

docker run -d -p 3000:8080 \
  -v open-webui:/app/backend/data \
  -e OPENAI_API_BASE_URLS="https://api.mistral.ai/v1" \
  -e OPENAI_API_KEYS="your-api-key" \
  --name open-webui \
  --restart always \
  ghcr.io/open-webui/open-webui:main

Puis, pour accéder à open-webui, aller sur l'URL http://localhost:3000/

Vous trouverez un exemple de setup SSL https en bas de cet article.

Personnelement j'utilise actuellement leur dernier modèle, le plus performant, open-mixtral-8x22b.

Si vous souhaitez héberger l'interface open-webui sur une VM s'exécutant sur un cloud public, je vous conseil d'utiliser Exoscale, un cloud souverain Européen avec des Datacenters en Suisse. Voici comment procéder :

  1. Créez un compte sur Exoscale et déployez une VM avec Ubuntu 22.04 LTS.

  2. Connectez-vous à votre VM via SSH et installez Docker en suivant les instructions sur leur site web.

  3. Exécutez la commande suivante pour télécharger et installer open-webui :

docker run -d -p 80:8080  \
 -v open-webui:/app/backend/data  \
 -e OPENAI_API_BASE_URLS="https://api.mistral.ai/v1"  \
 -e OPENAI_API_KEYS="your-api-key"  \
 --name open-webui  \
 --restart always  \
 ghcr.io/open-webui/open-webui:main

Afin de pouvoir accéder au service open-webui il faut vous assurer d'autoriser vers le port que vous aurez mentionné dans la commande docker run.

Voic un exemple de Security Group à appliquer sur votre instance:

Pour accéder à votre instance open-webui, il suffit de trouver l'IP de votre instance et d'y accèder sur le port sur lequel écoute le service.

Fonctionnalité très utiles dans Mistral, vous pouvez suivre en temps réel l'évolution des coûts de votre compte. Soit en Euro ou en nombre de Token.

Vous pouvez ainsi faire vos tests entre les différents modèles et adapter selon vos besoins et préférences.

Total usage in TOKENS

Total usage in EURO

Et voilà!

C'est si simple de s'affranchir un peu de la Silicon Valley :-)

Exemple de setup SSL https

docker run -d -p 8080:8080   -v open-webui:/app/backend/data   -e OPENAI_API_BASE_URLS="https://api.mistral.ai/v1"   -e OPENAI_API_KEYS="your-api-key"   --name open-webui   --restart always   ghcr.io/open-webui/open-webui:main
sudo apt-get update
sudo apt-get install nginx
server {
    if ($host = ai.example.com) {
        return 301 https://$host$request_uri;
    }
    listen 80;
    server_name ai.example.com;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name ai.example.com;

    ssl_certificate /etc/letsencrypt/live/ai.example.com-0001/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/ai.example.com-0001/privkey.pem; # managed by Certbot

    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_prefer_server_ciphers on;
    ssl_ciphers "ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256";

    location / {
        proxy_pass http://127.0.0.1:8080;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

}

Activer la configuration et obtenir le certificat SSL

sudo ln -s /etc/nginx/sites-available/open-webui.conf /etc/nginx/sites-enabled/
sudo systemctl restart nginx

Références et liens

Mistral GitHub : https://github.com/mistralai

Mistral LLM: https://mistral.ai/technology/#models

La Plateforme: https://console.mistral.ai/

Le Chat: https://chat.mistral.ai/chat

Mistral API: https://docs.mistral.ai/api/

open-webui : https://github.com/open-webui/open-webui

Exoscale: https://www.exoscale.com/

Exoscale Compute: https://www.exoscale.com/compute/

Source : Partially generated with Mistral model open-mixtral-8x22b