Comment entraîner un chatbot IA avec une base de connaissances personnalisée en utilisant l'API ChatGPT

Vous pouvez entraîner le chatbot IA sur n'importe quelle plateforme à partir de vos propres données, que ce soit Windows, macOS, Linux ou ChromeOS.
Comment entraîner un chatbot IA avec une base de connaissances personnalisée en utilisant l'API ChatGPT

Dans notre article précédent, nous avons montré comment construire un chatbot IA avec l'API ChatGPT et lui assigner un rôle pour le personnaliser. Mais que se passe-t-il si vous souhaitez entraîner l'IA à partir de vos propres données ? Par exemple, vous pouvez avoir un livre, des données financières ou un grand ensemble de bases de données, et vous souhaitez les rechercher facilement.

Dans cet article, nous vous proposons un tutoriel facile à suivre sur la manière d'entraîner un chatbot IA avec votre base de connaissances personnalisée grâce à LangChain et à l'API ChatGPT. Nous déployons LangChain, l'index GPT et d'autres bibliothèques puissantes pour entraîner le chatbot IA à l'aide du grand modèle de langage (LLM) d'OpenAI. Sur ce, voyons comment entraîner et créer un chatbot IA en utilisant votre propre ensemble de données.

Points importants avant d'entraîner l'IA avec vos propres données

Vous pouvez entraîner le chatbot IA sur n'importe quelle plateforme, que ce soit Windows, macOS, Linux ou ChromeOS. Dans cet article, j'utilise Windows 11, mais les étapes sont presque identiques pour d'autres plateformes.

Le guide est destiné aux utilisateurs débutants, et les instructions sont expliquées dans un langage simple. Ainsi, même si vous avez une connaissance superficielle de l'informatique et que vous ne savez pas coder, vous pouvez facilement entraîner et créer un chatbot IA de type Q&A en quelques minutes. Si vous avez suivi notre précédent article sur le ChatGPT bot, il vous sera encore plus facile de comprendre le processus.

Puisque nous allons entraîner un chatbot IA basé sur nos propres données, il est recommandé d'utiliser un ordinateur performant avec un bon CPU et un bon GPU. Cependant, vous pouvez utiliser n'importe quel ordinateur bas de gamme à des fins de test, et il fonctionnera sans problème. J'ai utilisé un Chromebook pour entraîner le modèle d'IA en utilisant un livre de 100 pages (~100 Mo). Cependant, si vous souhaitez entraîner un grand ensemble de données comprenant des milliers de pages, il est fortement recommandé d'utiliser un ordinateur puissant.

Enfin, l'ensemble des données doit être en anglais pour obtenir les meilleurs résultats, mais selon OpenAI, il fonctionnera également avec les langues internationales courantes comme le français, l'espagnol, l'allemand, etc. N'hésitez donc pas à faire un essai dans votre propre langue.

Configurer l'environnement logiciel pour entraîner un chatbot IA

Comme dans notre article précédent, vous devez savoir que Python et Pip doivent être installés, ainsi que plusieurs bibliothèques. Dans cet article, nous allons tout configurer à partir de zéro afin que les nouveaux utilisateurs puissent également comprendre le processus de configuration.

Pour vous donner une idée, nous allons installer Python et Pip. Ensuite, nous installerons les bibliothèques Python, dont OpenAI, GPT Index, Gradio et PyPDF2. Tout au long du processus, vous apprendrez ce que fait chaque bibliothèque. Encore une fois, ne vous inquiétez pas du processus d'installation, il est assez simple. Sur ce, entrons dans le vif du sujet.

Installer Python

  1. Tout d'abord, vous devez installer Python (Pip) sur votre ordinateur. Ouvrez ce lien et téléchargez le fichier d'installation pour votre système.
  2. Ensuite, exécutez le fichier d'installation et assurez-vous d'activer la case à cocher "Ajouter Python.exe à PATH". Cette étape est extrêmement importante. Cliquez ensuite sur "Installer maintenant" et suivez les étapes habituelles pour installer Python.
  3. Pour vérifier si Python est correctement installé, ouvrez le Terminal sur votre ordinateur. J'utilise le Terminal Windows sur Windows, mais vous pouvez également utiliser l'Invite de commande. Une fois là, exécutez la commande ci-dessous, et vous obtiendrez la version de Python. Sous Linux et macOS, vous devrez peut-être utiliser python3 --version au lieu de python --version.

python --version

Mettre à jour Pip

Lorsque vous installez Python, Pip est installé simultanément sur votre système. Mettons-le donc à jour avec la dernière version. Pour ceux qui l'ignorent, Pip est le gestionnaire de paquets pour Python. Il vous permet d'installer des milliers de bibliothèques Python depuis le terminal. Avec Pip, nous pouvons installer les bibliothèques OpenAI, gpt_index, gradio et PyPDF2. Voici les étapes à suivre :

1. Ouvrez le Terminal de votre choix sur votre ordinateur. J'utilise le Terminal Windows, mais vous pouvez également utiliser l'Invite de commande. Maintenant, exécutez la commande ci-dessous pour mettre à jour Pip. Encore une fois, il se peut que vous deviez utiliser python3 et pip3 sur Linux et macOS.

python -m pip install -U pip

2. Pour vérifier si Pip a été correctement installé, exécutez la commande ci-dessous. Vous obtiendrez le numéro de version. Si vous obtenez des erreurs, suivez notre guide dédié à l'installation de Pip sous Windows pour résoudre les problèmes liés au PATH.

pip --version

Installer les bibliothèques OpenAI, GPT Index, PyPDF2 et Gradio

Une fois que nous avons configuré Python et Pip, il est temps d'installer les bibliothèques essentielles qui nous aideront à entraîner un chatbot IA avec une base de connaissances personnalisée. Voici les étapes à suivre.

1. Ouvrez le Terminal et exécutez la commande ci-dessous pour installer la bibliothèque OpenAI. Nous l'utiliserons comme LLM (Large language model) pour entraîner et créer un chatbot IA. Nous importerons également le framework LangChain d'OpenAI. Notez que les utilisateurs de Linux et macOS peuvent avoir à utiliser pip3 au lieu de pip.

pip install openai

2. Ensuite, installons GPT Index, qui est également appelé LlamaIndex. Il permet au LLM de se connecter aux données externes de notre base de connaissances.

pip install gpt_index

3. Ensuite, installez PyPDF2 pour analyser les fichiers PDF. Si vous souhaitez alimenter vos données au format PDF, cette bibliothèque aidera le programme à lire les données sans effort.

pip install PyPDF2

4. Enfin, installez la bibliothèque Gradio. Elle est destinée à créer une interface utilisateur simple pour interagir avec le chatbot formé à l'IA.

pip install gradio

Nous avons maintenant terminé l'installation de toutes les bibliothèques nécessaires à l'entraînement d'un chatbot IA.

Télécharger un éditeur de code

Enfin, nous avons besoin d'un éditeur de code pour modifier une partie du code. Sous Windows, je recommande Notepad++ (Télécharger ici). Il suffit de télécharger et d'installer le programme via le lien ci-joint. Vous pouvez également utiliser VS Code sur n'importe quelle plateforme si vous êtes à l'aise avec les IDE puissants. Outre VS Code, vous pouvez installer Sublime Text (Télécharger ici) sur macOS et Linux.

Pour ChromeOS, vous pouvez utiliser l'excellente application Caret (Télécharger ici) pour éditer le code. Nous avons presque fini de configurer l'environnement logiciel, et il est temps d'obtenir la clé API OpenAI.

Obtenir la clé API OpenAI gratuitement

Maintenant, pour créer un chatbot IA alimenté par ChatGPT, vous avez besoin d'une clé API d'OpenAI. Cette clé vous permettra d'appeler ChatGPT dans votre propre interface et d'afficher les résultats directement sur celle-ci. 

Actuellement, OpenAI offre des clés API gratuites avec 5 $ de crédit gratuit pour les trois premiers mois. Si vous avez créé votre compte OpenAI plus tôt, vous pouvez bénéficier d'un crédit gratuit d'une valeur de 18 $. Une fois le crédit gratuit épuisé, vous devrez payer pour l'accès à l'API. Mais pour l'instant, il est disponible pour tous les utilisateurs gratuits.

  1. Rendez-vous sur platform.openai.com/signup et créez un compte gratuit. Si vous possédez déjà un compte OpenAI, il vous suffit de vous connecter.
  2. Ensuite, cliquez sur votre profil dans le coin supérieur droit et sélectionnez "View API keys" dans le menu déroulant.
  3. Cliquez sur "Create new secret key" et copiez la clé API. Notez que vous ne pouvez pas copier ou voir la clé API entière plus tard. Il est donc fortement recommandé de copier et de coller immédiatement la clé API dans un fichier Notepad.

De plus, ne partagez pas et n'affichez pas la clé API en public. Il s'agit d'une clé privée destinée uniquement à l'accès à votre compte. Vous pouvez également supprimer des clés API et créer plusieurs clés privées (jusqu'à cinq).

Entraîner le chatbot IA

Maintenant que nous avons mis en place l'environnement logiciel et obtenu la clé API d'OpenAI, nous allons entraîner le chatbot IA. Ici, nous utiliserons le modèle "text-davinci-003" au lieu du dernier modèle "gpt-3.5-turbo" parce que Davinci fonctionne beaucoup mieux pour la complétion de texte. Si vous le souhaitez, vous pouvez très bien changer le modèle en Turbo pour réduire le coût. Ceci étant dit, passons aux instructions.

Ajoutez vos documents pour entraîner le chatbot IA

  1. Tout d'abord, créez un nouveau dossier appelé docs dans un endroit accessible, comme le Bureau. Vous pouvez également choisir un autre emplacement selon vos préférences. Toutefois, conservez le nom de dossier docs.
  2. Ensuite, déplacez les documents que vous souhaitez utiliser pour entraîner l'IA dans le dossier "docs". Vous pouvez ajouter plusieurs fichiers texte ou PDF (même scannés). Si vous avez un grand tableau dans Excel, vous pouvez l'importer en tant que fichier CSV ou PDF, puis l'ajouter au dossier "docs". Vous pouvez même ajouter des fichiers de base de données SQL, comme expliqué dans ce tweet de Langchain AI. Je n'ai pas essayé beaucoup de formats de fichiers en dehors de ceux mentionnés, mais vous pouvez ajouter et vérifier par vous-même. Pour cet article, j'ajoute un de mes articles au format PDF.

Remarque : si vous avez un gros document, le traitement des données prendra plus de temps, en fonction de votre CPU et de votre GPU. De plus, cela utilisera rapidement vos jetons OpenAI gratuits. Commencez donc par un petit document (30 à 50 pages ou des fichiers de moins de 100 Mo) pour comprendre le processus.

Préparer le code

1. Lancez Notepad++ (ou l'éditeur de code de votre choix) et collez le code ci-dessous dans un nouveau fichier. Une fois de plus, j'ai bénéficié de l'aide précieuse d'armrrs sur Google Colab et j'ai modifié le code pour le rendre compatible avec les fichiers PDF et créer une interface Gradio par-dessus.

from gpt_index import SimpleDirectoryReader, GPTListIndex, GPTSimpleVectorIndex, LLMPredictor, PromptHelper
from langchain import OpenAI
import gradio as gr
import sys
import os

os.environ["OPENAI_API_KEY"] = 'Votre cle API OpenAI'

def construct_index(directory_path):
    max_input_size = 4096
    num_outputs = 512
    max_chunk_overlap = 20
    chunk_size_limit = 600

    prompt_helper = PromptHelper(max_input_size, num_outputs, max_chunk_overlap, chunk_size_limit=chunk_size_limit)

    llm_predictor = LLMPredictor(llm=OpenAI(temperature=0.7, model_name="text-davinci-003", max_tokens=num_outputs))

    documents = SimpleDirectoryReader(directory_path).load_data()

    index = GPTSimpleVectorIndex(documents, llm_predictor=llm_predictor, prompt_helper=prompt_helper)

    index.save_to_disk('index.json')

    return index

def chatbot(input_text):
    index = GPTSimpleVectorIndex.load_from_disk('index.json')
    response = index.query(input_text, response_mode="compact")
    return response.response

iface = gr.Interface(fn=chatbot,
                     inputs=gr.inputs.Textbox(lines=7, label="Enter your text"),
                     outputs="text",
                     title="Custom-trained AI Chatbot")

index = construct_index("docs")
iface.launch(share=True)

2. Ensuite, cliquez sur "Fichiers" dans le menu supérieur et sélectionnez "Enregistrer sous..." dans le menu déroulant.

3. Définissez le nom du fichier app.py et changez le "Type" en "Tous types" dans le menu déroulant.

4. Ensuite, enregistrez le fichier à l'endroit où vous avez créé le dossier "docs" (dans mon cas, il s'agit du Bureau). Vous pouvez changer le nom à votre guise, mais assurez-vous que .py est ajouté.

5. Assurez-vous que le dossier "docs" et "app.py" se trouvent au même endroit. Le fichier "app.py" sera à l'extérieur du dossier "docs" et non à l'intérieur.

6. Revenez au code dans Notepad++. Remplacez ici "Votre clé API OpenAI" par celle générée sur le site web d'OpenAI ci-dessus.

7. Enfin, appuyez sur "Ctrl + S" pour enregistrer le code. Vous êtes maintenant prêt à exécuter le code.

Créer un ChatGPT AI Bot avec une base de connaissances personnalisée

1. Tout d'abord, ouvrez le Terminal et exécutez la commande ci-dessous pour vous déplacer sur le Bureau. C'est là que j'ai enregistré le dossier "docs" et le fichier "app.py". Si vous avez sauvegardé ces deux éléments à un autre endroit, déplacez-vous à cet endroit via le Terminal.

cd Bureau

2. Exécutez maintenant la commande ci-dessous. Les utilisateurs de Linux et de macOS devront peut-être utiliser python3.

python app.py

3. Maintenant, il va commencer à analyser le document en utilisant le modèle OpenAI LLM et commencer à indexer les informations. En fonction de la taille du fichier et de la capacité de votre ordinateur, le traitement du document prendra un certain temps. Une fois le traitement terminé, un fichier "index.json" sera créé sur le bureau. Si le terminal n'affiche aucun résultat, ne vous inquiétez pas, il est peut-être encore en train de traiter les données. Pour votre information, il faut environ 10 secondes pour traiter un document de 30 Mo.

4. Une fois que le LLM a traité les données, vous obtiendrez quelques avertissements qui peuvent être ignorés sans risque. Enfin, au bas de la page, vous trouverez une URL locale. Copiez-la.

5. Maintenant, collez l'URL copiée dans le navigateur web, et voilà. Votre chatbot IA formé sur mesure par ChatGPT est prêt. Pour commencer, vous pouvez demander au chatbot IA quel est le sujet du document.

6. Vous pouvez poser d'autres questions, et le chatbot ChatGPT répondra à partir des données que vous avez fournies à l'IA. Voici donc comment vous pouvez créer un chatbot d'IA formé sur mesure avec vos propres données. Vous pouvez maintenant entraîner et créer un chatbot d'IA basé sur n'importe quel type d'information. Les possibilités sont infinies.

7. Vous pouvez également copier l'URL publique et la partager avec vos amis et votre famille. Le lien sera actif pendant 72 heures, mais vous devez également garder votre ordinateur allumé car l'instance du serveur fonctionne sur votre ordinateur.

8. Pour arrêter le chatbot d'IA formé sur mesure, appuyez sur "Ctrl + C" dans la fenêtre du terminal. Si cela ne fonctionne pas, appuyez à nouveau sur "Ctrl + C".

9. Pour redémarrer le serveur de chatbot AI, il suffit de se déplacer à nouveau vers l'emplacement du bureau et d'exécuter la commande ci-dessous. Gardez à l'esprit que l'URL locale sera la même, mais que l'URL publique changera après chaque redémarrage du serveur.

python app.py

10. Si vous souhaitez entraîner le chatbot IA avec de nouvelles données, supprimez les fichiers contenus dans le dossier "docs" et ajoutez-en de nouveaux. Vous pouvez également ajouter plusieurs fichiers, mais fournissez des informations sur le même sujet, sinon vous risquez d'obtenir une réponse incohérente.

11. Maintenant, exécutez à nouveau le code dans le Terminal, et il créera un nouveau fichier "index.json". Ici, l'ancien fichier "index.json" sera remplacé automatiquement.

python app.py

12. Pour suivre l'évolution de vos tokens, rendez-vous sur le tableau de bord en ligne d'OpenAI et vérifiez combien de crédits gratuit il vous reste.

13. Enfin, vous n'avez pas besoin de toucher au code, sauf si vous souhaitez modifier la clé API ou le modèle OpenAI pour une personnalisation plus poussée.

Voici donc comment vous pouvez entraîner un chatbot d'IA avec une base de connaissances personnalisée. J'ai utilisé ce code pour entraîner l'IA sur des livres médicaux, des articles, des tableaux de données et des rapports provenant de vieilles archives, et cela a fonctionné sans problème.