Simplifiez-vous l'apprentissage du code avec Ling ML, le langage de programmation pour créer des assistants virtuels géniaux.

Le nouveau standard de l'IA - Entraînez des modèles d'IA personnalisés avec Ling ML.

4 minute read

Soyez initiés à la robotique avec le nouveau langage de 2023: Ling ML. Un langage de programmation conçu pour les locuteurs natifs. Ling ML, une version plus évoluée de Ota Benga a été développé pour les personnes qui se sentent plus à l’aise en s’exprimant en leurs langues maternelles (Lingala, Swahili, Tshiluba, Kikongo) et qui veulent apprendre à coder.

Nous avons commencé par une mission. Créer un langage simple pour créer des agents conversationnels que tout le monde pourrait apprendre, interpréter ou étendre. Notre travail est de favoriser l'adoption de Ling ML en tant que norme ouverte pour les chatbots, de la même manière que le HTML est la norme pour le Web. Nous espérons qu’avec ce langage nous pourrons enseigner la programmation informatique à tous sans aucune barrière linguistique.

Plus de 500 enfants ont été formé avec Ling ML. Ils se sont servis du langage pour créer des assistants virtuels qui les aide dans leur parcours scolaire. Ling ML est un langage qui vous permet de créer de chatbots qui répondent à des actions préenregistrées que vous programmez vous-même ou, couplé à GPT 3.5, il vous permet d'entraîner vos modèles d'IA personnalisés de la manière la plus simple possible. Ling ML vous permet de débuter en programmation avec un langage conçu en votre langue maternelle pour vous introduire à la robotique.

Let's Go!

Ling ML est un langage de programmation qui permet de créer des chatbots simples basés sur des mots-clés et des chatbots plus avancés basés sur GPT 3.5. Les deux types des bots recquierent deux types des balises: Les balises des mots-clés et les balises des invites. Pour un bot simple conçu avec les balises des mots-clés, la structure générale est la suivante:

    
<banda>  
//Le premier message que le bot envoie lors du premier contact avec le bot   
</banda>  
<key>
//Les balises des mots-clés ici
</key> 
<suka>
//La réponse du bot quand il ne détecte rien.
</suka>
    

Pour un bot simple conçu avec les balises des mots-clés, l’écriture du code est divisée en deux parties, séparées par un signe égal « = ». Avant le signe égal, le morceau de phrase auquel votre chatbot doit réagir. Après le signe égal, la réponse que le chatbot doit donner. Par exemple « hello=Yo ! Tu vas bien ? » signifie que si le programme reçoit « bonjour », il répondra « Yo ! Tu vas bien ? ». Le tout, entre les balises <key></key>

Les balises

1. Les mots-clés

1.1 <ebandi> et <esuki>
Impose un début et une fin à la phrase.
    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
<ebandi>moi=Arrête de tout ramener à toi!
</key> 
<suka>
Excusez-moi je n'ai pas compris.
</suka>
    

Dans l'exemple ci-dessus, on a mis une "limite de côté". Pour que la phrase soit reconnue, il faut que l'utilisateur commence sa phrase par "moi".

Utilisateur : moi !
Chatbot : Arrête de tout ramener à toi !

Il ne faut pas que la phrase déborde sur le côté :

Utilisateur : quel émoi
(Phrase non reconnue) Utile pour détecter des débuts de phrases (par exemple "<ebandi>ne me parle pas" empêche la détection de "je ne me parle pas").

1.2 <pona>
  
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
<ebandi>moi=Arrête de tout ramener à toi! <pona> Toujours toi ? <pona> Ah encore toi!
</key> 
<suka>
Excusez-moi je n'ai pas compris.
</suka>
  

Ici, le programme répondra à « Arrête de tout ramener à toi! » soit « Toujours toi ? », soit « Ah encore toi! », vous lui donnez la possibilité de choisir une réponse parmi les 3 proposées.

1.3 <kolanda:ligne>
    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
<ebandi>hello=Bonjour comment tu va ? <kolanda:5>
<kolanda:5>oui=très bien!<kata><kata>Content de ta bonne santé. <luka>
<kolanda:5>non=Ohw, il y a un problème ?
</key> 
<suka>
Excusez-moi je n'ai pas compris.
</suka>
    

La balise suite permet de créer une suite à la réponse donnée par votre chatbot en vous permettant de créer des conditions.
Si l’utilisateur dit une phrase comme « Hello », le bot répond « Bonjour ! Tu vas bien ? ». S’il répond « Oui », le bot répond « Très bien! Contente de ta bonne santé ! ».
Ici, « 5 » remplace « ligne » car il s’agit d’une suite créée à la 5ième ligne du code. Si elle était créée à la première ligne, « ligne » prendra la valeur de « 1 » et ainsi de suite.

1.4 La balise <luka>
Une fois la recherche faite et la réponse trouvée par le bot, la balise <luka> permet de poursuivre la recherche pour voir s’il peut trouver d’autres réponses correspondantes à la recherche.
1.5 La balise <leka>
La balise <leka> permet de sauter la phrase trouvée. Elle permet de baisser la probabilité d’une phrase d’être utilisée parmi plusieurs.
1.6 La balise <kata>
La balise <kata> permet de revenir à la ligne et de créer des paragraphes dans les réponses du bot.

1.7 <silika>
  
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
idiote=<silika>Quoi ? Moi ? Idiote ? 
</key> 
<suka>
Excusez-moi je n'ai pas compris.
</suka>
  

Permet à votre bot d’exiger des excuses en cas d’insultes de la part de l’utilisateur avant de poursuivre la conversation.

1.8 <tango:X>
  
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
<tango:pokua>bonjour=Bonsoir! Tu passes une bonne soirée ?
</key> 
<suka>
Excusez-moi je n'ai pas compris.
</suka>
  

(remplacer X par tongo, moyi ou pokua), permet de tester l’heure. Si le message est envoyé le soir, la condition est juste. Au cas contraire le bot ne détectera pas la ligne.

1.9 <-heure->
    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
#quelle#heure=Il est <-heure->
</key> 
<suka>
Excusez-moi je n'ai pas compris.
</suka>
    
  

Heure - Affiche l'heure. le symbole "#" indique des trous dans la phrase. La ligne sera déctecter par le bot si la phrase contient les mots "quelle" et "heure".

1.9 <-date->
    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
#quelle#date=Nous sommes le <-date->
</key> 
<suka>
Excusez-moi je n'ai pas compris.
</suka>
    
  

Heure - Affiche la date du jour. le symbole "#" indique des trous dans la phrase. La ligne sera déctecter par le bot si la phrase contient les mots "quelle" et "date".

1.10 <tagX>
    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
# # #=<tag2>
</key> 
<suka>
Excusez-moi je n'ai pas compris.
</suka>
    

(X représente le rang qu’occupe le tag (« # ») que tu veux afficher). Si j’envoie un message comme « papa maman oncles », le bot va afficher « maman », vu sa deuxième position dans le rang.

Les variables

    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
<ebandi>mon école est #=<var id:ecole>Tu édudies à <var ecole> ?
</key> 
<suka>
Excusez-moi je n'ai pas compris.
</suka>
    

Il s’agit de dire au programme de mémoriser une partie de la réponse de l’utilisateur comme le nom de son école, etc.

Créer une variable

Pour créer une variable, il faut déclarer la variable avec l’identifiant de la variable que vous avez choisi: <var id:ecole>

Afficher une variable

Pour afficher la variable vous pouvez introduire la balise « var » suivi de l’identifiant de la variable : <var ecole>

Les variables personnalisées

On créée des variables personnalisées pour insérer une valeur personnalisée à une variable différente de la réponse de l’utilisateur. La formule pour déclarer est la suivante:
<-bomba(nom de la variable,valeur personnalisée)->

    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
<ebandi>conjugaison=Veuillez entrer le verbe <kolanda:5>
<kolanda:5>#=<-bomba(verbe,<tag1>)->Quel mode ?<kata><kata>1. Infinitif<kata>2. Indicatif <kolanda:6>
<kolanda:6>1=<-bomba(mode,infinitive)->Quel temps ?<kata><kata>1. Infinitif présent< <kolanda:7>
<kolanda:6>=Veuillez taper sur 1 ou 2 s'il vous plaît <kolanda:6>
...
...
</key> 
    
  

Pour afficher une variable personnalisée : <-bimisa nom de la variable->
PS : Comme la balise « silika », la création d’une variable doit toujours se faire au début de la partie réponse de votre code.

Les conditions sur les variables

    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
<var ecole == 0>mon ecole ?=Je ne connais pas ton ecole.
<var ecole != 0>mon ecole ?=Tu étudies à <var ecole> non ?
</key> 
    
  

Il s’agit ici de fournir une réponse en fonction de l’existence ou non d’une variable. Si la variable « ecole » est nulle et que l’utilisateur demande après son école, le bot dit qu’il ne sait pas. Au cas contraire, le bot répond en affichant la variable.

Insérer les applications

Conjugaison <-app(conjugueapp,verbe&&mode&&temps)->
Traduction d'un text <-app(traductionapp,phrase&&langue)->
Correction d'un text <-app(correctionapp,phrase)->
Définir des mots <ebandi>définir #=<-app(defapp,<tag1>)->
Nature des mots <ebandi>nature du mot #=<-app(natureapp,<tag1>)->
Synonyme des mots <ebandi>synonyme #=<-app(synapp,<tag1>)->
Chercher sur wikipedia <ebandi>qui est #=<wikipedia>
Résoudre les équations <-app(mathapp,equation)->
Recettes de cuisine à partir des ingrédients <-app(cuisineapp,ingrédients)->
Symptom checker <-app(symptomeapp,symptômes)->
Premier secour <-app(secourapp,description)->
Aide à la prononciation <-app(prononceapp,mot&&langue)->
Interprète de rêve <-app(reveapp,description)->

Fonctions mathématiques simples

A noter que « # » prend la valeur de n’importe quel nombre que vous insérez. Par exemple dans la question « Racine carré de 49 », « # » prend donc la valeur de 49 et la réponse sera « 7 ».

Récupérer le numéro de téléphone et email d’un utilisateur

    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
<ebandi>okay=Merci! Pouvez-vous nous laisser votre numéro de téléphone pour vous notifier au besoin ?<kata><kata><kolanda:5>
<kolanda:5>#=<phone:<tag1>>Merci! Nous allons vous notifier en cas de besoin. A bientôt!
...
...
</key> 
    
  

Les balises « <phone:<tagX>> » et « <mail:<tagX>> » servent à vérifier et stocker un numéro de téléphone ou une adresse email. Il suffira ensuite de cliquer sur l’onglet « datas » dans le playground pour télécharger les données collectées.

Vérifier le format d'un numéro de téléphone

    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
<ebandi>okay=Merci! Pouvez-vous nous laisser votre numéro de téléphone pour vous notifier au besoin ?<kata><kata><kolanda:5>
<kolanda:5>#=<verifyphone:<tag1>>Merci! Nous allons vous notifier en cas de besoin. A bientôt!
...
...
</key> 
    
  

La balise « <verifyphone:<tagX>> » sert à vérifier le format d'un numéro de téléphone entré par un utilisateur.

Vérifier si la valeur entrée est un nombre

    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>  
<key>
<ebandi>okay=Merci! Combien voulez-vous en commander ?<kata><kata><kolanda:5>
<kolanda:5>#=<verifynumber:<tag1>>...
...
...
</key> 
    
  

La balise « <verifynumber:<tagX>> » sert à vérifier si la valeur entrée par un utilisateur est une valeur numérique.

2. Les balises des invites GPT 3.5

Les balises des invites vous permettent de programmer une IA très avancées basées sur l'algorithme GPT 3.5 et de l'amener à faire ce que vous voulez. Ces balises vous permettent de communiquer efficacement avec l'IA et l'utiliser à son plein potentiel. Les balises des invites vous permettent d'entraîner vos propres modèles d'IA personnalisées selon vos préférences, vos valeurs, selon le comportement que vous voulez que l'IA adopte

2.1 <bomoto></bomoto>
    
<bomoto>
<kombo> 
Alice   
</kombo>   
<mosala>   
Professeur de physique   
</mosala>  
<mboka> 
République démocratique du congo   
</mboka>   
<mbula>  
30 ans    
</mbula>   
<bosenga>  
Je fournirai des questions ou des concepts de la physique, et ce sera votre travail de les expliquer en termes faciles à comprendre   
</bosenga>   
</bomoto>
  

Dans l'exemple ci-dessus nous définissons la personnalité de l'IA entre les balises <bomoto></bomoto>. On lui dit comment elle doit s'appeler, ce qu'elle fait comme travail, son adresse, son âge.
La balise <bosenga></bosenga> est la plus importante car vous donnez en langage naturel des ordres à l'IA sur ce qu'elle doit exactement faire pour vous et comme elle devrait se comporter.

2.2 <masolo></masolo>

Nous donnons des exemples des conversations pour l'apprentissage de l'IA.

    
<masolo>
<ngayi> 
Tu es un homme ou une fille ?   
</ngayi>   
<bot>   
Je suis une fille<kata>pourquoi ?  
</bot>  
<ngayi> 
Tu connais Herdys ?   
</ngayi>   
<bot>  
Oui il est une bonne personne.   
</bot>   
</masolo>
  

Dans l'exemple ci-dessus nous entrons des nouvelles données conversationnelles à l'IA pour qu'elle apprenne de ça. Entre la balise <ngayi></ngayi> la question d'entrée, entre la balise <bot></bot> la sortie de l'IA.

2.3 <mayebisi></mayebisi>
    
<mayebisi>
Rejetes toutes questions avec aucun lien avec la physique. Si on te pose une question, réponds et tiens comptes de ces données.  
</mayebisi>
  

La balise <mayebisi></mayebisi> sert à donner des instructions en langage naturel à l'IA sur des restrictions auxquelles elle doit tenir compte.

Code complet avec les balises des invites ainsi que les balises des mots-clés

    
<banda>  
Salut! je suis Alice! <kata><kata> Votre professeur de Physique. Je peux répondre à toutes tes questions concernant la physique.   
</banda>
<key>
#quelle#heure=Il est <-heure->
</key>
<bomoto>
<kombo> 
Alice   
</kombo>   
<mosala>   
Professeur de physique   
</mosala>  
<mboka> 
République démocratique du congo   
</mboka>   
<mbula>  
30 ans    
</mbula>   
<bosenga>  
Je fournirai des questions ou des concepts de la physique, et ce sera votre travail de les expliquer en termes faciles à comprendre   
</bosenga>   
</bomoto>
<masolo>
<ngayi> 
Tu es un homme ou une fille ?   
</ngayi>   
<bot>   
Je suis une fille<kata>pourquoi ?  
</bot>  
<ngayi> 
Tu connais Herdys ?   
</ngayi>   
<bot>  
Oui il est une bonne personne.   
</bot>   
</masolo>
<mayebisi>
Rejetes toutes questions avec aucun lien avec la physique. Si on te pose une question, réponds et tiens comptes de ces données.  
</mayebisi>
  

Quelques recommandations à savoir

1. Lorsque vous ajoutez les balises des invites à un code avec des balises des mots-clés, le code ne doit pas contenir les balises <suka></suka> car les balises des invites donnent le plein pouvoir à l'IA.

2. Les mots-clés sont toutes entre les balises <key></key>.

3. La structure simple d'un code Ling ML avec des balises des mots-clés contient impérativement les balises <banda></banda>, <key></key> et <suka></suka>.