Aller au contenu

Chatbot d'IA auto-hébergé

Dans cet article

Information

Le chatbot d'IA auto-hébergé constitue une solution localisée, intégrant de nombreux composants open-source. Au cœur de ce système se trouve Ollama - un cadre architectural conçu pour lancer et gérer des modèles de langage à grande échelle (LLMs) sur des ressources informatiques locales. Il facilite le téléchargement et le déploiement de LLMs sélectionnés. Pour une interaction transparente avec le modèle déployé, Open Web UI utilise une interface graphique ; cette application web permet aux utilisateurs d'envoyer des requêtes textuelles et de recevoir des réponses générées par les modèles de langage. L'intégration de ces composants engendre une solution autonome et localisée pour déployer des modèles de langage avancés avec des bases de code open-source tout en conservant un contrôle total sur l'intégrité des données et les performances du système.

Fonctionnalités principales

  • Interface Web : Open Web UI propose une interface web intuitive qui centralise le contrôle et étend les capacités d'interaction avec les modèles de langage IA locaux issus du dépôt Ollama, simplifiant considérablement l'utilisation des modèles pour les utilisateurs de tous niveaux.
  • Intégration avec divers modèles de langue : Ollama offre un accès à une multitude de modèles de langage gratuits, fournissant ainsi d'avantageuses capacités de traitement du langage naturel (NLP) à votre disposition. De plus, vous pouvez intégrer vos propres modèles personnalisés.
  • Tâches : Les utilisateurs peuvent engager des conversations, obtenir des réponses aux questions, analyser des ensembles de données, effectuer des traductions et développer leurs propres chatbots ou applications alimentées par l'IA avec l'aide des LLMs.
  • Code source Open Source : Ollama est un projet open-source, permettant aux utilisateurs d'adapter et de modifier la plateforme selon leurs besoins spécifiques.
  • Web Scraper et Recherche Interne de Documents (RAG) : Grâce à OpenWebUI, vous pouvez rechercher dans divers types de documents tels que des fichiers texte, PDF, présentations PowerPoint, sites web et vidéos YouTube.

Note

Pour plus d'informations sur les paramètres principaux d'Ollama et la documentation d'Open WebUI, consultez la documentation du développeur Ollama et la documentation Open WebUI.

Fonctionnalités de déploiement

ID Système d'exploitation compatible VM BM VGPU GPU Min CPU (Cœurs) Min RAM (Go) Min HDD/SSD (Go) Actif
117 Ubuntu 22.04 - - + + 4 16 - Oui
  • Le temps d'installation combiné du système d'exploitation et du serveur varie de 15 à 30 minutes.
  • Ollama Server télécharge et démarre le LLM en mémoire, simplifiant les processus de déploiement.
  • Open WebUI fonctionne comme une application web qui se connecte au serveur Ollama.
  • Les utilisateurs interagissent avec LLaMA 3 via l'interface web d'Open WebUI en envoyant des requêtes pour recevoir des réponses.
  • Toutes les calculs et traitements de données sont exécutés localement sur le serveur, garantissant la confidentialité et un contrôle total sur le flux d'informations. Les administrateurs système ont la flexibilité de personnaliser le LLM pour des tâches personnalisées grâce aux fonctionnalités fournies par OpenWebUI.
  • Les exigences système stipulent une RAM minimale de 16 Go pour assurer un bon niveau de performance.

Une fois l'installation terminée, les utilisateurs doivent accéder à leur serveur en naviguant vers l'URL : https:ollama<Server_ID_from_Invapi>.hostkey.in.

Note

Sauf indication contraire, par défaut nous installons la dernière version de logiciel disponible sur le site du développeur ou dans les dépôts du système d'exploitation.

Démarrage après le déploiement du Chatbot d'IA

Après paiement de l'ordre par courriel enregistré, vous recevrez une notification concernant la disponibilité du serveur pour le travail. Elle inclura l'adresse IP du VPS ainsi que les identifiants et mot de passe pour se connecter au serveur via SSH. Nos clients gèrent leur matériel via le panneau de contrôle du serveur et l'APIInvapi.

Attention

Le mot de passe envoyé par courriel est nécessaire pour se connecter via SSH et accéder au système d'exploitation en tant qu'utilisateur root, il ne s'applique pas à l'interface web du chat-bot ! Vous devez créer un utilisateur administrateur et définir un mot de passe pour le chat-bot lors de la première connexion à OpenWebUI.

Lien pour accéder à l'interface web du chat-bot : dans le tag :fontawesome-solid-tags: webpanel. Le lien exact sous la forme https://ollama<Server_ID_from_Invapi>.hostkey.in vous est également envoyé par courriel lors de la livraison du serveur.

Après avoir cliqué sur le lien depuis l'étiquette webpanel, une fenêtre de connexion Get started with Open WebUI s'ouvrira, où vous devrez créer un nom d'administrateur, une adresse e-mail et un mot de passe pour votre chatbot, puis cliquer sur le bouton Create Admin Account :

Attention

Après l'enregistrement du premier utilisateur, le système leur attribue automatiquement le rôle d'administrateur. Pour garantir la sécurité et contrôler le processus d'enregistrement, toutes les demandes d'enregistrement suivantes doivent être approuvées dans OpenWebUI depuis le compte administrateur.

Écran initial d'OpenWebUI

L'écran initial présente une interface de chat ainsi que plusieurs exemples de requêtes (requêtes) pour démontrer les capacités du système. Pour interagir avec le chatbot, les utilisateurs doivent sélectionner leur modèle de langue préféré parmi les options disponibles. Dans ce cas, LLaMA 3 est recommandé, qui possède une connaissance étendue et des capacités pour générer des réponses à diverses requêtes.

Après la sélection d'un modèle, les utilisateurs peuvent entrer leur première requête dans le champ de saisie, et le système générera une réponse basée sur l'analyse du texte saisi. Les exemples de requêtes présentés sur l'écran initial illustrent la diversité des sujets et des tâches que le chatbot peut gérer, aidant les utilisateurs à se familiariser avec ses capacités.

Configurer votre espace de travail OpenWebUI

Pour personnaliser davantage votre expérience de chat, accédez à la section Workspace. Vous y trouverez plusieurs options de personnalisation :

  • Models - Cette section vous permet de peaufiner les modèles existants pour répondre à vos besoins spécifiques. Vous pouvez définir des invites système, des paramètres, connecter des documents ou des bases de connaissances, et définir des outils, filtres ou actions.
  • Knowledge - Cette section configure la base de connaissances (RAG) en fonction de vos documents.
  • Prompts - Créez, modifiez et gérez vos propres invites (demandes d'entrée) pour une interaction plus efficace avec le chatbot dans cette section.
  • Tools - Connectez des scripts Python personnalisés ici, fournis à l'LLM lors d'une requête. Les outils permettent à l'LLM de réaliser des actions et d'obtenir un contexte supplémentaire en résultat. Des outils prêts à l'emploi créés par la communauté peuvent être vus sur le site web.
  • Functions - Connectez ici des opérations modulaires qui permettent aux utilisateurs d'étendre les capacités de l'IA en intégrant une logique ou des actions spécifiques directement dans les flux de travail. Contrairement aux outils qui fonctionnent comme utilitaires externes, les fonctions s'exécutent dans l'environnement OpenWebUI et gèrent des tâches telles que le traitement de données, la visualisation et la communication interactive. Des exemples de fonctions prêtes à l'emploi peuvent être vus sur le site web.

Ajouter et Supprimer des Modèles

Ollama offre la possibilité d'installer et d'utiliser une large gamme de modèles linguistiques, pas seulement le modèle par défaut. Avant d'installer de nouveaux modèles, assurez-vous que votre configuration serveur répond aux exigences du modèle choisi en termes d'utilisation de mémoire et de ressources informatiques.

Installer un Modèle via l'Interface OpenWebUI

Pour installer des modèles à travers l'interface OpenWebUI, suivez ces étapes :

  1. Sélectionnez le modèle souhaité dans la bibliothèque Ollama et naviguez vers sa page en cliquant sur son nom. Choisissez le type et la taille du modèle (si nécessaire). La "dimensionnalité" la plus appropriée vous sera proposée par défaut. Ensuite, cliquez sur l'icône avec deux carrés à gauche de la commande comme ollama run <model_name> pour copier la chaîne d'installation dans votre presse-papiers.

  2. Cliquez sur le nom du modèle en haut à gauche de la fenêtre de chatbot OpenWebUI et collez la commande copiée dans le champ Search a model.

  3. Cliquez sur la chaîne Pull "ollama run " from Ollama.com.

  4. Après un téléchargement et une installation réussis, le modèle apparaîtra dans la liste déroulante et sera disponible pour sélection.

Installation d'un Modèle via la Ligne de Commande

Pour installer de nouveaux modèles, vous devez vous connecter à votre serveur en utilisant SSH et exécuter la commande correspondante comme décrit dans cet article.

Suppression d'un Modèle

Pour supprimer des modèles de l'interface OpenWebUI, accédez aux paramètres du panneau de configuration web Icône utilisateur dans le coin supérieur droit >> Settings >> Admin Panel >> Models.

Ensuite, cliquez sur le bouton Manage Models pour ouvrir la fenêtre de gestion des modèles.

Dans celle-ci, sélectionnez le modèle à supprimer dans le menu déroulant Delete a model et cliquez sur l'icône à côté :

Pour supprimer un modèle en utilisant la ligne de commande (en tant que root) :

ollama rm <model_name>

Ajout de documents à la Base de Connaissances (RAG)

L'option Knowledge vous permet de créer des bases de connaissances (RAG) et d'uploader des documents de divers formats, tels que PDF, fichiers texte, documents Word, présentations PowerPoint, etc. Ces documents sont ensuite analysés et peuvent être discutés avec le chatbot. Cela est particulièrement utile pour l'étude et la compréhension de documents complexes, la préparation de présentations ou de réunions, l'analyse de données et de rapports, la vérification d'écrits pour les erreurs grammaticales, le style et la logique, le travail avec des documents juridiques et financiers, ainsi que la recherche dans divers domaines. Le chatbot peut vous aider à comprendre le contenu du document, le résumer, souligner les points clés, répondre aux questions, fournir des informations supplémentaires et faire des recommandations.

Pour travailler avec des documents, vous devez créer au moins une base de connaissances. Pour cela, allez dans la section Workspace >> Knowledge et cliquez sur (Plus) dans le coin supérieur droit. Remplissez les informations concernant le nom et le contenu de la base de connaissances et créez-la avec le bouton Create Knowledge.

Dans la section de la base de connaissances, à gauche se trouve une liste des fichiers uploadés dans la base de connaissances, et à droite se trouve leur contenu ou l'endroit où vous pouvez glisser-déposer les fichiers pour les uploader.

De plus, en cliquant sur le bouton (Plus) à côté de la barre de recherche Search Collection, vous pouvez :

  • Upload des fichiers vers la base de connaissances (Upload files)
  • Upload d'un répertoire entier de fichiers (Upload directory)
  • Synchronisation des fichiers et de leur contenu entre la base de connaissances et le répertoire (Sync directory). Cette option permet de mettre à jour la base de connaissances.
  • Ajout de contenu à la base de connaissances via l'éditeur intégré du WebUI d'Open WebUI (Add text content)

Vous pouvez supprimer tout fichier de la base de connaissances en le sélectionnant et en cliquant sur la croix qui apparaît.

Attention

Selon le modèle choisi et la puissance GPU du serveur, la création des embeddings dans les paramètres documentaires peut prendre de quelques secondes à plusieurs dizaines de minutes.

Pour gérer les paramètres des documents, allez dans User Name >> Settings >> Admin Settings >> Documents.

Ici vous pouvez configurer :

  1. Embedding Model Engine - Le moteur pour créer des embeddings. Par défaut, SentenceTransformers est utilisé, mais vous pouvez télécharger et utiliser des modèles d'embeddings depuis Ollama à cette fin.
  2. Hybrid Search - Recherche hybride. Lorsqu'elle est activée, la qualité de recherche pour les bases de connaissances et les documents s'améliorera, mais la vitesse de fonctionnement peut diminuer considérablement.
  3. Embeding Models - Le modèle d'embedding. Nous recommandons de définir ce champ sur le modèle amélioré sentence-transformers/all-MiniLM-L12-v2 et de cliquer sur le bouton de téléchargement à droite de celui-ci.
  4. Engine - Moteur d'extraction de contenu. Utilisez la valeur par défaut.
  5. Query Params: Cette section configure les paramètres qui influencent les requêtes vers des documents téléchargés et la manière dont le chatbot génère des réponses.
    • Top K - Ce paramètre détermine le nombre de meilleurs résultats de recherche à afficher. Par exemple, si Top K est défini sur 5, alors 5 des documents ou fragments de texte les plus pertinents seront montrés dans la réponse.
    • RAG Template - RAG (Retrieval Augmented Generation) est une méthode où le système extrait d'abord les parties pertinentes du texte à partir d'un ensemble de documents, puis utilise-les pour générer une réponse avec l'aide d'un modèle linguistique. Le RAG Template définit le modèle de formation d'une requête au modèle linguistique lors de l'utilisation de cette méthode. La possibilité de configurer un RAG Template permet d'adapter le format de la requête au modèle linguistique pour obtenir des réponses de qualité supérieure dans des scénarios d'utilisation spécifiques.
  6. Chunk Params - Cette section vous permet de configurer les paramètres pour découper (chunker) des documents téléchargés. Le chunking consiste à diviser des documents volumineux en parties plus petites pour un traitement facilité. Ici, vous pouvez définir la taille maximale d'un chunk en symboles : Chunk Size et le nombre de caractères que les parties peuvent se chevaucher : Chunk Overlap. Les valeurs recommandées sont 1500 et 100, respectivement.

    Dans cette section, vous pouvez également activer l'option PDF Extract Images (OCR) - il s'agit d'une technologie pour reconnaître du texte sur des images. Lorsqu'elle est activée, le système extraira les images à partir de fichiers PDF et appliquera l'OCR pour reconnaître tout texte contenu dans ces images. 7. Files - Ici, vous pouvez définir la taille maximale d'un fichier téléchargé et leur nombre total.

Les boutons situés sous Reset Upload Directory et Reset Vector Storage/Knowledge effacent le répertoire des fichiers de documents téléchargés et réinitialisent la base de connaissances/vecteur stockée (tous). Utilisez-les uniquement lorsque c'est absolument nécessaire, et supprimez les fichiers et bases de connaissances via Workspace.

Après avoir téléchargé des documents, vous pouvez travailler avec eux en mode chat. Pour ce faire, commencez un message dans la ligne de chat par le symbole # et sélectionnez le document ou la base de connaissances souhaités à partir de la liste déroulante. Par la suite, la réponse à la demande sera formulée sur la base des données du document sélectionné. Cette fonctionnalité permet d'obtenir des réponses contextuelles basées sur les informations téléchargées et peut être utile pour diverses tâches telles que la recherche d'informations, l'analyse de données et la prise de décision basée sur des documents :

Note

Vous pouvez utiliser le symbole # pour ajouter des sites web ou des vidéos YouTube à votre requête, permettant au LLM de les rechercher également.

Practical Articles and Tips

You can find more helpful information in our blog articles:

Conseils pour travailler avec RAG dans OpenWebUI

  • Toute manipulation de Modèle d'Embedding nécessitera la suppression et le téléchargement à nouveau des documents vers la base de données vectorielle. Modifier les paramètres RAG n'exige pas cela.
  • Lors de l'ajout ou de la suppression de documents, assurez-vous de mettre à jour le modèle personnalisé (s'il existe) et la collection de documents. Sinon, la recherche peut ne pas fonctionner correctement.
  • OpenWebUI reconnaît les formats pdf, csv, rst, xml, md, epub, doc, docx, xls, xlsx, ppt, pptx, txt, mais il est recommandé d'uploader des documents au format texte brut.
  • L'utilisation de la recherche hybride améliore les résultats mais consomme beaucoup de ressources, et le temps de réponse peut prendre 20 à 40 secondes même sur un GPU puissant.

Mise à jour du Chatbot

Lorsque de nouveaux modèles deviennent disponibles, ou pour corriger des bogues et augmenter la fonctionnalité de l'IA chatbot, vous devez mettre à jour deux de ses composants - Ollama et Open WebUI.

Mettre à jour Ollama

  1. Pour mettre à jour Ollama, connectez-vous au serveur via SSH en tant que root et exécutez la commande suivante :
curl -fsSL https://ollama.com/install.sh | sh
  1. Ouvrez un navigateur et vérifiez la disponibilité d'Ollama via l'API en entrant l'adresse <IP du serveur>:11434.

Vous devriez recevoir le message Ollama est en cours d'exécution.

  1. Si vous n'avez pas accès à l'API, vous pourrez peut-être devoir ajouter les lignes suivantes au fichier de service /etc/systemd/system/ollama.service dans la section [Service] :
Environment="OLLAMA_HOST=0.0.0.0" 
Environment="OLLAMA_ORIGINS=*"

et redémarrez le service avec les commandes suivantes :

systemctl daemon-reload
service ollama restart
Également, vous devrez peut-être redémarrer OpenWebUI

```bash
docker stop open-webui
docker rm open-webui
docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' --restart always ghcr.io/open-webui/open-webui:cuda
```

Mettre à jour Open WebUI

Pour mettre à jour Open WebUI, connectez-vous au serveur via SSH en tant que root et exécutez la commande suivante :

docker run --rm --volume /var/run/docker.sock:/var/run/docker.sock containrrr/watchtower --run-once open-webui 

Si la mise à jour par Watchtower ne fonctionne pas, exécutez les commandes suivantes :

docker stop open-webui
docker rm open-webui
docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui --restart always ghcr.io/open-webui/open-webui:cuda

Attention

Si vous souhaitez accéder à la documentation API intégrée pour endpoint d'Open WebUI, vous devez exécuter le conteneur avec la variable d'environnement ENV=dev définie :

docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' --restart always ghcr.io/open-webui/open-webui:cuda

Réinitialisation du Mot de Passe Administrateur et Réinitialisation Complète des Paramètres dans OpenWebUI

Réinitialisation du Mot de Passe Administrateur dans OpenWebUI

Tout d'abord, vous devez créer un hachage bcrypt de votre nouveau mot de passe. Exécutez la commande suivante sur votre machine locale en remplaçant your-new-password par le mot de passe que vous souhaitez utiliser :

htpasswd -bnBC 10 "" your-new-password | tr -d ':\n'

Note

La sortie inclura un hachage bcrypt avec des caractères spéciaux qui doivent être manipulés avec soin. Tous les caractères $ dans l'hachage devront être triplés échappés (remplacés par \\\\\\) pour être utilisés correctement à l'étape suivante.

Ensuite, vous mettrez à jour le mot de passe dans votre déploiement Docker. Remplacez HASH dans la commande ci-dessous par l'hachage bcrypt généré précédemment, en veillant à tripler échapper tous les caractères $. Remplacez également [email protected] par l'adresse e-mail liée à votre compte administrateur.

Attention

La commande suivante peut ne pas fonctionner dans certains cas. Si elle ne fonctionne pas, essayez de réinitialiser complètement les paramètres d'OpenWebUI.

docker run --rm -v open-webui:/data alpine/socat EXEC:"bash -c 'apk add sqlite && echo UPDATE auth SET password='\\''HASH'\\'' WHERE email='\\''[email protected]'\\''; | sqlite3 /data/webui.db', STDIO

Réinitialisation Complète des Paramètres dans OpenWebUI

Pour effectuer une réinitialisation complète des paramètres, vous devez supprimer la base de données d'OpenWebUI. Pour ce faire, connectez-vous à votre serveur via SSH en tant que root et exécutez les commandes suivantes :

cp /var/lib/docker/volumes/open-webui/_data/webui.db /var/lib/docker/volumes/open-webui/_data/webui.db.bak
rm /var/lib/docker/volumes/open-webui/_data/webui.db
docker restart open-webui

Note

Vous devrez peut-être redémarrer complètement OpenWebUI avec les commandes suivantes :

docker stop open-webui
docker rm open-webui
docker run -d -p 8080:8080 --gpus all --add-host=host.docker.internal:host-gateway -v open-webui:/app/backend/data --name open-webui -e ENV='dev' --restart always ghcr.io/open-webui/open-webui:cuda

Cela créera une sauvegarde de la base de données dans le fichier webui.db.bak, réinitialisera les paramètres et redémarrera le conteneur Docker d'OpenWebUI.

Ensuite, connectez-vous à l'interface web et configurez le compte administrateur comme si c'était votre première connexion.

Enfin, vous devez restaurer la connexion à Ollama. Pour ce faire, connectez-vous en tant qu'administrateur dans OpenWebUi, puis sélectionnez Username >> Settings >> Admin Settings >> Connections depuis la section du menu. Ensuite, cliquez sur l'icône (Configurer)

Après cela, changez :

et appuyez sur le bouton Save

Articles pratiques et conseils

Vous pouvez trouver des informations plus utiles dans nos articles de blog :

Commande d'un serveur avec un chatbot IA via l'API

Pour installer ce logiciel en utilisant l'API, suivez les instructions