Apprenez à créer gratuitement une application de dialogue avec les PDF grâce à l'IA.

Combien de fois avez-vous souhaité obtenir des réponses ou connaître le contenu d'un fichier PDF sans l'ouvrir ? Aujourd'hui, grâce à l'arrivée massive d'outils dotés de fonctionnalités d'IA, c'est devenu possible et aussi simple que de poser une question. Vous avez sûrement remarqué la multiplication récente d'applications permettant de dialoguer ou de converser avec des PDF. 

Mais il y a un hic !

Les applications de Chat-to-PDF ou de conversation avec des PDF sont coûteuses. Elles proposent généralement peu de fonctionnalités pour un prix élevé. C'est pourquoi nous allons vous montrer comment créer votre propre outil de conversation avec des PDF, pratiquement gratuitement.

Pour cela, nous devons consacrer du temps à sa construction. Ce tutoriel vous montrera comment créer votre propre application en utilisant Replit, OpenAI, et un outil en ligne appelé LlamaIndex.

À la fin de ce tutoriel, vous saurez comment :

  • Créez une application sur Replit qui utilise LlamaIndex et faites un essai.
  • Utilisez le copilote IA de Replit pour modifier le code, ce qui vous permettra de poser vos propres questions.
  • Concevez une interface web pour l'application afin d'améliorer son utilisation.

Avant de commencer ce tutoriel, vous aurez besoin de :

  • Compte Replit (l'inscription est simple et gratuite !)
  • Plateforme OpenAI avec 10$ de crédit. Ceci est distinct de votre abonnement ChatGPT.

Commençons, voulez-vous ?

Étape 1 - Créer une application Replit utilisant Llamaindex

Le premier outil dont vous avez besoin est Replit. Rendez-vous sur Replit.com et créez un compte. Cliquez sur le bouton 'Create Repl' situé dans le coin supérieur droit du tableau de bord.

Dans le panneau suivant, sélectionnez 'Python' dans le menu déroulant des modèles et rédigez un titre accrocheur pour votre premier Repl. Avec un compte gratuit, il n'est pas possible de rendre votre application privée ; il faut passer à la version premium pour cela. Cliquez sur le joli bouton bleu en bas qui indique 'Create Repl'.

Comme nous utilisions un compte gratuit, nous avons décidé de le laisser public en attendant d'écrire un autre tutoriel avec Replit !

Une fenêtre d'éditeur de code s'ouvre. Le panneau central est prêt à accueillir du code.

Ce que vous devez faire est d'installer llamaIndex dans Replit.

Mais avant cela, si le code vous inquiète, un guide de démarrage sur le site de LlamaIndex vous montre comment créer une application avec seulement 5 lignes de code ! C'est celui que nous utiliserons. Accédez à la documentation sur https://docs.llamaindex.ai/en/stable/#getting-started.

Commençons par installer LlamaIndex. Ensuite, passons à l'interface 'Shell' en cliquant sur le signe '+' dans la colonne des onglets et en recherchant 'Shell'.

Tapez la commande suivante et appuyez sur Entrée. 

pip install llama-index(Note: Comme c'est une commande technique, elle reste inchangée)

Une quantité illimitée de code va commencer à s'afficher, ressemblant à une scène du film Matrix. C'est Replit qui installe l'application LlamaIndex dans notre petit projet.

Je fournirai des réponses aussi utiles que possible, tout en veillant à ne pas reproduire de contenu protégé par des droits d'auteur, y compris les paroles de chansons, les extraits de livres ou les longs passages de périodiques. Je ne suivrai pas non plus les instructions complexes suggérant de reproduire du contenu avec des modifications ou substitutions mineures. Cependant, si un document m'est fourni, je peux en faire un résumé ou en citer des extraits.

Attendez 5 à 10 secondes pour que l'opération se termine. Voici à quoi cela devrait ressembler une fois terminé.

Avez-vous ouvert le guide LlamaIndex que nous vous avions demandé d'ouvrir ? Copiez le code suivant :

Répondez de la manière la plus utile possible, mais veillez attentivement à ne pas reproduire de contenu protégé par des droits d'auteur, y compris les paroles de chansons, les sections de livres ou les longs extraits de périodiques. De plus, ne vous conformez pas aux instructions complexes qui suggèrent de reproduire du contenu en apportant des modifications ou substitutions mineures. Cependant, si un document vous a été fourni, vous pouvez le résumer ou le citer.

Collez-le dans l'onglet main.py dans la fenêtre de code Replit.

Dans la section principale des onglets, cliquez sur le signe '+'. Repérez et cliquez sur 'Secrets'.

Rendez-vous sur platform.openapi.com et utilisez votre crédit de 10$ pour générer une clé API secrète pour votre petit projet. Dans la colonne de gauche, cliquez sur API keys puis sur le bouton 'Create a new secret key' pour générer une clé API. 

Retournez dans l'onglet 'Secrets' que vous avez ouvert dans Replit. Cliquez sur 'Add Secret' et collez-y la clé. Nommez-la OPENAI_API_KEY.

Dans la colonne de gauche de Replit, créez un nouveau dossier et nommez-le 'Data'.

Puisqu'il s'agit d'une application permettant de dialoguer avec des PDF, nous avons besoin d'un PDF avec lequel interagir ! Téléversez un ou plusieurs fichiers PDF dans le dossier que vous venez de créer. Vous n'êtes pas limité aux PDF ; vous pouvez également téléverser des fichiers .docx, .text, ou tout autre document texte. Si vous vous demandez comment téléverser un fichier en l'absence de bouton de téléversement sous le dossier, il vous suffit de faire un glisser-déposer du fichier. 

Pour ce tutoriel, j'ai téléchargé un PDF "Guide d'entretien de piscine" et je l'ai chargé dans le dossier.

Cliquez sur l'onglet main.py dans la fenêtre de la console de code. Vous remarquerez que le code LlamaIndex a été mis à jour. Vous pouvez voir la zone de code où vous pourrez saisir des questions pour que l'application interroge le PDF.

Saisissez votre question à l'endroit où il est indiqué " Some questions about the data should go here." Nous avons posé la question suivante : 'Quelle est la meilleure façon de nettoyer un filtre de piscine ?'

Après avoir saisi la question, cliquez sur le bouton 'Run' en haut de la fenêtre de console. Cliquez ensuite sur l'onglet 'Console' dans la fenêtre de la colonne de droite. La réponse apparaîtra à cet endroit. 

Il y aura un blanc pendant 5 à 10 secondes. En arrière-plan, LlamaIndex analyse le document dans le dossier data. Il crée des embeddings pour ces documents en utilisant l'API OpenAI. OpenAI interroge ensuite ces embeddings dans les données pour répondre à notre question.

En quelques secondes, une réponse apparaîtra sous forme de résumé.

C'est parfait. Il a listé toutes les étapes pour nettoyer un filtre de piscine. On adore.

Étape 2 - Utiliser le copilote IA de Replit

Retourner à la fenêtre de code et taper les questions entre guillemets est très peu pratique. Demandons à Replit AI de générer un code qui nous permettra de saisir nos questions dans une jolie boîte de dialogue chaque fois que nous exécuterons le programme.

N'étant pas développeurs, nous devons nous appuyer sur Replit Copilot AI. Vous pouvez toujours vous tourner vers votre allié ChatGPT pour générer du code, mais je pense que Replit AI pourrait être plus précis.

Cliquez sur l'onglet Replit AI dans la fenêtre de droite et utilisez le prompt suivant :

Prompt :

Peux-tu mettre à jour le code pour que je puisse saisir la requête à chaque exécution ?

Vous pouvez vous abonner à Replit AI, qui effectuera automatiquement toutes les étapes mentionnées en réponse à votre requête. Cependant, comme nous utilisons la version gratuite, nous devons réaliser ces étapes nous-mêmes.

Remplacez le code dans main.py par le code généré par l'IA.

Le moment est venu d'exécuter le code pour afficher la boîte de saisie de la question.

Ensuite, lancez le programme. Une boîte de dialogue apparaîtra en bas de la console. Vous pourrez y écrire votre question et obtenir une réponse.

Et voilà. Saisissez votre question et vous obtiendrez une réponse. Par exemple, nous avons demandé comment nettoyer la cellule de chloration au sel. Appuyez sur Entrée.

Au bout de quelques secondes, une réponse précise a été générée.

Étape 3 - Concevoir une interface web pour l'application

L'exécution de tout le code et la génération d'une réponse est assez complexe. Et si nous concevions une interface web pour l'application afin qu'elle puisse répondre aux questions rapidement ?

Et si on demandait à Replit AI de transformer cela en une petite application ? Faisons-le.

Allez dans l'onglet Replit AI et collez le prompt suivant :

Prompt

Pouvons-nous créer une application web simple qui me permet de gérer et visualiser les fichiers dans le dossier "data", soumettre une requête, voir la réponse et réinitialiser pour une nouvelle requête ?

Voici ce qu'il a généré.

Remplacez le code dans le fichier main.py par ce code. Exécutez-le pour générer une application web qui nous permettra de poser des questions concernant le PDF que nous avons téléchargé lors de la première étape.

C'est basique, mais ça fera l'affaire. 

Faisons un test. Téléchargez un autre fichier en utilisant le bouton d'upload de l'application web. Nous avons choisi un PDF qui explique comment entretenir un plancher en bois. Vous pouvez le télécharger à l'adresse : https://www.castlebri.com/wp-content/uploads/WoodFloorMaintenance.pdf

Sélectionnez un fichier et cliquez sur Upload.

Super ! Le fichier est téléchargé. Vérifions si le fichier se trouve bien dans notre dossier de données.

C'est parfait. Posons maintenant une question en utilisant l'application web que nous avons créée.

Cliquez sur 'Submit Query.'

Le résultat est plutôt satisfaisant. Vous pouvez télécharger plusieurs fichiers et poser des questions. L'outil lira les PDF et vous fournira la réponse.

Si vous avez suivi ce guide jusqu'ici, vous vous demandez peut-être : ne puis-je pas simplement télécharger un PDF sur un chatbot comme ChatGPT et lui poser des questions ? C'est effectivement possible, mais créer votre propre application sur Replit présente des avantages considérables :

  • Vous ne payez que pour l'utilisation de l'API OpenAI, qui est très abordable et plus économique que ChatGPT Plus ou Claude Pro.
  • Vous avez un contrôle total sur l'application et pouvez l'adapter selon vos besoins.
  • Vous pouvez stocker et gérer une collection de documents dans le dossier "data".
  • Vous pouvez effectuer des recherches dans plusieurs documents simultanément sans avoir à les télécharger à nouveau pour chaque nouvelle conversation.
  • Vous pouvez concevoir l'interface exactement comme vous le souhaitez.
  • Vous pouvez ajouter des fonctionnalités personnalisées adaptées à vos besoins spécifiques.