Vous êtes sur la page 1sur 60

PROJET INDUSTRIEL DE FIN D’ETUDE

Présenté pour l’obtention du titre :


« Ingénieur d’état Arts et Métiers »

Génie Industriel : Intelligence Artificielle & Data Science

Par : HARCHAOUI Mohamed Amine

Sous le Thème :

Développement d'une application de chat avec


des données structurelles.

Rapport présenté le XX/XX/2024, devant le jury :

JURY 1…… ……………..……………………….... Président de Jury (ENSAM-Meknès)


JURY 2………. …….……………………………..……….. Rapporteur (ENSAM-Meknès)
JURY 3……………………….……..…..………… Parrain Industriel (STMicroelectronics)
JURY4………………..………………….……. Encadrant Académique (ENSAM-Meknès)

Année Universitaire : 2023 / 2024


Numéro du PIFE : ………….
Dédicace :

Je dédie ce travail

A mes parents qui m’ont soutenu et encouragé sans cesse durant toutes mes

années d’étude. Qu’ils trouvent ici le témoignage de ma profonde

reconnaissance, ma gratitude et mon affection. A mes frères, mes oncles,

mes grands-parents et ceux qui ont partagé avec moi tous les moments

d’émotion lors de la réalisation de ce travail, A ma famille, mes proches

et à ceux qui me donnent de l’amour et de la vivacité


Résumé :

Le présent rapport détaille le travail accompli lors d'un stage de quatre mois effectués au
sein de l'entreprise STMicroelectronics Bouskoura, intégré dans le cursus de formation
d'Ingénieur de l'École Nationale Supérieure d'Art et Métiers (ENSAM).

Ce projet avait pour objectif le développement d'une application de chat innovante, conçue
pour faciliter l’analyse des données structuré format CSV, l’utilisateur va simplement entrer
sa requête et l’application va retourner le résultat cherché.

Ce rapport présente toutes les étapes suivies pour la réalisation de ce projet, allant de la
définition de la problématique et du choix des solutions adoptées à leur mise en œuvre,
ainsi que le développement d’une interface de chat conviviale pour les utilisateurs.

Mots clés : Application de chat, Données structurées, CSV, Intelligence artificielle, LLM.
Abstract:

This report details the work completed during a four-month internship at STMicroelectronics
Bouskoura, which is part of the engineering curriculum at the École Nationale Supérieure
d'Arts et Métiers (ENSAM).

The project aimed to develop an innovative chat application designed to facilitate the
analysis of structured CSV format data. The user will simply enter their query, and the
application will return the sought-after result.

This report presents all the steps followed in the realization of this project, from defining the
problem and choosing the adopted solutions to their implementation, as well as the
development of a user-friendly chat interface.

Keywords: Chat application, Structured data, CSV, Artificial Intelligence, LLM.


Liste des figures :

Figure 1 : Différent sites de ST dans le monde ....................................................................16

Figure 2 : les étapes suivaient pour la construction des semi-conducteurs .........................18

Figure 3 : Quelque client de STMicroelectronics .................................................................20

Figure 4 : Engagements & Certificats de STMicroelectronics ..............................................20

Figure 5 : le marché des microélectroniques dans les prochaines années .........................21

Figure 6 : les départements de STM Bouskoura .................................................................24

Figure 7 : Diagramme GANTT du projet ..............................................................................28

Figure 8 : La relation entre IA, ML et DL ..............................................................................31

Figure 9 : Illustration des réseux de neurones .....................................................................32

Figure 10 : Architecture du Transformer ..............................................................................35

Figure 11 : histoire des Transformers ..................................................................................36

Figure 12 : un exemple de la modélisation causale du langage ..........................................36

Figure 13 : un exemple de la modélisation du langage masqué ..........................................37

Figure 14 : schéma générale d’agent exécuteur ..................................................................37

Figure 15 : Architecture du premier plan..............................................................................40

Figure 16 : Quelque histogramme représentant la performance de Mistral 7B par rapport à


LLaMa 2...............................................................................................................................41

Figure 17 : Quelque diagramme représentant la performance de Mistral 7B par rapport à


LLaMa 2...............................................................................................................................42

Figure 18 : La forme de chaque line du dataset ..................................................................43

Figure 19 : Réponse de l’évaluateur ....................................................................................43

Figure 20 : Résultat de l’évaluation .....................................................................................44

Figure 21 : LlamaIndex logo ................................................................................................45


Figure 22 : PandasAI logo ...................................................................................................46

Figure 23 : Langchain logo ..................................................................................................46

Figure 24 : Architecture du deuxième plan ..........................................................................47

Figure 25 : Diagramme séquentiel de ConversationalRetrievalChain .................................48

Figure 26 : Architecture du RAG ..........................................................................................49

Figure 27 : Architecture de la solution finale ........................................................................54

Figure 28 : graph représentant la latence de la chaine principale sur un GPU L4 ...............55

Figure 29 : graph représentant la latence de la chaine correction sur un GPU L4 ..............57

. Figure 30 : graph représentant la latence de la chaine d’explication sur un GPU L4 ........58


Liste des tableaux :

Tableau 1 : Produits STM BOUSKOURA ............................................................................19

Tableau 2 : ST dans le marché des semiconducteurs en 2019/20 ......................................22

Tableau 3 : Fiche d’identité STM Bouskoura .......................................................................23

Tableau 4 : Tableau récapitulatif des différences entre IA Faible et IA Forte ......................30

Tableau 5 : Sélection des applications de l’IA générative par secteur d’activité ............Error!

Bookmark not defined.


Liste des abréviations :
Table de matière :

Introduction Générale : ........................................................................................................14


Chapitre I : ...........................................................................................................................15
I Introduction : ..............................................................................................................16
II Présentation de l’entreprise : .....................................................................................16
II.1 STMicroelectronics dans le monde : ..................................................................16
II.2 Historique de STMicroelectronics : ....................................................................17
II.3 Produit de STMicroelectronics : .........................................................................18
II.3.A Présentation du produit : ................................................................................18
II.3.B Procédures de production : ............................................................................18
II.3.C Quelques produits de STMicroelectronics : ....................................................19
II.4 Les clients de STMicroelectronics : ...................................................................19
II.5 Engagements & Certificats de STMicroelectronics : ..........................................20
II.6 Performance Exceptionnelle de ST en 2022 :....................................................21
III STMicroelectronics Bouskoura : ................................................................................22
III.1 Fiche d’Identité STM BOUSKOURA : ................................................................23
III.2 Les différents départements de STM Bouskoura : .............................................23
IV Conclusion : ............................................................................................................25
Chapitre II : ..........................................................................................................................26
I Introduction : ..............................................................................................................27
II Présentation du projet : ..............................................................................................27
II.1 Contexte de projet : ...........................................................................................27
II.2 Cahier de charge : .............................................................................................27
III Définitions des concepts clé : ....................................................................................28
III.1 Intelligence Artificielle : ......................................................................................28
III.1.A Types d’intelligence artificielle : ..................................................................29
III.1.A.a IA Faible : ................................................................................................29
III.1.A.b IA Forte : .................................................................................................30
III.2 Deep Learning et Machine Learning: .................................................................31
............................................................................................................................................32
III.3 IA Générative : ...................................................................................................32
III.3.A Comment fonctionne l'IA générative : .........................................................33
III.3.B Les applications de l'IA générative : ...........................................................33
III.4 Les grands modèles linguistiques (LLM) : .........................................................34
III.4.A Comment fonctionne les LLMs : .................................................................34
III.4.B Les Transformers : .....................................................................................34
III.4.B.a L’architecture des Transformers : ...........................................................35
III.4.B.b L’histoire des Transformers :...................................................................35
III.4.B.c Quelques tâches des Transformers : ......................................................36
III.5 Agent exécuteur :...............................................................................................37
IV Conclusion : ............................................................................................................38
Chapitre III : .........................................................................................................................39
I Introduction : ..............................................................................................................40
II Premier plan : ............................................................................................................40
II.1 Architecture :......................................................................................................40
II.2 Open source LLM : ............................................................................................40
II.2.A Mistral 7B : .....................................................................................................41
II.2.B Comparaison entre Mistral 7B et LLaMa 2 : ...................................................41
II.2.C Évaluation du Mistral 7B :...............................................................................42
II.3 Agent : ...............................................................................................................45
II.3.A LLamaIndex : .................................................................................................45
II.3.A.a Qu’est-ce que c’est LlamaIndex : ............................................................45
II.3.A.b LlamaIndex Agent : .................................................................................45
II.3.B PandasAI :......................................................................................................45
II.3.B.a Qu’est-ce que c’est PandasAI : ...............................................................45
II.3.B.b PandasAI agent : ....................................................................................46
II.3.C Langchain :.....................................................................................................46
II.3.C.a Qu’est-ce que c’est Langchain : ..............................................................46
II.3.C.b Langchain Agent : ...................................................................................46
III Deuxième plan : .........................................................................................................47
III.1 Architecture :......................................................................................................47
III.2 Les chaînes de Langchain : ...............................................................................47
III.2.A Définition :...................................................................................................47
III.2.B Les types des Chaines : .............................................................................48
III.2.B.a LCEL chaînes : .......................................................................................48
III.2.B.b Legacy Chaînes: .....................................................................................48
III.3 RAG : .................................................................................................................49
III.3.A Définition :...................................................................................................49
III.3.B Modèle d'embedding: .................................................................................49
III.3.C Base de données des vecteurs : ................................................................50
III.3.D Recherche par similarité : ...........................................................................50
III.3.E Mes choix pour RAG :.................................................................................50
III.4 Analyse du résultat : ..........................................................................................51
IV Conclusion : ............................................................................................................51
Chapitre IV :.........................................................................................................................52
I Introduction : ..............................................................................................................53
II Amélioration de la meilleure solution : .......................................................................53
II.1 Architecture :......................................................................................................53
II.2 La chaîne Principale : ........................................................................................54
II.2.A Type : .............................................................................................................54
II.2.B Entrée :...........................................................................................................54
II.2.C Sortie : ............................................................................................................55
II.3 La chaîne de correction : ...................................................................................56
II.3.A Type : .............................................................................................................56
II.3.B Entrée :...........................................................................................................56
II.3.C Sortie : ............................................................................................................56
II.4 La chaine d’explication : ....................................................................................57
II.4.A Type : .............................................................................................................57
II.4.B Entrée :...........................................................................................................57
II.4.C Sortie : ............................................................................................................58
III Développement de l’application : ...............................................................................59
Introduction Générale :

Dans le contexte actuel de transformation digitale, les entreprises de tous les


secteurs sont confrontées à la nécessité d'améliorer constamment la qualité de leurs
produits et services. Face à une concurrence mondiale accrue et à des clients de plus en
plus exigeants, il est impératif d'adopter des stratégies innovantes qui embrassent
l'évolution économique et technologique. Cela est particulièrement vrai dans le domaine du
développement logiciel, où l'efficacité et la réactivité sont essentielles pour répondre aux
besoins des utilisateurs et intégrer les principes du développement durable. Avec
l'avènement des technologies de l'information et de la communication, les entreprises
doivent s'adapter rapidement pour rester compétitives et faire face aux changements
rapides du marché.

Notre projet de fin d'études s'inscrit parfaitement dans cette dynamique. Il vise à
développer une application de chat innovante qui utilise des données structurées au format
CSV pour améliorer l'interaction et la communication entre les utilisateurs. En exploitant les
capacités de l'intelligence artificielle, notre application sera capable d'analyser et de traiter
de grandes quantités de données pour fournir une expérience utilisateur personnalisée et
intuitive.

Ce mémoire se divise en quatre chapitres principaux. Le premier chapitre est une


présentation générale de l’entreprise d’accueil.

Le deuxième chapitre se concentre sur la présentation du projet et des concepts clés


liés à l'intelligence artificielle qui sont pertinents pour notre projet.

Le troisième chapitre détaille notre processus de recherche pour identifier une


solution efficace. Il présente les différentes options envisagées afin de répondre aux
exigences du projet.

Le quatrième et dernier chapitre est consacré à la présentation de la solution finale,


qui constitue une amélioration de la meilleure solution trouvée. Nous abordons également
la présentation de l’application développée.
Chapitre I :

Présentation d’Organisme
d’Accueil
I Introduction :
L’objectif de ce chapitre est de situer le projet dans un environnement organisationnel
et contextuel. Nous commencerons par une présentation de l’organisme d’accueil, ensuite
nous passerons à une présentation du contexte du projet, le cahier des charges et la
démarche de travail adoptée.

II Présentation de l’entreprise :
STMicroelectronics est une société internationale d'origine franco-italienne dont le
siège opérationnel et exécutif est situé à Plan-les-Ouates, près de Genève en Suisse.

C’est un fabricant mondial indépendant de semi-conducteurs qui conçoit, développe,


fabrique et commercialise une vaste gamme de circuits intégrés et de composants discrets
utilisés dans des nombreuses applications microélectroniques telles que les
communications, l’informatique, le grand public ou bien encore l’automobile et diverses
applications industrielles. Elle est, actuellement, considérée parmi les grands groupes les
plus organisés et les plus structurés du monde.

II.1 STMicroelectronics dans le monde :


STMicroelectronics est une entreprise mondiale présente dans de nombreux pays à
travers le monde. Elle possède des centres de conception, de production et de recherche
dans diverses régions. Voici un aperçu de la présence de STMicroelectronics dans
différentes parties du monde.

Figure 1 : Différent sites de ST dans le monde


II.2 Historique de STMicroelectronics :
- SGS Microelettronica (Italie) :

1957 ➔ La société Società Generale Semiconduttori (SGS) est fondée en Italie pour produire des
semi-conducteurs.

1962 ➔ SGS fabrique le premier circuit intégré en silicium de l'histoire de l'entreprise.

- Thomson Semiconducteurs (France) :

1982 ➔ La société Thomson Semiconducteurs est créée en France, issue de la société


Thomson-CSF (Compagnie Générale de Télégraphie Sans Fil).

1984 ➔ Thomson Semiconducteurs développe son premier microcontrôleur.

- Fusion et création de STMicroelectronics :

1991 ➔ ST et Philips Semi-conducteurs signent un accord de partenariat technologique qui


permet à Philips de bénéficier de la nouvelle salle blanche de l'unité RS SGSThomson à
Crolles pour un projet appelé "Grenoble 92".

1993 ➔ Correction de la date pour la nouvelle salle blanche de l'unité RS SGS-Thomson à


Crolles pour le projet "Grenoble 92".

1994 ➔ ST achète certains actifs de la société canadienne Nortel dans le domaine des
semi-conducteurs ainsi que l'usine de Rancho Bernardo. En 2000, STMicroelectronics
acquiert également les actifs de l'usine de semi-conducteurs à Ottawa, toujours auprès de
Nortel.

1994 ➔ ST et SHIC (Filiale de SEG) créent la joint-venture Shenzhen STS Microelectronics


(60-40), basée à Shenzhen.

2002 ➔ Motorola Semi-conducteurs et TSMC s'associent au partenariat technologique ST-


Philips. Cela conduit à la création de l’"Alliance Crolles 2" avec la construction d'une
nouvelle unité de production utilisant des tranches de 300 mm (12 pouces) dans une salle
blanche de 10 000 m².

2002 ➔ Correction de l'acquisition de la division micro-électronique d'Alcatel.

2003 ➔ ST annonce l'acquisition de la société belge Proton World International (PWI),


développeur de logiciels pour cartes à puce, propriétés d'ERG Groupe.
2005 ➔ STMicroelectronics devient la cinquième plus grande société de semiconducteurs
au monde, derrière Intel, Samsung, Texas Instruments et Toshiba, mais devant Infineon,
Renesas, NEC, NXP et Freescale. ST est également le plus grand producteur de semi-
conducteurs en Europe, devant Infineon et NXP.

II.3 Produit de STMicroelectronics :

II.3.A Présentation du produit :

STMicroelectronics crée des circuits électroniques invisibles qui sont intégrés dans
des puces, lesquelles sont présentes dans des millions, voire des milliards d'appareils
électroniques utilisés chaque jour. Ces puces sont conçues avec les avancées
technologiques les plus récentes en matière de performance, d'intelligence et d'efficacité, et
jouent un rôle clé dans des produits et équipements tels que les voitures, les machines
industrielles, les smartphones et les brosses à dents électriques.

STMicroelectronics aide ses clients à rendre leurs produits plus intelligents, moins
gourmands en énergie, plus connectés, plus sûrs et davantage sécurisés grâce à ses
innovations avancées.

II.3.B Procédures de production :

Figure 2 : les étapes suivaient pour la construction des semi-conducteurs


II.3.C Quelques produits de STMicroelectronics :

En dessous, un tableau représentant différents packages et les produits qu'ils contiennent :

Tableau 1 : Produits STM BOUSKOURA

II.4 Les clients de STMicroelectronics :


STMicroelectronics compte parmi ses clients de nombreuses entreprises de divers
secteurs à travers le monde. En raison de son rôle majeur dans l'industrie des semi-
conducteurs et de l'électronique, STMicroelectronics fournit des solutions à un large
éventail de clients, allant des petites entreprises aux grandes multinationales. Voici
quelques exemples des clients de STMicroelectronics :
Figure 3 : Quelque client de STMicroelectronics

II.5 Engagements & Certificats de STMicroelectronics :


STMicroelectronics est une entreprise mondiale de semi-conducteurs qui propose une
large gamme de produits et services dans l'industrie électronique. Ils fournissent une
variété de programmes d'engagement et de certification pour leurs clients et partenaires.

Figure 4 : Engagements & Certificats de STMicroelectronics


II.6 Performance Exceptionnelle de ST en 2022 :

En 2022, STMicroelectronics a été portée par une demande plus soutenue que prévu
sur l'ensemble de ses marchés. Cette dynamique a conduit la direction de l'entreprise à
réviser à la hausse ses projections. À l'origine, l'entreprise s'attendait à un chiffre d'affaires
compris entre 14,8 et 15,3 milliards de dollars, ce qui aurait représenté une augmentation
médiane de 18 % par rapport à l'année 2021, ainsi qu'une marge brute d'environ 46 %.
Cependant, de nouvelles projections ont été formulées, plus optimistes, avec un chiffre
d'affaires prévu entre 15,9 et 16,2 milliards de dollars, reflétant une croissance médiane
annuelle de 25,8 %, et une marge brute ciblée à 47 %.

Ces prévisions ont été renforcées par les solides résultats du deuxième trimestre de
l'année 2022, qui ont surpassé les attentes des analystes financiers. Le chiffre d'affaires a
atteint 3,84 milliards de dollars, se situant au sommet de la fourchette de prévisions de la
direction et dépassant le consensus financier de 80 millions de dollars. La marge
d'exploitation a culminé à 26,2 %, entraînant une augmentation du bénéfice par action à 92
cents de dollars, soit 12 cents de dollars de plus que le consensus. Ces performances ont
été bien accueillies par les marchés financiers, avec une hausse d'environ 3 % du cours de
l'action à la bourse de Paris au moment de la publication des résultats.

Figure 5 : le marché des microélectroniques dans les prochaines années


Tableau 2 : ST dans le marché des semiconducteurs en 2019/20

III STMicroelectronics Bouskoura :


STMicroelectronics possède une importante installation à Bouskoura, au Maroc. Cette
unité joue un rôle stratégique dans la production de semi-conducteurs et de composants
électroniques avancés pour une variété d'applications industrielles et grand public. L'usine
de Bouskoura contribue à la chaîne d'approvisionnement mondiale de STMicroelectronics
en produisant une large gamme de produits, allant des microcontrôleurs aux circuits
intégrés spécialisés en passant par les capteurs.

L'emplacement de l'usine à Bouskoura lui confère une position avantageuse, favorisant


les collaborations et les synergies avec d'autres unités de l'entreprise à travers le monde.
Cette installation reflète l'engagement continu de STMicroelectronics à répondre aux
besoins croissants du marché des semi-conducteurs tout en assurant une production de
haute qualité et en soutenant l'innovation technologique.
III.1 Fiche d’Identité STM BOUSKOURA :
En dessous, un tableau représentant la fiche d’identité de STM Bouskoura :

Tableau 3 : Fiche d’identité STM Bouskoura

III.2 Les différents départements de STM Bouskoura :


Au sein de l'installation de STMicroelectronics à Bouskoura, une variété de
départements opère en harmonie pour soutenir les opérations, stimuler l'innovation et
assurer la qualité exceptionnelle des produits. Chaque département joue un rôle spécifique
et essentiel dans le fonctionnement de l'usine, contribuant à la réalisation des objectifs
globaux de l'entreprise. De la production à la recherche et développement, en passant par
la qualité, les ressources humaines et la logistique, chaque département apporte sa
contribution unique à la réussite continue de STMicroelectronics à Bouskoura.
Figure 6 : les départements de STM Bouskoura

- Département Planning :

Ce département se charge des plannings de production, de l’approvisionnement, du


stockage, de la réception et de la livraison des matières premières et des produits finis.

- Département Manufacturing :

Il a pour mission la gestion des toutes les opérations de fabrication, de maintenance des
équipements et de l’optimisation des rendements.

- Département Ressources Humaines :

Ce département est responsable du recrutement, de la formation (existence du Learning


Institute au sein du site pour l’amélioration des compétences), du service médico-social, de
la paie et de la gestion du personnel.
- Département Central Engineering :

Ce département a pour rôle d’introduire et qualifier les nouveaux process et nouveaux


produits, d’optimiser les processus existants et de superviser les programmes de
développement avec les divisions et le central Back End. C’est dans ce département que
j’ai passé mon stage de fin d’étude.

- Département Support Equipement :

Ce service se charge de la mise en place et la qualification des nouveaux équipements de


production, il réalise des essais afin de pouvoir s’assurer de la performance des
équipements et procède à des optimisations.

- Département Qualité :

Son rôle principal est mis en place un système qualité conforme aux normes internationales
les plus sévères afin de satisfaire totalement les clients.

- Département Finances :

Ce département s’occupe des achats et des contacts avec les fournisseurs.

- Département Informatique :

Son rôle principal est la gestion des machines de traitement de l’information, leur
installation et leur maintenance hardware et software. Il s’occupe aussi de tout ce qui est
partie informatique dans les machines de production, sans oublier les outils de
télécommunications.

IV Conclusion :
Dans ce premier chapitre, j’ai présenté l’entreprise STMicroelectronics. Dans le
chapitre suivant je vais présenter le contexte général du projet ainsi que la présentation des
outils utilisés pour la réalisation du projet.
Chapitre II :

Présentation du projet et définition des


concepts clés
I Introduction :
Dans ce deuxième chapitre nous allons présenter le projet en définissant sont contexte
générale, sa problématique et le cahier de charge, puis on va définir ses concepts clé.

II Présentation du projet :

II.1 Contexte de projet :


Le projet consiste à développer une application permettant aux utilisateurs d'analyser
leurs données tabulaires sans avoir à écrire du code. Il leur suffira de fournir le fichier et la
requête, puis un agent exécuteur prendra les données afin de générer la solution cherchée
par l'utilisateur.

II.2 Cahier de charge :

Objectif du projet :

Développement d'une application qui accepte les fichiers CSV, et les requêtes de
l'utilisateur en entrée et retourne une réponse comprenant un préambule, le code Python
correspondant, ainsi que le résultat de l'exécution de ce code.

Analyse des Besoin :

• Développement d'une application intuitive : L'interface utilisateur doit être conçue


pour être facile à comprendre et à utiliser par l'utilisateur.

• Minimisation des erreurs de l'agent exécuteur : L'application doit être conçue de


manière à réduire au maximum les erreurs d'exécution de l’agent.

• Réactivité de l'agent : L'application doit être conçue pour que le temps de réponse
de l'agent soient rapides.

Contraintes du projet :
-Les bibliothèques ne sont pas dans leur dernière version.
-Jupyter Notebook est le seul environnement de travail où je peux développer mon
projet.
-J’ai le droit d’utiliser un seul GPU.
-le travail doit être terminer en 4 mois.
-Il y a un manque d'informations spécifiques sur le sujet, ce qui est essentiel pour
une compréhension approfondie et l'avancement du projet.

Décomposition du projet en tâches :

1. Recherche approfondie sur le sujet


2. Sélection du modèle
3. Évaluation du modèle choisi
4. Test de tous des agents les plus connus
5. Amélioration d’agent qui apporte les meilleurs résultats
6. Développement du front-end
7. Test et déploiement

Planification des tâches :

Figure 7 : Diagramme GANTT du projet

III Définitions des concepts clé :

III.1 Intelligence Artificielle :


L’IA désigne la possibilité pour une machine de reproduire des comportements liés
aux humains, tels que le raisonnement, la planification et la créativité.

L’IA permet à des systèmes techniques de percevoir leur environnement, gérer ces
perceptions, résoudre des problèmes et entreprendre des actions pour atteindre un but
précis. L’ordinateur reçoit des données (déjà préparées ou collectées via ses capteurs -
une caméra, par exemple) les analyse et réagit.

Les systèmes dotés d’IA sont capables d’adapter leurs comportements (plus ou
moins) en analysant les effets produits par leurs actions précédentes, travaillant de manière
autonome.

Figure 8 : L’histoire de l’IA

III.1.A Types d’intelligence artificielle :

III.1.A.a IA Faible :
L’IA faible, également appelée IA étroite est une IA entraînée et ciblée pour effectuer des
tâches spécifiques. Elle est à l’origine de la plus grande partie de l’IA qui nous entoure
aujourd’hui.
III.1.A.b IA Forte :
L’IA forte se compose de l’intelligence artificielle générale (AGI) et de la superintelligence
artificielle (ASI). L’intelligence artificielle générale (AGI), ou IA générale, est une forme
théorique d’IA grâce à laquelle une machine aurait une intelligence équivalente à celle de
l’homme. Elle serait dotée d’une conscience autonome capable de résoudre des
problèmes, d’apprendre et de planifier l’avenir. La superintelligence artificielle (ASI),
également appelée superintelligence, surpasserait l’intelligence et les capacités du cerveau
humain. Bien que l’IA forte soit encore entièrement théorique et qu’aucun exemple pratique
ne soit utilisé aujourd’hui, cela ne signifie pas que les chercheurs en IA ne sont pas en train
d’explorer son développement.

Tableau 4 : Tableau récapitulatif des différences entre IA Faible et IA Forte


III.2 Deep Learning et Machine Learning:
DL et ML ayant tendance à être utilisés de manière interchangeable, il est bon de
noter les nuances existantes entre les deux. Comme indiqué plus haut, DL et le ML sont
tous deux des sous-domaines de l’intelligence artificielle, et le DL est en fait un sous-
domaine du ML.

Figure 8 : La relation entre IA, ML et DL

DL est en fait composé de réseaux neuronaux. Le terme « deep » (profond) fait


référence à un réseau neuronal composé de plus de trois couches (qui comprendraient les
entrées et les sorties) qui peut être considéré comme un algorithme du DL. Le diagramme
ci-dessous illustre bien cette notion.

Figure 9 : Illustration des réseux de neurones

La différence entre DL et ML réside dans la manière dont chaque algorithme


apprend. DL automatise une grande partie de l’extraction des caractéristiques, éliminant
ainsi une partie de l’intervention humaine manuelle nécessaire et permettant l’utilisation
d’ensembles de données plus importants. ML classique, ou « non profond », nécessite
davantage l’intervention humaine pour l’apprentissage. Les experts humains déterminent la
hiérarchie des caractéristiques pour comprendre les différences entre les entrées de
données, ce qui nécessite généralement des données plus structurées pour
l’apprentissage.

III.3 IA Générative :
L'intelligence artificielle générative est une technologie qui permet aux ordinateurs de
créer du contenu original, comme des images, de la musique ou des textes, de manière
autonome. Elle utilise des modèles d'apprentissage automatique pour analyser et
comprendre des données existantes, puis générer de nouvelles informations basées sur
ces connaissances. Cette technologie a révolutionné le domaine de l'IA car elle permet aux
machines de produire du contenu créatif et innovant sans intervention humaine directe. Les
acteurs clés dans le domaine de l'IA générative incluent des entreprises telles que OpenAI
et DeepMind, ainsi que des chercheurs et des développeurs travaillant sur des projets d'IA
générative.

III.3.A Comment fonctionne l'IA générative :


Pour comprendre comment fonctionne l'IA générative, il est essentiel de connaître
les principes fondamentaux de l'apprentissage machine et du deep learning. L'IA
générative utilise des modèles de réseaux neuronaux pour générer de nouvelles données
réalistes, telles que des images, des textes ou même des voix. Ces modèles sont formés
en exposant le réseau à de grandes quantités de données d'apprentissage. Lors de
l'entraînement, le réseau apprend à reconnaître les motifs et les structures des données,
puis peut générer de nouvelles données en utilisant ces connaissances. Cette approche
permet à l'IA générative de créer de manière autonome du contenu original et de générer
des résultats innovants dans des domaines tels que l'art, la musique et la création de
contenu.

III.3.B La différence entre l’IA générative et l’IA classique :

L’IA générative diffère de l’IA classique, dans la mesure où elle se présente sous la
forme d’applications en libre-service. Elle vise à produire des réponses semblables à celles
que formulerait un humain. Par comparaison, l’IA classique fonctionne sur des tâches
spécifiques, de manière non interactive, comme dans les algorithmes qui s’acharnent à
détecter les fraudes bancaires.

III.3.C Les applications de l'IA générative :


Les applications de l'IA générative sont vastes et variées. Voici quelques exemples :

• Dans le domaine de l'art, l'IA générative est utilisée pour créer des œuvres d'art
uniques et originales.

• En médecine, elle peut être utilisée pour générer des modèles de maladies et aider
à la recherche de nouveaux traitements.

• Dans le secteur du jeu vidéo, elle est utilisée pour créer des mondes virtuels et des
personnages réalistes.

• En finance, elle peut être utilisée pour prévoir les tendances du marché et effectuer
des investissements.

• Dans le domaine de la musique, elle est utilisée pour créer de nouvelles


compositions et aider les musiciens à explorer de nouveaux styles.
Ces applications démontrent le potentiel révolutionnaire de l'IA générative dans de
nombreux domaines.

III.4 Les grands modèles linguistiques (LLM) :


Que ce soit pour communiquer, se connecter, comprendre le monde, ou le façonner,
le langage est déterminant pour notre humanité. Ce qui nous caractérise ? Pas tant que ça.
Malgré la complexité du langage humain, les machines sont désormais capables d’en
comprendre les subtilités grâce aux LLMs. En utilisant un maximum de données pour leur
apprentissage, ces nouvelles technologies ont développé une compréhension du langage
plus riche que jamais.

Concrètement, il s’agit d’un réseau neuronal transformer-based. Ces modèles de


base utilisent l’IA générative (et plus précisément le Deep Learning) pour le traitement du
langage naturel (NLP) et la génération de langage naturel (NLG).

III.4.A Comment fonctionne les LLMs :


L’objectif des LLMs étant d’apprendre la complexité du langage humain, ils sont pré-
entraînés sur une grande quantité de données (comme du texte, des images, des vidéos,
des discours, des données structurées…). Plus un LLM utilise de paramètres, meilleures
sont ces performances. À ce titre, les grands modèles linguistiques nécessitent donc des
ressources importantes en termes de données, de calcul et d’ingénierie.

En particulier, lors de la phase de pré-entraînement. À ce stade, les LLMs doivent


apprendre les tâches et fonctions linguistiques de base. Dès lors que le modèle
d’apprentissage est pré-entraîné, il peut être entraîné avec de nouvelles données
spécifiques. L’objectif est d’affiner ses capacités pour des cas d’utilisation particuliers. On
parle alors de méthode fine tuning. Cette phase de l’apprentissage nécessite moins de
données et d’énergie.

III.4.B Les Transformers :


Un Transformer est une architecture d'apprentissage profond qui a révolutionné le
domaine du traitement automatique du langage naturel (TALN) et d'autres domaines de
l'intelligence artificielle. Il a été introduit par Vaswani et al. dans le papier intitulé "Attention
Is All You Need" en 2017. Cette architecture est devenue la pierre angulaire des modèles
de langage de grande taille.
III.4.B.a L’architecture des Transformers :
L'architecture du transformer est une innovation majeure dans le domaine de
l'apprentissage profond, spécialement conçue pour traiter des séquences de données telles
que le texte. Elle se distingue par sa capacité à traiter simultanément toutes les positions
de la séquence, ce qui permet un entraînement parallèle et efficace, contrairement aux
approches séquentielles comme les réseaux de neurones récurrents (RNN). Les
Transformers sont composés de deux composants principaux : l'encodeur et le décodeur.
L'encodeur transforme la séquence d'entrée en une série de représentations intermédiaires
riches en informations contextuelles, grâce à des couches d'attention multi-têtes et des
réseaux de neurones feed-forward. Le décodeur, en revanche, génère la séquence de
sortie en se concentrant à la fois sur les représentations fournies par l'encodeur et sur les
éléments précédemment générés, permettant ainsi une prédiction séquentielle.

Figure 10 : Architecture du Transformer

III.4.B.b L’histoire des Transformers :


En dessous, un graphe représentant l’histoires des Transformers :
Figure 11 : L’histoire des Transformers

III.4.B.c Quelques tâches des Transformers :


- Modélisation causale du langage : une tâche qui consiste à prédire le mot suivant
dans une phrase après avoir lu les n mots précédents.

Figure 12 : Un exemple de la modélisation causale du langage

- Modélisation du langage masqué : une tache qui consiste à prédire les mots
masqués dans une phrase.
Figure 13 : un exemple de la modélisation du langage masqué

III.5 Agent exécuteur :

Les agents exécuteurs sont des systèmes ou des programmes qui effectuent des actions
spécifiques en réponse à des commandes ou des conditions prédéfinies. Ils sont capables
de comprendre, d'interpréter et de manipuler le langage naturel, ce qui leur permet de
réaliser des tâches telles que la communication avec les utilisateurs, la recherche et le
traitement d'informations, ou l'exécution de fonctions spécifiques dans diverses
applications. Ces agents peuvent être intégrés dans des systèmes plus larges pour
automatiser des processus, fournir une assistance, et améliorer l'efficacité des interactions
homme-machine.

Figure 14 : schéma générale d’agent exécuteur


Pour rendre l'agent exécuteur plus rigoureux, on peut lui ajouter une mémoire et des
outils qui amélioreront sa capacité à traiter et à retenir l'information de manière efficace. La
mémoire permettra à l'agent de stocker des données et des expériences passées, les
rendant accessibles pour des analyses futures et des prises de décision éclairées. Quant
aux outils, ils peuvent comprendre des algorithmes avancés d'apprentissage automatique
qui adaptent et affinent les réponses de l'agent au fil du temps, des librairies spécialisées
pour le traitement de données complexes, ainsi que des interfaces de programmation qui
facilitent l'intégration avec d'autres systèmes et services. En combinant une mémoire
robuste avec un ensemble d'outils sophistiqués, l'agent devient plus autonome et précis, ce
qui augmente sa valeur en tant qu'assistant intelligent et réactif.

IV Conclusion :
Dans ce chapitre, j'ai donné un aperçu du projet. Nous passons maintenant au
troisième chapitre où nous allons explorer les différentes solutions choisies pour la
réalisation du projet.
Chapitre III :

Recherche de solution
efficace
I Introduction :
Ce chapitre représente le commencement du projet. Il va contenir les différentes
solutions pour chaque tâche, et la solution choisie parmi elles selon le besoin.

II Premier plan :

II.1 Architecture :
Mon premier plan était de développer un agent simple qui recevra la requête et le
fichier CSV de l'utilisateur. Ensuite, il observera et proposera des prompts au LLM, qui
retournera de sa part la réponse qu’il apparait la meilleure. Si la réponse est correcte,
l'agent la retournera à l’utilisateur.

Figure 15 : Architecture du premier plan

II.2 Open source LLM :


Les open source LLMs sont des plateformes d'intelligence artificielle dont le code
source est publiquement accessible, permettant à la communauté de les utiliser, les
examiner, les modifier et les améliorer. Contrairement aux modèles fermés close source
LLMs, qui sont propriétaires et dont l'accès et la modification sont restreints par des droits
d'auteur ou des licences commerciales.

II.2.A Mistral 7B :
Pour ce projet, j'ai décidé de travailler avec Mistral 7B, un modèle que Mistral AI décrit
comme le meilleur modèle 7B à ce jour. De plus, il est reconnu pour surpasser les autres
modèles 7B en génération de code Python. Voici quelques informations sur le modèle :

• Approche les performances de CodeLlama 7B sur le code, tout en restant bon dans
les tâches d’anglais.
• GQA pour une inférence plus rapide.
• SWA pour gérer des séquences plus longues à moindre coût.

Pour améliorer les résultats de génération des modèles de Mistral, il est préférable de
placer les instructions entre <s>[INST] et [/INST]</s>. Cela permet au modèle de
reconnaître clairement les instructions et de mieux les intégrer dans sa réponse.

II.2.B Comparaison entre Mistral 7B et LLaMa 2 :


Au-dessous je partage quelque graph qui démontre la grande performance de mistral 7B
comparant aux modèles de LLaMa 2.

Figure 16 : Quelque histogramme représentant la performance de Mistral 7B par rapport à LLaMa 2


Figure 17 : Quelque diagramme représentant la performance de Mistral 7B par rapport à LLaMa 2

II.2.C Évaluation du Mistral 7B :


Pour l'évaluation du Mistral 7B, j'ai utilisé LangSmith, qui est une plateforme DevOps
développée par LangChain, unifiée pour le développement, la collaboration, les tests, le
déploiement et la surveillance des applications LLM.

Il éxiste tant de test d’évaluation prédéfinit dans la plateform mais dans mon cas j’était
obligé de créer mon propre test. Voilà les critère d’évaluation que j’ai posé pour ce test :

• Score 2 : La réponse se trouve entre '''python et '''.


• Score 4 : La réponse est exécutable et ne se trouve pas entre '''python et '''.
• Score 7 : La réponse est exécutable et se trouve entre '''python et '''.
• Score 10 : La réponse est exécutable et doit être écrite entre '''python et ''', et le code
doit contenir un extrait pour montrer le résultat à l'utilisateur (cas de visualisation).
• Score 10 : La réponse est exécutable et doit être écrite entre '''python et ''', et le code
met à jour le dataframe avec sa nouvelle forme (cas d’action).

Ensuite, j'ai créé 5 jeux de données avec lesquels je vais évaluer le Mistral 7B, qui sont:
jeu de données pandas, jeu de données scipy, jeu de données scikit-learn, jeu de données
matplotlib et jeu de données seaborn.
-Chaque ligne du dataset est structurée de la manière suivante :

Figure 18 : La forme de chaque line du dataset

-La réponse que nous recevons de l'évaluateur (dans notre cas ChatGPT), est généralement sous forme
de texte qui décrit la réponse de LLM et qui finit par donnée la note de la génération du LLM :

Figure 19 : Réponse de l’évaluateur


-Après l'évaluation de chaque ligne de chaque dataset, voici le score final de chaque
modèle pour chaque dataset :

Figure 20 : Résultat de l’évaluation

D'après les résultats de l'évaluation, Mistral-Instruct-V0.2 donne des résultats satisfaisants


sachant que le modèle est quantifié sur 4 bits. Je vais donc travailler avec celui-ci pour tout
ce qui suit.
II.3 Agent :
La méthode que j’ai suivi pour trouver le bon agent consiste à tester toutes les
solutions possibles, puis, selon le besoin, nous choisirons la solution la plus convenable.
Les solutions testées et les résultats acquis :

II.3.A LLamaIndex :
II.3.A.a Qu’est-ce que c’est LlamaIndex :
LlamaIndex est un Framework conçu pour faciliter l'intégration de données privées
ou spécifiques à un domaine avec LLM. C'est un cadre de données convivial et flexible qui
relie des sources de données privées et personnalisées à de grands modèles de langage.
LlamaIndex prend certaines données d'entrée que vous fournissez et construit un index
autour de celles-ci. Le concept principal derrière LlamaIndex est la capacité d'interroger des
documents, qu'ils soient constitués de texte ou de code, en utilisant un modèle LLM tel que
ChatGPT.

Figure 21 : LlamaIndex logo

II.3.A.b LlamaIndex Agent :


L'agent que j'ai utilisé avec LlamaIndex est ReAct Agent, en lui offrant PandasQuery-
Engine comme outil.

Résultats :

• Il travail uniquement avec pandas ce qui rend son travail trop limité on aimera bien
qu’il travaille avec d’autre bibliothèque comme matplotlib, scipy....
• Parfois, Il ne retourne pas les résultats demander par l’utilisateur.

II.3.B PandasAI :

II.3.B.a Qu’est-ce que c’est PandasAI :


PandasAI est une bibliothèque Python qui intègre des capacités d'intelligence
artificielle générative dans pandas, rendant les dataframes conversationnels.
Figure 22 : PandasAI logo

II.3.B.b PandasAI agent :


Avec PandasAI, j'ai essayé de travailler avec SmartDataframe, mais
malheureusement, il apparaît que cet agent ne peut pas travailler avec les données locales.
Étant donné que j'étais limité par le temps, je n'ai pas consacré beaucoup d'effort à
résoudre le problème et je suis passé à la solution suivante.

II.3.C Langchain :
II.3.C.a Qu’est-ce que c’est Langchain :
LangChain est un Framework open-source conçu pour simplifier la création
d'applications utilisant LLMs. Il fournit une interface standard pour les chaînes et de
nombreuses intégrations avec d'autres outils. Les cas d'utilisation de LangChain recouvrent
largement ceux des modèles de langage en général, y compris l'analyse et la synthèse de
documents, les chatbots et l'analyse de code. Il est conçu pour connecter un modèle de
langage à d'autres sources de données et lui permettre d'interagir avec son environnement.

Figure 23 : Langchain logo


II.3.C.b Langchain Agent :
Avec Langchain, j'ai choisi de travailler avec create_csv_agent, étant donné que la
tâche nécessitait l'utilisation d'un fichier CSV. Cependant, tout comme avec PandasAI,
l'agent n'a pas fonctionné. Mais cette fois, l'erreur était compréhensible car tous les agents
de Langchain ne fonctionnent qu'avec des Chat Models et non pas avec des Local
Models.
III Deuxième plan :

III.1 Architecture :
Le deuxième plan contient quelques modifications par rapport au premier plan. Cette
fois, j'ai décidé de créer un agent personnalisé en utilisant des chaînes de Langchain. Voici
l'architecture du deuxième plan :

Figure 24 : Architecture du deuxième plan

III.2 Les chaînes de Langchain :

III.2.A Définition :
La bibliothèque Langchain contient un module de chaînes qui permet le traitement
séquentiel des données linguistiques. Ce module permet aux utilisateurs de créer un
pipeline de tâches de traitement du langage, telles que la tokenisation, l’analyse syntaxique
et l’analyse sémantique, qui peuvent être appliquées aux données textuelles pour en
extraire le sens, le contexte et la structure. En enchaînant ces tâches, la bibliothèque
facilite le développement d’applications complexes de traitement du langage naturel (NLP)
avec plus de facilité et de flexibilité.
III.2.B Les types des Chaines :
III.2.B.a LCEL chaînes :

Les chaînes LCEL sont une manière plus avancée et structurée de définir et d'exécuter une
séquence de composants ou d'opérations dans Langchain. Cette approche permet une
conception plus modulaire et flexible où différents composants peuvent être combinés pour
traiter la sortie des modèles de langage de manière plus sophistiquée.

Les chaînes LCEL peuvent inclure des composants tels que :

• Extracteurs : Pour extraire des types spécifiques d'informations du texte.


• Transformateurs : Pour modifier ou augmenter les informations extraites.
• Chargeurs : Pour enregistrer ou envoyer les informations vers une destination
particulière.

III.2.B.b Legacy Chaînes:


Legacy chaînes dans Langchain font généralement référence aux méthodes
traditionnelles ou antérieures de traitement des sorties des modèles de langage. Cela peut
inclure une série d'étapes qui étaient couramment utilisées avant que des techniques plus
récentes ou plus avancées (comme les chaînes LCEL) soient développées. Le terme
"hérité" implique souvent que, bien que ces méthodes puissent encore être utilisées, elles
peuvent ne pas intégrer les dernières avancées dans le domaine.

Dans mon projet, j'ai utilisé une chaîne de type Legacy : Conversational-
RetrievalChain, en raison de sa forte correspondance avec le cahier de charge posé.

Figure 25 : Diagramme séquentiel de ConversationalRetrievalChain


III.3 RAG :
Pour que notre Chaîne a une idée sur la structure du fichier CSV j’ai ajouté un système
RAG qui va recevoir la requête et le fichier CSV, et il va retourner les 4 lignes les plus
correspondant à la requête.

III.3.A Définition :
RAG est une architecture de modèle de traitement du langage naturel qui combine
deux composants clés : un système de récupération d'informations (le retriever) et un
modèle de génération de texte (le generator). Cette approche est utilisée pour améliorer la
capacité d'un modèle à générer des réponses informatives et pertinentes en se basant sur
un ensemble de documents de référence ou une base de connaissances externe.

Figure 26 : Architecture du RAG

III.3.B Modèle d’embedding :


Un modèle d'embedding, également connu sous le nom de modèle de plongement,
est un type de modèle en apprentissage automatique qui transforme des données de
grande dimension et généralement discrètes (comme les mots d'un texte ou les pixels
d'une image) en vecteurs de faible dimension dans un espace continu. Ces vecteurs sont
appelés embeddings ou plongements.
III.3.C Magasin des vecteurs :
Un magasin de vecteurs, ou vector store en anglais, est une structure de données ou un
système de gestion de base de données conçu pour stocker, indexer et gérer de grands
ensembles de vecteurs. Ces vecteurs sont généralement des représentations numériques
de haute dimension de divers objets ou entités, comme des images, du texte, ou des
informations audiovisuelles, souvent utilisés dans des applications d'apprentissage
automatique et d'intelligence artificielle.

Figure 28 : Architecture représentant le rôle des magasin des vecteurs

III.3.D Recherche par similarité :


La recherche par similarité est une technique informatique utilisée pour trouver des
éléments dans une base de données qui sont similaires à un élément de requête selon une
certaine mesure de similarité. Cette technique est largement utilisée dans de nombreux
domaines tels que le traitement d'images, la recherche d'informations, le traitement du
langage naturel, la bio-informatique, et bien d'autres.

III.3.E Mes choix pour RAG :


J'ai choisi d'utiliser le modèle « sentence-transformers/all-MiniLM-L6-v2 » de
Hugging Face pour transformer les données de mon fichier CSV en vecteurs, car ce
modèle est reconnu pour son efficacité tout en étant plus léger et plus rapide que d'autres
alternatives. Il est donc capable de fournir de bons résultats sans nécessiter une grande
puissance de calcul. J'ai également configuré le modèle pour qu'il s'exécute sur le CPU de
mon ordinateur, ce qui est pratique si je ne dispose pas d'une carte graphique puissante.

Une fois les vecteurs obtenus à partir des données du CSV, j'ai mis en place un
magasin de vecteurs avec FAISS, une bibliothèque spécialisée dans la recherche rapide et
efficace dans de grands ensembles de données.
Pour la recherche de similarité, cela fait partie du ConversationalRetrievalChain. Il
lance la recherche des lignes similaires en utilisant un prompt, puis le LLM retourne les
lignes les plus ressemblantes à la requête.

III.4 Analyse du résultat :


Les résultats obtenus ne peuvent pas être présentés sous forme numérique, mais je
peux apporter ma propre analyse des résultats. Selon mon analyse, ce plan produit de
bons résultats, mais le taux d'erreur est très élevé. La plupart du temps, cela est dû à
l'exécution incorrecte du code généré. Parfois, même si une erreur s'affiche lors de la
première exécution, une seconde tentative avec la même commande peut produire un bon
code. D'autres fois, l'erreur est due à la structure du dataframe, ce qui est impossible à
corriger.

IV Conclusion :
Dans ce chapitre, j'ai expliqué mes choix pour le projet. J'ai aussi partagé les plans que
j'ai réalisé et les résultats obtenus pour chacun. Le prochain chapitre présentera les ajouts
que nous avons faits pour terminer le projet.
Chapitre IV :

Amélioration de la meilleure solution et


développement de l’application
I Introduction :
Dans ce dernier chapitre, je vais expliquer les derniers ajouts réalisés pour améliorer
notre meilleure solution, ainsi qu'un aperçu de l'application que j'ai développée.

II Amélioration de la meilleure solution :


Comme je l'ai expliqué en détail à la fin du chapitre précédent, notre processus de
génération de code n'est pas exempt d'erreurs. Même si le modèle possède la version
correcte dans sa base de données où il a été entraîné, il peut encore produire des erreurs
lors de la génération du code. De plus, il peut également y avoir des cas où le modèle ne
contient pas la version corrigée dans sa base de données d'entraînement, ce qui peut
conduire à des erreurs dans les résultats générés. Pour surmonter ces deux types
d'erreurs, j'ai pris la décision d'intégrer deux autres Chaînes de traitement. La première
Chaîne est dédiée à la correction du code généré, cherchant à rectifier les erreurs
potentielles rencontrées. La seconde Chaîne, quant à elle, est destinée à fournir des
explications sur la source des erreurs, offrant ainsi une meilleure compréhension aux
utilisateurs quant aux problèmes rencontrés.

II.1 Architecture :
Dans notre solution finale, voici comment ça se passe : Tout d'abord, l'utilisateur
télécharge un fichier CSV et tape une requête. Ensuite, le CSV est transformé en une liste
de données et une base de données vectorielle. Ensuite, ces deux éléments sont intégrés
dans notre processus principal avec la requête. Ensuite, grâce à notre modèle de langage,
nous obtenons une réponse. Si cette réponse ne contient pas de code, elle est directement
renvoyée à l'utilisateur. Mais si elle contient du code, nous l'extraions et vérifions s'il est
exécutable. Si c'est le cas, nous renvoyons à l'utilisateur la réponse ainsi que le résultat de
l'exécution du code. Sinon, nous essayons de corriger le code deux fois avec une chaîne
de correction. Si cela ne fonctionne toujours pas, nous passons à notre chaîne finale, qui
est celle d'explication. Elle informe simplement l'utilisateur de l'erreur rencontrée.

Au-dessous une architecture qui représente bien ma solution :


Figure 27 : Architecture de la solution finale

II.2 La chaîne Principale :


La chaîne principale cherche simplement la meilleure réponse pour ce que l'utilisateur
demande. Elle analyse la requête, regarde ce que nous avons en stock, et essaie de
donner une réponse qui répond exactement à ce que l'utilisateur veut savoir.

II.2.A Type :
Pour la chaîne principale, je l'ai créée avec ConversationalRetrievalChain après
avoir observé les bons résultats obtenus avec celle-ci.

II.2.B Entrée :
• Requête : L'élément clé de la chaîne principale est la requête. C'est ce que
l'utilisateur saisit pour obtenir une réponse ou une solution. Cette requête peut être
une question, une demande d'assistance ou tout autre type d'interaction. Elle est
essentielle car elle guide le processus de génération de réponse et détermine la
qualité et la pertinence de la sortie. Nous nous assurons que la requête est bien
comprise et traitée de manière appropriée à chaque étape de notre pipeline,
garantissant ainsi une réponse précise et utile à l'utilisateur.

• Base de données des vecteurs : Une autre entrée de la chaîne principale est la
base de données des vecteurs. Cette base de données contient une représentation
vectorielle des données pertinentes pour la tâche en cours. Ces vecteurs capturent
les informations essentielles des données, permettant au modèle de langage de
mieux comprendre le contexte et de générer des réponses plus pertinentes.

• Schéma du dataframe : Le schéma du dataframe est une autre entrée importante


de la chaîne principale. Il définit la structure des données utilisées dans notre
pipeline, déterminant les types de données, les colonnes disponibles et les relations
entre elles. Ce schéma est essentiel pour garantir la cohérence et l'intégrité des
données tout au long du processus.

II.2.C Sortie :
Dans certains cas, la réponse que la chaîne donne est juste du texte, ce qui peut
suffire pour des questions simples. Mais si la question demande du code, alors l'agent
essaie d'en générer pour répondre à la demande.

II.2.D Latence :

Figure 28 : Graphique représentant la latence de la chaîne principale sur différents GPU


II.3 La chaîne de correction :
Le rôle de la chaîne de la correction est d’essayé de corriger le code généré par la
chaîne principale s’il contient des erreurs.

II.3.A Type :
La chaîne de correction, je l'ai créée avec LLMChain, qui est la chaîne la plus
simple de Langchain. Je l'ai choisie pour éviter la latence.

II.3.B Entrée :
• Code généré : La première entrée de la chaîne de correction est le faux code
généré par la chaîne principale, permettant ainsi à cette dernière de s'appuyer sur ce
code pour faciliter la tâche de correction.

• Erreur détectée : Pour faciliter davantage la tâche de correction de la chaîne et


éviter de chercher où se trouve l'erreur, on lui fournit le type et la ligne de l'erreur afin
de la corriger.

• Schéma du DataFrame : Il est obligatoire de réintégrer le schéma du dataframe


dans la chaîne de correction, car il peut y avoir des fautes dans les noms des
colonnes ou dans les valeurs.

• Requête initiale : Enfin, la requête initiale de l'utilisateur. Cette requête guide le


code généré et influence les opérations effectuées sur les données. En comprenant
pleinement la requête initiale, la chaîne va mieux contextualiser les erreurs
détectées et les corriger de manière appropriée pour répondre efficacement aux
besoins de l'utilisateur.

II.3.C Sortie :
La sortie de la chaîne de correction, c'est simplement la correction du code venant
de la chaîne principale. Cela assure que le code final soit juste et fonctionne bien. La
chaîne de correction détecte et corrige les erreurs.
II.3.D Latence :

Figure 29 : Graphique représentant la latence de la chaîne de correction sur différents GPU

II.4 La chaine d’explication :


Le rôle de la chaine d’explication est d’expliquer les codes que la chaine de correction
ne peut pas les corriger.

II.4.A Type :
Comme la chaine de correction la chaine d’explication, je l'ai créée avec LLMChain,
pour éviter la latence.

II.4.B Entrée :
• Code généré : Tout comme dans la chaîne de correction, la première entrée de la
chaîne d’explication est le code généré. Cependant, contrairement à la correction,
cette fois-ci, la chaîne d'explication ne cherche pas à corriger le code, mais plutôt à
l'analyser et à le comprendre.

• Erreur détectée : De la même manière que dans la chaîne de correction, si des


erreurs sont détectées dans le code généré, elles sont également signalées à la
chaîne d’explication. Cependant, au lieu de les corriger, la chaîne d'explication se
concentre sur la compréhension de ces erreurs et sur leur explication.

II.4.C Sortie :
La sortie de la chaîne d'explication fournit des explications détaillées sur le code
créé. Cela aide à comprendre les éventuelles erreurs dans le code, souvent dues à la
structure du dataframe. Ainsi, l'utilisateur peut chercher d'autres requêtes pour répondre à
ses besoins.

II.4.D Latence :

. Figure 30 : Graphique représentant la latence de la chaîne d’explication sur différents GPU


III Développement de l’application :

Vous aimerez peut-être aussi