OnlineFormaPro est une entreprise spécialisée dans la formation professionnelle. Elle propose une large gamme de services, incluant :
La clientèle cible d'OnlineFormaPro comprend des entreprises de divers secteurs, y compris de grandes organisations telles que la SNCF, la Banque Populaire et Samsung. Les formations offertes par l'entreprise peuvent être dispensées en ligne via leur plateforme numérique, ainsi qu'en présentiel.
J'ai effectué un stage de 9 semaines au sein de cette entreprise, du 22 avril au 21 juin 2024. Ce stage m'a permis de contribuer à plusieurs projets de développement et de gestion des données, en mettant en pratique les compétences acquises au cours de ma formation.
L'entreprise utilise dans ses formations en ligne des outils basés sur l'API d'OpenAI pour s'entraîner à diverses situations, telles que :
Cependant, l'API d'OpenAI est sujette à des changements fréquents, tant au niveau du format des réponses que de la manière dont elles sont générées. De plus, des paramètres tels que l'heure de la journée peuvent influencer la qualité des réponses, celles-ci étant souvent moins précises et plus aléatoires en fin de journée en raison de l'augmentation du nombre de requêtes.
L'objectif de mon stage est donc de mettre en place un serveur qui testera régulièrement les prompts utilisés par l'entreprise afin de conserver les réponses de l'API dans une base de données. Parallèlement, je devais créer un site web (PHP/Symfony) permettant de visualiser ces réponses ainsi que des statistiques associées, telles que le temps de réponse de l'API et la nature des réponses (erreurs ou réponses normales).
Ce stage m'a permis de mettre en application plusieurs compétences acquises lors de mes études, notamment l'appréhension des besoins de l'utilisateur. Dès le début de mon stage, j'ai pris connaissance des besoins de l'entreprise en m'entretenant avec mon responsable de stage. Cet entretien initial m'a fourni une première idée globale de la mission à accomplir.
Lors de la première semaine de mon stage, j'ai eu une présentation détaillée du projet à réaliser. L’entreprise utilise l’API de ChatGPT dans divers modules de formations, notamment pour l'apprentissage des langues via des interactions avec une IA. J'ai ensuite élaboré une ébauche de solution pour répondre à ces besoins. Comme pour tout projet, les besoins ont évolué au cours de mon stage pour diverses raisons :
Pour mener à bien mon projet, en plus d'avoir identifié les besoins de l'entreprise, j'ai dû m'adapter aux infrastructures existantes de l'entreprise ainsi qu'à l'API d'OpenAI. Concernant le test des outils, j'ai d'abord récupéré les prompts depuis les serveurs de l'entreprise via leur API, puis je les ai envoyés à l'API d'OpenAI. Les différentes informations des réponses, telles que le temps de réponse, le contenu des réponses et leur complétude, étaient ensuite stockées.
Pour les assistants virtuels, il n'était plus nécessaire de passer par les serveurs de l'entreprise. Les informations sur les assistants à tester étaient directement récupérées depuis la base de données de mon site, puis soumises à l'API d'OpenAI pour obtenir les réponses.
Ce projet m'a donc amené à intégrer l'API d'OpenAI ainsi que celle d'OnlineFormaPro, assurant ainsi une intégration efficace entre les deux systèmes.
Après avoir établi les besoins de l'entreprise et analysé l'existant, j'ai créé une base de données permettant de stocker les informations nécessaires au fonctionnement du serveur. Comme vous pouvez le voir sur mon modèle conceptuel de données (MCD) actuel peut se décomposer en trois blocs. Ce modèle n'a pas été créé ainsi immédiatement et a nécessité plusieurs ajustements au fur et à mesure de l'évolution du projet.
À l'origine, je devais seulement stocker des données et les visualiser. Cependant, après plusieurs échanges avec mon responsable de stage, de nouvelles idées sont apparues, les plus notables étant :
Comme ces données provenaient de serveurs différents (OpenAI et OnlineFormaPro), il était essentiel que la base de données ne devienne pas obsolète à chaque changement dans les réponses des serveurs. Pour simplifier l'enregistrement des données, j'ai décidé de stocker les réponses complètes au format JSON de l'API. De cette manière, si la réponse change ou si l'entreprise souhaite ajouter des informations dans le visuel du site, il n'est pas nécessaire de modifier la base de données. Il suffit d'adapter uniquement le visuel du site.
En récupérant les réponses de l'API d'OpenAI, j'obtiens également des informations très utiles telles que le temps de réponse, la présence d'erreurs et leur type. Ces données sont essentielles pour analyser la performance et la fiabilité de l'API.
Pour fournir une vue globale et détaillée des réponses de l'API, j'ai intégré différents graphiques dans la page des statistiques. Ces graphiques permettent de visualiser les tendances et les anomalies de manière claire et concise.
Par exemple, un graphique montre la distribution des temps de réponse, mettant en évidence les pics de latence. Un autre graphique présente la répartition des types d'erreurs rencontrées, aidant à identifier les problèmes récurrents. Ces visualisations permettent de prendre des décisions éclairées pour optimiser l'utilisation de l'API.
En outre, j'ai configuré le système pour capturer et stocker les données de manière efficace et sécurisée. Les données sont stockées dans un format JSON, ce qui facilite leur extraction et leur manipulation pour diverses analyses. Cela garantit également que la base de données reste adaptable aux changements futurs de l'API.
Mon stage chez OnlineFormaPro a été extrêmement enrichissant et formateur. J'ai pu mettre en pratique et développer mes compétences en gestion de projet, en développement web (PHP, Symfony), et en gestion de bases de données. J'ai participé activement à l'élaboration d'un serveur de tests pour l'API d'OpenAI, à la conception et l'optimisation de bases de données, ainsi qu'à la création d'un site web permettant de visualiser et d'analyser les réponses de l'API.
Ce projet m'a permis de travailler sur des aspects techniques variés tout en améliorant mon organisation et ma capacité à m'adapter aux évolutions constantes de la technologie. J'ai également eu l'occasion de collaborer avec des professionnels expérimentés, ce qui m'a aidé à développer mes compétences personnelles et à mieux comprendre le fonctionnement d'une équipe de développement.
Durant ce stage, j'ai consolidé plusieurs compétences clés :