# 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**](https://mistral.ai/), [**open-webui**](https://github.com/open-webui/open-webui) et [Exoscale](https://www.exoscale.com/) 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](https://mistral.ai/images/logo_hubc88c4ece131b91c7cb753f40e9e1cc5_2589_256x0_resize_q97_h2_lanczos_3.webp align="left")

**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/](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.
    

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1717739216236/5da505aa-c194-4eb7-92b5-fd684da2e0e1.png align="center")

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 :

```bash
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/](http://localhost:3000/)

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1717739529569/6bd45453-a2f1-49c1-b6b3-5440e0075167.png align="center")

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](https://www.exoscale.com/), 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](https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository) en suivant les instructions sur leur site web.
    
3. Exécutez la commande suivante pour télécharger et installer open-webui :
    

```bash
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:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1717739907201/bf89e567-c679-4ece-90e6-550c6c99d40a.png align="center")

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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1717740948796/b3e010a2-b9d6-4404-b8fc-c0427a228dce.png align="center")

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**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1717735437957/8bd2793a-572d-48a0-bb32-8698255753e1.png align="center")

**Total usage in EURO**

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1717735455444/63c8f4da-4e38-451a-8a97-4115b9d204d0.png align="center")

Et voilà!

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

**Exemple de setup SSL https**

```bash
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
```

```bash
sudo apt-get update
sudo apt-get install nginx
```

```bash
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

```bash
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](https://github.com/mistralai)

Mistral LLM: [https://mistral.ai/technology/#models](https://mistral.ai/technology/#models)

La Plateforme: [https://console.mistral.ai/](https://console.mistral.ai/)

Le Chat: [https://chat.mistral.ai/chat](https://chat.mistral.ai/chat)

Mistral API: [https://docs.mistral.ai/api/](https://docs.mistral.ai/api/)

open-webui : [https://github.com/open-webui/open-webui](https://github.com/open-webui/open-webui)

Exoscale: [https://www.exoscale.com/](https://www.exoscale.com/)

Exoscale Compute: [https://www.exoscale.com/compute/](https://www.exoscale.com/compute/)

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