Vous êtes sur la page 1sur 42

Filière : Informatiques De Gestion

Stage effectué du [04/07/2022] au [04/08/2022]


Direction générale De ISELECT

À Nouakchott

Informatiques De Gestion

Abdel Wedoud Mohamed Lemin

I19217

1
SOMMAIR
Remerciement ......................................................................................2
Introduction..........................................................................................3
Présentation de l'Enterprise..................................................................4
Déroulement du stage ..........................................................................6
Les Taches Réaliser .............................................................................................................................. 7
L’Application que je travailler sur ....................................................................................................... 9
a. ............................................................................................................................... Définition General
9
b. .................................................................... Fonctionnalités Que J’ai exécutées dans l’applications
10
c. ................................................................................................................ Comment cela marche-t-il ?
14
Entrainement des model ..................................................................................................................... 17
Embeddings: ....................................................................................................................................... 18

Conclusion .........................................................................................20
Bibliographie .....................................................................................21

1
Remerciement
Je suis très reconnaissant envers Dieu qui m'a donné la santé et la force pour réussir mon stage chez
ISELECT.

Je veux dire un grand merci à toutes les personnes qui m'ont aidé à avoir cette chance. Votre soutien a
été très important pour moi.

Un merci spécial à Monsieur Abderrahmane Sidi Mohamed de chez ISELECT. Votre gentillesse et
votre confiance m'ont beaucoup aidé. Vous avez été un vrai leader et vous m'avez appris beaucoup de
choses utiles pour mon travail.

Je remercie aussi ceux qui m'ont choisi pour ce stage. Les entretiens étaient très bons et m'ont aidé à
montrer ce que je sais faire. J'ai aussi appris beaucoup sur ISELECT.

Je n'oublie pas ma famille qui a toujours été là pour moi. Votre soutien m'a donné la force de bien
faire pendant mon stage. Merci à tous pour votre aide dans cette partie importante de ma carrière.

2
Introduction
Au cours de mon stage au sein de l'entreprise de développement informatique ISELECT, j'ai eu
l'opportunité d'explorer de près les aspects pratiques du monde professionnel dans le domaine du
développement des application. Cette expérience a été cruciale pour combiner les connaissances
théoriques acquises à l'Institut Supérieur de Comptabilité et d'Administration des Entreprises
(ISCAE) avec les réalités concrètes du secteur.

La période de stage, qui s'est étendue sur 3 mois du 04 juin au 04 septembre, m'a permis de plonger
dans les défis et les dynamiques spécifiques au développement des application. Mon choix s'est
naturellement orienté vers cette entreprise en raison de son implication marquée dans ce domaine, et
plus particulièrement sur un projet phare dans le développement mobile.

Dans cette première partie de mon rapport, je vais vous présenter les raisons qui ont motivé mon
choix de cette entreprise en particulier pour mon stage. J'expliquerai en détail ce qui a fait de
ISELECT un choix pertinent dans le contexte du développement mobile.

La deuxième partie sera consacrée à mes missions au sein de l'équipe de développement mobile, les
compétences que j'ai pu acquérir, ainsi que les résultats obtenus tout au long de cette expérience
formatrice. Je mettrai en lumière ce que j'ai retiré de manière concrète de ce stage et comment cela a
contribué à mon développement professionnel.

À travers ces deux parties distinctes, je souhaite offrir une vision complète de mon expérience au sein
de l'entreprise et souligner l'impact significatif de ce stage sur ma croissance en tant que
professionnel du développement mobile.

3
Présentation de l'Enterprise
Historique de l’entreprise ISELECT : ISELECT a vu le jour comme une start-up modeste dans le
domaine du développement de solutions numériques. Depuis, elle a connu une évolution constante,
diversifiant ses activités pour inclure le développement d'applications web, mobiles, et de systèmes
backend. Toujours en quête d'innovation, ISELECT s’est engagée dans un processus d’amélioration
continue, sans pour autant dominer son secteur.

Positionnement actuel d’ISELECT : Dans l'univers compétitif des solutions numériques, ISELECT
fait valoir son expertise par une utilisation judicieuse de technologies de pointe, incluant l'intelligence
artificielle dans certains de ses projets. Bien que n'étant ni leader ni à la traîne, ISELECT s’illustre
par sa flexibilité et sa capacité à fournir des solutions sur mesure, adaptées aux besoins variés de sa
clientèle.

Caractéristiques du secteur d’activité de ISELECT : Le secteur du développement de solutions


numériques est caractérisé par son dynamisme et sa capacité à évoluer rapidement face aux
innovations technologiques. La concurrence y est vive, obligeant les entreprises comme ISELECT à
s'adapter continuellement aux nouvelles tendances, y compris l'utilisation occasionnelle de
l'intelligence artificielle, pour maintenir leur pertinence sur le marché.

Organigramme de la Direction General D’ISELECT

4
1

5
Déroulement du stage
Au cours de mon stage chez ISELECT, j'ai significativement renforcé mes compétences en
algorithmes et structures de données, en mettant particulièrement l'accent sur Dart/Flutter. J'ai
approfondi ma compréhension du state management en explorant différentes bibliothèques telles que
Provider, GetX et BLoC. De plus, j'ai étudié la création d'applications réactives, garantissant une
compatibilité optimale sur diverses plateformes telles qu'iOS, Android, Windows et MacOs, tout en
assurant une adaptabilité aux différentes dimensions d'écrans.

Une part importante de mon apprentissage a été dédiée à l'intégration de l'intelligence artificielle dans
les applications. J'ai réalisé des tâches telles que la mise en place de modèles pour améliorer leurs
performances, la manipulation d'embeddings, et l'application du prompt engineering.

Par ailleurs, j'ai approfondi mes compétences dans la liaison entre les projets et les bases de données.
Avec Firebase, j'ai contribué à la structuration des tables, favorisant ainsi une gestion efficace des
données. J'ai également exploré l'utilisation de Supabase, une base de données open source basée sur
SQL, approfondissant mes connaissances en gestion de données.

Une part significative de mon expérience a été consacrée à la pratique du streaming de données avec
Firebase. J'ai acquis une compréhension approfondie sur la manière de traiter et d'intégrer en temps
réel des données dynamiques dans les applications, améliorant ainsi la réactivité et l'efficacité des
systèmes.

Ces expériences variées m'ont permis de consolider mes connaissances techniques tout en
développant une expertise pratique dans des domaines cruciaux du développement logiciel. Mon
stage chez ISELECT a été une opportunité enrichissante pour élargir mes compétences et appliquer
mes connaissances dans un environnement professionnel dynamique.

6
Les Taches Réaliser
Durant mon stage de quatre mois chez ISELECT, j'ai acquis de nombreuses compétences en
développement logiciel, notamment en Flutter et en intelligence artificielle (IA), ainsi qu'une
expertise approfondie dans l'utilisation de Firebase. Voici un aperçu détaillé de ces compétences :

Flutter
• Développement avec Dart/Flutter : J'ai appris à utiliser Dart et Flutter pour créer des
applications mobiles. Dart est un langage de programmation optimisé pour Flutter, un
Framework UI pour développer des applications natively compilées.
• Gestion du State avec Provider, GetX et BLoC : J'ai appris à gérer l'état des applications
Flutter en utilisant des approches comme Provider, GetX et BLoC, ce qui m'a permis de créer
des applications plus structurées et maintenables.
• Création d'applications réactives : J'ai acquis des compétences pour développer des
applications réactives, en assurant une interaction fluide et dynamique avec l'utilisateur.
• Migration de Flutter vers la sécurité nulle (null safety) : J'ai appris à migrer les
applications Flutter vers la sécurité nulle, une pratique importante pour éviter les erreurs liées
aux valeurs nulles.
• Réalisation des algorithmes : J'ai développé ma capacité à concevoir et à implémenter des
algorithmes efficaces, un élément crucial du développement logiciel.

Intelligence Artificielle
• Prompt engineering : J'ai acquis des compétences en prompt engineering, ce qui implique la
formulation de requêtes pour maximiser l'efficacité des modèles d'IA.
• Intégration de l'intelligence artificielle : J'ai appris à intégrer l'IA dans les applications pour
améliorer leurs fonctionnalités et leur interactivité.
• Base de données vectorielle (Vector Database) : J'ai exploré l'utilisation des bases de
données vectorielles, pertinentes pour stocker et traiter des données complexes pour l'IA.
• Base de données : J'ai acquis une compréhension approfondie des systèmes de gestion de
bases de données, essentiels pour stocker et organiser les données.

7
Firebase
• Liaison de projets avec Firebase : J'ai appris à connecter des applications à Firebase, une
plateforme de développement d'applications.
• Firebase Functions : J'ai développé des compétences en utilisant Firebase Functions pour
créer des microservices gérés dans le cloud.
• Firebase A/B Testing : J'ai appris à effectuer des tests A/B sur Firebase pour optimiser les
applications.
• Firebase Emulators : J'ai utilisé les émulateurs Firebase pour tester les applications dans un
environnement local.
• Streaming de données avec Firebase : J'ai acquis de l'expérience dans la gestion de flux de
données en temps réel avec Firebase.
• Firebase Storage : J'ai appris à stocker et à récupérer des fichiers dans le cloud avec Firebase
Storage.
• Firebase Realtime Database : J'ai travaillé avec la base de données en temps réel de Firebase
pour stocker et synchroniser des données de manière efficace.

SupaBase:
J'ai exploré Supabase, une alternative à Firebase, pour la gestion des bases de données et
l'authentification.
• Structuration des tables SQL : J'ai développé mes compétences en structuration et gestion
de bases de données SQL.
• Migration des données du firebase à Supabase : J'ai appris le processus de migration des
données de Firebase vers Supabase, un élément crucial pour la gestion de bases de données.

TypeScript
J'étudie actuellement le langage de programmation TypeScript, plongeant dans ses nuances et
fonctionnalités pour maîtriser cet outil puissant et améliorer mes compétences en
Développement web. Ces compétences acquises pendant mon stage chez ISELECT ont
Grandement enrichi mon expertise en développement logiciel, me préparant à relever de
Nouveaux défis dans le domaine technologique.

8
L’Application que je travailler sur
Actually Healthy: Food Recipes
a. Définition General
Actually Healthy est une application innovante et spécialisée dans la santé féminine.
Elle est conçue pour rendre la vie quotidienne des femmes plus Facile et plus saine
grâce à une gamme complète d'outils personnalisés. L'interface intuitive et le design
pensé pour le bien-être féminin rendent L'expérience utilisateur agréable et
Enrichissante. Cette application est développée en utilisant Flutter comme cadre de
travail, ce qui assure une expérience fluide et multiplateforme. Elle utilise
Firebase/Supabase comme backend et Provider pour la gestion d'état, Garantissant
ainsi une infrastructure robuste et évolutive.

9
b. Fonctionnalités Que J’ai exécutées dans l’applications
• Recommandation de Recettes Personnalisées : Cette fonctionnalité phare offre
des suggestions de recettes adaptées à l'humeur et aux préférences diététiques de
l’utilisatrice. Elle couvre tous les repas de la journée – du petit-déjeuner revigorant
au dîner relaxant – en proposant des options nutritives et délicieuses. Que ce soit
pour une alimentation végétarienne, sans gluten ou riche en protéines, l'application
fournit des recettes variées et équilibrées.

10
• Suggestion de Restaurants et Repas Sains : En voyage ou en ville, cette fonction
aide les utilisatrices à découvrir des restaurants offrant des options de repas sains.
Elle analyse les menus des restaurants à proximité et suggère des plats conformes
aux exigences diététiques personnelles, facilitant ainsi le maintien d'un régime
alimentaire sain en toutes circonstances.

11
• Chat avec Moi – Assistant de Santé Virtuel : Cette fonction interactive permet
aux utilisatrices de poser des questions sur divers sujets liés à la santé et au bien-
être. L'application, agissant comme un assistant virtuel, fournit des réponses
informées, des conseils et des ressources utiles, contribuant ainsi à éduquer et à
rassurer ses utilisatrices sur des questions de santé.

12
• Synchronisation du Cycle Menstruel et Bien-Être : Une des fonctionnalités les
plus innovantes, elle offre des conseils personnalisés basés sur le cycle menstruel.
L'application recommande des repas, des activités, et même des exercices
physiques adaptés à chaque phase du cycle, dans un langage délicat et respectueux.
Cette approche holistique assure un soutien adapté aux changements
physiologiques et émotionnels des utilisatrices, favorisant ainsi un mode de vie
sain et harmonieux.

13
c. Comment cela marche-t-il ?
Lorsque l'utilisateur envoie un message dans L’application, ce message est transformé à un modèle
préétabli.

Le message transformé est ensuite envoyé à une fonction spécifique sur Firebase, notre
plateforme serveur cloud, qui est chargée de traiter les requêtes de l'utilisateur. Une fois là-bas, nous
exploitons la puissance de l'API Open AI pour assurer une diffusion en temps réel des réponses aux
questions de l'utilisateur.

14
Cependant, le processus est plus approfondi que cela. Nous utilisons également une fonctionnalité
Du cette API appelée “FUNCTION CALLS”. Il s'agit essentiellement d’une fonction qui prend une
liste de fonctions différentes avec leurs descriptions signifiant à quel moment elles doivent être
appelées, ainsi qu'une “System Prompt”, Cette “System Prompt” est une instruction spécifique pour
le AI, qui l’indiquant effectivement quelle fonction elle doit retourner en fonction de l'input de
l'utilisateur.

Nous avons conçu une SYSTEM PROMPT qui permet à AI de comprendre quelle fonction précise
doit être appelée selon l'input de l'utilisateur. Ensuite, nous demandons une réponse qui est
essentiellement le nom de la fonction à exécuter. Selon la fonction choisie, le processus de traitement
varie. Par exemple, si nous prenons le cas de l'Assistant de Santé Virtuel on appellera une autre
fonctionnalité de l’API Open AI appelée ChatCompletion. Cela se traduit essentiellement par une
conversation interactive avec CHAT GPT AI, chargée d'un ensemble spécifique d'instructions (une
autre System Prompt) qui assure que les réponses correspondent à l'ambiance et au style de notre
application.
problème, lorsqu'une question est initialement posée par l'utilisateur sur l'interface utilisateur, nous
commençons également à surveiller la base de données en temps réel offerte par Firebase.
Celle-ci est semblable à une grande carte qui contient des paires de clés et de valeurs.

15
En créant un nouvel ID unique que nous ajoutons comme clé dans cette base de données et en
écoutant activement celle-ci, nous pouvons recevoir toute donnée qui arrive à cette clé spécifique, et
nous transmettons cette clé à la fonction Cloud. Pour reprendre depuis le début, après chaque mot
produit par notre solution GPT, nous écrivons ce mot dans la même clé sur la base de données en
temps réel. Ainsi, l'utilisateur reçoit la réponse mot par mot au fur et à mesure qu'elle est produite par
notre GPT.

Enfin, si un utilisateur ferme l'application et la rouvre ensuite, nous voulons qu'il ait accès à son
historique de chat. Pour cela, une fois que toute la réponse est compilée, nous l'ajoutons également à
une collection spécifique qui est créée pour chaque individu utilisateur.

16
Entrainement des model
J'ai eu la chance exceptionnelle d'apprendre à entraîner un modèle GPT au cours de mon stage. Ce
processus fascinant a débuté par l'extraction minutieuse des données nécessaires, une étape cruciale
dans le développement du modèle.

Il est essentiel de comprendre pourquoi il est nécessaire de former un modèle GPT. L'entraînement
permet au modèle d'acquérir une compréhension approfondie des structures linguistiques et des
contextes, lui permettant ainsi de générer des textes cohérents et pertinents. C'est un aspect
fondamental pour garantir que le modèle puisse traiter efficacement des informations et répondre de
manière contextuelle aux requêtes.

L'équipe avec laquelle j'ai travaillé a déployé des compétences avancées pour collecter et organiser
les données pertinentes, garantissant une base solide pour le modèle. Cette phase a nécessité une
compréhension approfondie des besoins du modèle GPT, ainsi qu'une expertise dans la sélection et le
nettoyage des ensembles de données.

Une fois les données en place, nous avons entrepris le processus d'entraînement du modèle GPT. Cela
a impliqué l'utilisation de techniques sophistiquées de Deep Learning pour ajuster les poids du réseau
neuronal, permettant au modèle d'apprendre et de généraliser à partir des données fournies.

Au fil du temps, le modèle a été affiné et optimisé, et nous avons pu observer son efficacité
croissante. La capacité du modèle à générer des textes cohérents et contextuellement pertinents était
remarquable, démontrant le pouvoir du machine Learning dans le domaine du traitement du langage
naturel.

Cette expérience a été une plongée immersive dans le monde passionnant du machine Learning
appliqué aux modèles de traitement du langage naturel, offrant une compréhension approfondie de la
manière dont ces technologies révolutionnaires sont développées et perfectionnées.

17
Embeddings:
Au cours de mon stage, j'ai acquis une compréhension approfondie de l'utilisation des embeddings,
une technique essentielle dans le domaine de la recommandation de recettes personnalisées. L'enjeu
principal auquel nous avons été confrontés dans le cadre de la fonctionnalité "Recommandation de
Recettes Personnalisées" de notre application réside dans la nécessité de comprendre les préférences
de l'utilisateur afin de lui proposer une liste de recettes correspondant à ses attentes. Le défi majeur
réside dans la recherche de recettes en fonction des préférences de l'utilisateur, une tâche pour
laquelle la recherche textuelle classique s'est avérée inefficace.

La recherche textuelle conventionnelle se limite souvent à une correspondance basée sur des termes
spécifiques, mais elle ne parvient pas à saisir la signification sous-jacente des requêtes de l'utilisateur.
C'est à ce stade que les embeddings entrent en jeu pour offrir une solution plus sophistiquée et
sémantique.

Les embeddings, dans le contexte de notre application, peuvent être définis comme des
représentations vectorielles de données textuelles qui capturent les relations sémantiques entre les
mots. Plutôt que de se fier uniquement aux correspondances de mots individuels, les embeddings
permettent une compréhension plus profonde du sens des phrases et des intentions de l'utilisateur.

En termes simples, les embeddings convertissent les données textuelles en espaces vectoriels où la
proximité spatiale entre les vecteurs reflète la similarité sémantique. Ainsi, au lieu de se limiter à des
correspondances exactes, nous pouvons utiliser ces représentations vectorielles pour effectuer des
recherches de manière plus contextuelle, en tenant compte du sens global des mots et des phrases.

La solution que nous avons envisagée consiste donc à intégrer des embeddings dans notre
architecture de recommandation de recettes. Cela implique de générer des embeddings tant pour les
requêtes des utilisateurs que pour les champs de recettes. En d'autres termes, chaque recette est
représentée par un embedding, une représentation mathématique qui encode sa signification. Ce
faisant, nous pouvons comparer l'embedding généré à partir de la requête de l'utilisateur avec ceux
des recettes pour déterminer les correspondances les plus pertinentes et fournir des recommandations
précises et personnalisées.

Suite à cette conceptualisation des embeddings dans notre approche, nous avons entrepris de mettre
en œuvre une architecture spécifique pour intégrer ces embeddings dans notre modèle de
1

18
recommandation de recettes.

Tout d'abord, nous avons élaboré un processus de création d'embeddings pour les requêtes utilisateur.
Lorsqu'un utilisateur entre ses préférences et informations supplémentaires dans la fonctionnalité de
recommandation de recettes, ces données textuelles sont transformées en embeddings, une
représentation numérique qui encapsule la sémantique de la requête. Ce processus permet de
transcender les simples mots pour comprendre le contexte et les nuances du langage, rendant ainsi la
recherche de recettes plus intelligente et adaptée aux préférences spécifiques de l'utilisateur.

En ce qui concerne les recettes elles-mêmes, chaque recette dans notre base de données est également
représentée par un embedding. Cet embedding est construit en utilisant une approche similaire,
capturant la signification de la recette dans un espace vectoriel. Ainsi, chaque recette devient non
seulement une liste d'ingrédients et d'instructions, mais aussi une entité mathématique représentative
de son profil gustatif et de ses caractéristiques uniques.

L'étape cruciale consiste ensuite à comparer les embeddings de la requête utilisateur avec ceux des
recettes. Cette comparaison se fait dans l'espace vectoriel, où la similarité entre les embeddings
reflète la pertinence sémantique. Plus les embeddings sont proches, plus les recettes correspondantes
sont similaires aux préférences de l'utilisateur.
Notre modèle de recommandation utilise cette approche pour identifier et classer les recettes les plus
adaptées aux préférences de l'utilisateur, en tirant parti des embeddings pour comprendre la
signification sous-jacente des requêtes et des recettes. Cette méthode s'avère particulièrement efficace
pour résoudre le défi de la recherche sémantique, offrant une expérience de recommandation plus
personnalisée et intuitive pour les utilisateurs de notre application.

19
Conclusion
Mon stage de deuxième année chez ISELECT a été une expérience enrichissante et formatrice,
marquant une étape importante dans mon parcours professionnel et académique. Au cours de ce
stage, j'ai eu l'opportunité de me plonger dans le monde fascinant du développement informatique, en
me concentrant sur des technologies de pointe telles que Flutter, Dart, l'intelligence artificielle et
Firebase.

Ces technologies, bien que complexes, m'ont offert une plateforme idéale pour développer et affiner
mes compétences techniques. Le travail sur Flutter et Dart m'a permis d'acquérir une compréhension
approfondie du développement d'applications mobiles multiplateformes, une compétence de plus en
plus demandée dans l'industrie. L'exploration de l'intelligence artificielle et Firebase a ouvert de
nouvelles perspectives sur la manière dont les données peuvent être utilisées pour améliorer
l'expérience utilisateur et optimiser les performances des applications.

Au-delà des compétences techniques, ce stage a été une opportunité précieuse pour développer des
qualités professionnelles essentielles telles que le travail d'équipe, la résolution de problèmes et la
communication efficace. Travailler au sein d'une équipe dédiée chez ISELECT m'a appris
l'importance de la collaboration et de la flexibilité dans un environnement professionnel rapide et en
constante évolution.

En conclusion, cette expérience a non seulement consolidé mes connaissances académiques mais m'a
également préparé à relever les défis futurs dans le domaine de l'informatique. Elle a renforcé ma
passion pour le développement de logiciels et a établi une base solide pour ma future carrière.

20
Bibliographie
Firebase Storage documentation :
• https://firebase.google.com/docs/storage?hl=fr

Firebase Functions documentation :


• https://firebase.google.com/docs/functions?hl=fr

Firebase Real Time Database documentation :


• https://firebase.google.com/docs/database?hl=fr

Open Ai Streaming documentation :


• https://platform.openai.com/docs/api-reference/streaming

Open Ai chat completion documentation :


• https://platform.openai.com/docs/api-reference/chat

Open Ai chat Embeddings documentation :


• https://platform.openai.com/docs/api-reference/embeddings

Open Ai Fine Tunning(entrainement des modèles) documentation :


• https://platform.openai.com/docs/api-reference/fine-tuning

Open Ai completions documentation :


• https://platform.openai.com/docs/api-reference/completions

21
1

22
1

23
1

24
1

25
1

26
1

27
1

28
1

29
1

30
1

31
1

32
1

33
1

34
1

35
1

36
1

37
1

38
1

39
1

40
1

41

Vous aimerez peut-être aussi