lab r&d

Nos travaux

Depuis la création de notre Laboratoire R&D, nos travaux sont salués par le ministère de l’enseignement supérieur et de la recherche, qui reconnait nos investissements et avancées en nous octroyant le Label de Jeune Entreprise Innovante.

AIDA (Artificial Intelligence for Development Assistant) 

Et si 45% de la réalisation de vos projets IT étaient générées automatiquement grâce à l’Intelligence Artificielle ? AIDA (Artificial Intelligence for Development Assistant) représente la première squad d’agents intelligents pour soutenir les développeurs dans leur quotidien. 

La solution d’assistant de développement AIDA utilise les avancées de pointe dans le domaine du traitement du langage naturel pour aider les entreprises à accélérer leur processus de développement et optimiser le flux de projet dans l’ensemble. La fiabilité de notre développeur est rendue possible grâce à un travail important de modélisation. Chez Novelis, nous considérons les assistants de développement comme un ajout essentiel aux outils de développement en raison de leur efficacité. Nous croyons que les assistants de développeur seront un facteur de grands changements dans la façon dont les organisations conçoivent, structurent et mènent des projets dans un avenir proche.

AIDA constitue l’un de nos principaux travaux dans le cadre de notre programme de Smart Programming visant à concevoir et mettre en place des développeurs artificiels pour simplifier le développement informatique, dépasser les limites et contraintes technologiques et éliminer le travail répétitif. AIDA est capable d’échanger en langage naturel avec les développeurs pour générer du code et ainsi créer des applications.

En quelques mots :

  • Projet autour du Smart Programming dans la philosophie No/Low code
  • Des architectures complexes utilisant notamment du NLP et le traitement d’image de l’IA
  • Repenser la façon dont un développeur interagit pour générer des applications

La modélisation, un pilier pour l’aspect Compréhension 

La modélisation consiste à transformer un problème en une représentation structurée et utilisable. En quelque sorte, c’est une manière de reformuler le problème en une sortie standard afin de prendre des actions et des décisions en aval. 

Dans AIDA, la modélisation a lieu dans son module EntityIdentifier, qui vise à encoder l’entrée en langage naturel en diagrammes de langage de modélisation unifié (UML) à l’aide de techniques d’extraction de connaissances. 

Extraction de connaissances des données 

L’extraction de connaissances est un sous-domaine très innovant du traitement du langage naturel. C’est le processus d’élaboration d’informations structurées et concises à partir de textes naturels. À partir d’un article, d’un journal, d’un e-mail ou même d’une description de produit, on peut extraire une cartographie des organisations, des personnes, des lieux et des entités à l’aide de techniques d’extraction de connaissances. Pour accomplir l’extraction de connaissances, diverses méthodes telles que les méthodes basées sur des pipelines de règles, les transformateurs et les approches d’apprentissage par renforcement ont été explorées par la recherche, ce qui rend la technologie encore plus sophistiquée. 

Dans notre travail, l’extraction de connaissances est responsable de la collecte des éléments clés pour les aspects orientés objet d’un projet. Par exemple, dans un projet de site de vente en ligne, la description des produits en vente en langage naturel déclenchera un module d’extraction de connaissances pour extraire des informations sur ces produits à partir de la description et comprendre comment ils sont liés afin de générer des représentations de classes dans un format UML normalisé.

Langage de modélisation unifié 

Le langage de modélisation UML (Unified Modeling Language) est utilisé dans le processus de modélisation d’AIDA pour garantir une cohérence et une standardisation des informations échangées.  

Le choix d’UML comme langage de modélisation est justifié par sa capacité à représenter de manière cohérente le système modélisé. UML couvre à la fois l’aspect structurel et comportemental d’un système. La structure est représentée à travers des « diagrammes UML structurels »; un ensemble de diagrammes (diagramme de classe, diagramme de composants, etc.) qui décrivent les entités du système à différents niveaux de détail. En revanche, le comportement est décrit à travers des « diagrammes UML comportementaux » (diagramme d’activité, diagramme de communication, etc.), qui encapsulent les interactions entre les entités, leurs états et les événements pouvant survenir. 

La modélisation dans l’assistant AIDA de Novelis 

La modélisation est un instrument essentiel dans notre travail, sans elle, le modèle ne sera pas en mesure de bien comprendre une demande, rendant ainsi difficile pour les générateurs de produire une réponse fiable. UML, associé à des techniques d’extraction de connaissances de pointe, permet une représentation approfondie du problème, ce qui résout ce problème. 

De plus, Novelis utilise un ensemble de techniques basées sur des règles pour limiter la propagation des erreurs et augmenter la précision de sa solution. Une couche d’analyse syntaxique est utilisée pour construire un graphe de dépendance à partir de la syntaxe de l’entrée afin de mieux comprendre la demande de l’utilisateur. Un résolveur de coréférence basé sur Roberta est utilisé pour vérifier à nouveau s’il reste des coréférences dans le texte. Enfin, un module de détection des modificateurs quantificatifs vérifie la cardinalité des entités extraites avant d’encoder les informations dans un diagramme de classe UML. 

Il est certain que l’avenir de l’informatique passe par le développement des applications où l’effort de « code » sera de moins en moins important, a minima pour une partie d’entre elles. En témoigne l’intérêt des géants du secteur comme Microsoft ou l’actualité des professionnels du secteur.

AIDA détient un modèle LLM pour générer le code demandé

Les LLM, ou modèles de langage de grande taille, ont été utilisés avec succès pour générer du code informatique pour une application. Grâce à leur capacité à comprendre le langage naturel et à générer des textes de manière fluide, les LLM peuvent être utilisés pour créer du code qui suit les instructions données en langage naturel. En utilisant cette approche, le processus de développement de l’application peut être accéléré, car les programmeurs n’ont plus besoin de passer autant de temps à coder manuellement chaque ligne de code. Cela permet également de réduire les erreurs de codage et d’améliorer la qualité globale de l’application. En résumé, l’utilisation de LLM pour la génération de code informatique peut être une approche efficace pour les développeurs qui cherchent à améliorer l’efficacité et la qualité de leur travail.

À qui s’adresse un projet comme AIDA ?

  • Pour les développeurs
  • Pour les analystes fonctionnels
  • Pour les utilisateurs citoyens
  • Pour les étudiants, etc.

En réalité, AIDA s’adresse en premier lieu aux informaticiens, mais il s’agit bien entendu d’une première étape car l’évolution de ce type d’interface Homme-Machine a vocation à faciliter l’accès au plus grand nombre. C’est en cela qu’AIDA participe également pleinement aux mouvements « citizens developers » qui émergent mais qui doivent encore faire leurs preuves.

OWD (Object Word Detection)

Une solution permettant de détecter des mots et des objets dans une vidéo grâce à l’IA et au Machine Learning (NLP, Speech Analytics…).  

En quelques mots, la solution OWD liste tous les moments (en séquence / seconde) où les mots sont cités et permet d’indiquer à quel moment un objet spécifique apparait dans une vidéo (voiture, lampe…) ou bien toutes les séquences où l’objet en question apparaît. 

Quels sont les cas d’usage d’OWD ? 

  • Pour les entreprises souhaitant proposer à leurs clients des publicités en lien avec des objets et des mots apparaissant dans l’audio et le visuel d’une vidéo de leur site web. 
  • Pour un laboratoire de bactériologie qui veut avoir des alertes lors de l’apparition d’un objet spécifique au moment de la culture par exemple. 
  • Pour les plateformes MOOC ou e-learning, si un étudiant veut accéder à une séquence spécifique en saisissant le nom de l’objet ou bien le mot spécifique. 
  • Pour les sites de e-commerce, pour permettre de proposer au client un produit qui a un rapport avec la vidéo et donc aussi les publicités. 
  • Pour des sociétés d’import / export dans le contrôle de marchandises réceptionnées (contrôles par vidéo pour accord ou refus) 

Cette liste est bien entendu non exhaustive. 

Principes techniques autour de l’architecture :

Autour de l’environnement :

  • Application Web (langage de développement Python / Framework Flask)
  • Détection des objets (IA – DL, Dataset : coco, API : OpenCV)
  • Détection des mots (API : speech recognition)

Les sujets en cours

IoT (Internet Of Things)

Conceptuellement, l’IoT fait référence aux objets connectés capables d’interagir. Il s’agit en quelque sorte de créer des ponts entre le monde connecté virtuel et le monde réel. 

Techniquement, on peut le considérer comme une invention technologique permettant d’identifier, via des protocoles SMTP, HTTP, adresse IP etc., un objet physique au moyen d’un système de communication non-filaire de type RFID, Wi-Fi ou bien Bluetooth. 

L’IoT regroupe tout l’écosystème des objets connectés, même à grande échelle : téléviseurs, bâtiments, voitures, parcelles agricoles etc. Grâce à des capteurs intégrés dans ces objets, nous sommes capables de gérer leur fonctionnement à distance en seul un clic et d’en extraire les données que l’on souhaite traiter. C’est l’outil le plus puissant pour générer, manipuler et partager les données. 

En 2021, environ 50 milliards d’objets connectés supplémentaires ont fait leur entrée sur le marché, selon l’Institut Gartner.  

Réalité Augmentée

Les premières expérimentations en termes de réalité augmentée datent des années 60, puis des années 80. Mais cette technologie ne fait en réalité entendre parler d’elle que depuis quelques années et ce grâce à l’essor des smartphones qui embarquent désormais assez de capteurs et d’intelligence, ainsi que les fonctions logicielles associées.   

En clair, la réalité augmentée est une technologie qui permet de superposer du contenu virtuel au monde réel que l’utilisateur continue de percevoir.   

On peut, bien souvent mais à tort, confondre réalité augmentée et réalité virtuelle, qui sont pourtant deux concepts bien différents : d’un côté, la réalité augmentée permet de complémenter le monde réel (en proposant des usages différents) tandis que la réalité virtuelle propose une immersion totale dans un monde irréel.