{"id":327,"date":"2023-07-30T21:11:17","date_gmt":"2023-07-30T19:11:17","guid":{"rendered":"https:\/\/artificiellementintelligent.wordpress.com\/?p=327"},"modified":"2023-07-30T21:11:17","modified_gmt":"2023-07-30T19:11:17","slug":"utilisation-des-modeles-conversationnels-v-generation-de-code","status":"publish","type":"post","link":"https:\/\/artificiellementintelligent.eu\/index.php\/2023\/07\/30\/utilisation-des-modeles-conversationnels-v-generation-de-code\/","title":{"rendered":"Utilisation des mod\u00e8les conversationnels V : G\u00e9n\u00e9ration de code"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">1. Introduction<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Un des comp\u00e9tences les plus int\u00e9ressantes des mod\u00e8les conversationnels est qu&rsquo; ils sont assez dou\u00e9s pour l&rsquo;\u00e9criture de code informatique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A la base, ceci peut sembler surprenant car ces mod\u00e8les ont plut\u00f4t \u00e9t\u00e9 d\u00e9velopp\u00e9s dans le but de converser naturellement avec nous dans nos propres langues. En r\u00e9alit\u00e9, les d\u00e9veloppeurs de ces mod\u00e8les ont cherch\u00e9 d\u00e8s le d\u00e9but \u00e0 rendre ces mod\u00e8les capables de coder, et leurs jeux de donn\u00e9es d&rsquo;entra\u00eenement comprennent une grande quantit\u00e9 de code informatique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ceci transforme en pratique un programme comme ChatGPT en une sorte \u00ab\u00a0programmeur conversationnel\u00a0\u00bb, et des mod\u00e8les similaires sont int\u00e9gr\u00e9s dans certains sites web \u00e0 destination de programmeurs chevronn\u00e9s comme GitHub (qui offre GitHub Copilot, un assistant de programmation dont l&rsquo;acc\u00e8s est payant).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ce texte sera organis\u00e9 en deux parties. Dans la premi\u00e8re partie, nous regarderons comment utiliser ChatGPT dans des t\u00e2ches de programmation \u00e9l\u00e9mentaires. Dans la seconde partie, nous r\u00e9fl\u00e9chirons aux cas d&rsquo;utilisation appropri\u00e9s, les avantages et les limitations de ces nouveaux assistants de programmation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Quelques cas d&rsquo;utilisation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les mod\u00e8les g\u00e9n\u00e9rationnels ont des comp\u00e9tences suffisantes pour r\u00e9diger des codes simples mais leur avantage est surtout qu&rsquo;ils peuvent assister un programmeur dans la cr\u00e9ation de programmes \u00e9l\u00e9mentaires ou de fonctions et routines bien circonscrites, \u00e0 condition de bien d\u00e9crire l&rsquo;algorithme dans le texte de la question, ainsi que le langage de programmation souhait\u00e9.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ces mod\u00e8les peuvent aussi servir \u00e0 automatiser des codes de nature r\u00e9p\u00e9titifs dont la r\u00e9daction \u00e0 la main est fastidieuse (par exemple pour les interfaces utilisateur graphiques), ou encore proposer des am\u00e9liorations \u00e0 un code pr\u00e9alablement fourni, voire identifier des erreurs dedans. Finalement, si vous expliquez le comportement attendu d&rsquo;un programme, vous pouvez demander la g\u00e9n\u00e9ration automatis\u00e9e de code de test unitaires (ce qui tombe en g\u00e9n\u00e9ral dans la cat\u00e9gorie \u00ab\u00a0barbant\u00a0\u00bb!). Quoi que vous fassiez, attention de toujours rester critiques quant aux propositions qui vous sont faites.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Nous allons passer ces diff\u00e9rents cas en revue, en illustrant avec le langage Python :<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.1. R\u00e9diger du code ex\u00e9cutant un algorithme \u00e9l\u00e9mentaire<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Il suffit de bien d\u00e9crire ce que l&rsquo;on veut, y compris le langage et la forme (programme autonome, fonction avec ses arguments&#8230;). Nous allons ici demander \u00e0 ChatGPT le code pour une fonction Python qui retourne une liste de nombres premiers :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1360\" height=\"1766\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/07\/image-20230730a-1.png\" alt=\"\" class=\"wp-image-657\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730a-1.png 1360w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730a-1-231x300.png 231w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730a-1-789x1024.png 789w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730a-1-768x997.png 768w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730a-1-1183x1536.png 1183w\" sizes=\"auto, (max-width: 1360px) 100vw, 1360px\" \/><figcaption class=\"wp-element-caption\">Dialogue 1 : G\u00e9n\u00e9ration d&rsquo;une fonction de calcul des nombres premiers<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Cela semble bien correct. Le mod\u00e8le en a profit\u00e9 pour cr\u00e9er une autre fonction qui indique si un nombre est premier ou pas. Tr\u00e8s bien. Il ne reste qu&rsquo;\u00e0 copier le code et le placer dans un fichier source puis l&rsquo;exploiter.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.2. Commenter le code<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Vous pouvez utiliser le mod\u00e8le \u00e0 la fois pour ajouter des commentaires en ligne dans un code que vous lui fournissez, ou encore pour g\u00e9n\u00e9rer des fichiers de documentation s\u00e9par\u00e9s (README, description d&rsquo;interface..).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Commen\u00e7ons par demander \u00e0 ChatGPT de commenter le code qui a \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9 au point pr\u00e9c\u00e9dent.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1344\" height=\"1634\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/07\/image-20230730b-1.png\" alt=\"\" class=\"wp-image-658\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730b-1.png 1344w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730b-1-247x300.png 247w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730b-1-842x1024.png 842w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730b-1-768x934.png 768w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730b-1-1263x1536.png 1263w\" sizes=\"auto, (max-width: 1344px) 100vw, 1344px\" \/><figcaption class=\"wp-element-caption\">Dialogue 2 : Insertion de commentaires dans le code<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Et voici le fichier README qui d\u00e9crit succinctement le code:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1170\" height=\"916\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/07\/image-20230730c-1.png\" alt=\"\" class=\"wp-image-660\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730c-1.png 1170w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730c-1-300x235.png 300w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730c-1-1024x802.png 1024w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730c-1-768x601.png 768w\" sizes=\"auto, (max-width: 1170px) 100vw, 1170px\" \/><figcaption class=\"wp-element-caption\">Dialogue 3 : G\u00e9n\u00e9ration d&rsquo;un fichier README<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Pas grand chose \u00e0 redire, cela semble fonctionner correctement. A noter que le mod\u00e8le \u00e0 utilis\u00e9 un format <em>Markdown<\/em> sans que cela lui ait \u00e9t\u00e9 demand\u00e9.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.3. Demander la g\u00e9n\u00e9ration d&rsquo;une batterie de tests unitaires<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La bonne pratique de la programmation veut que chaque fonctionnalit\u00e9 cod\u00e9e se voie accompagn\u00e9e d&rsquo;une fonction de test unitaire qui s&rsquo;int\u00e8gre dans un environnement de test\/validation qui va \u00eatre ex\u00e9cut\u00e9 \u00e0 chaque mise \u00e0 jour du code afin d&rsquo;\u00e9viter toute r\u00e9gression. Demandons donc \u00e0 ChatGPT de g\u00e9n\u00e9rer un code de ce type pour nos deux fonctions :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1408\" height=\"1916\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/07\/image-20230730d-1.png\" alt=\"\" class=\"wp-image-663\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730d-1.png 1408w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730d-1-220x300.png 220w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730d-1-753x1024.png 753w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730d-1-768x1045.png 768w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730d-1-1129x1536.png 1129w\" sizes=\"auto, (max-width: 1408px) 100vw, 1408px\" \/><figcaption class=\"wp-element-caption\">Dialogue 4 : G\u00e9n\u00e9ration de fichiers de test<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Ici encore, cela semble correct. N\u00e9anmoins, il serait int\u00e9ressant d&rsquo;ajouter des tests pour voir comment le programme se comporte si on lui donne en argument une valeur nulle ou n\u00e9gative, voire non-num\u00e9rique, pour voir la robustesse de la fonction en cas d&rsquo;argument incorrect. Bien s\u00fbr vous pouvez lui demander interactivement de le faire ou bien l&rsquo;ajouter vous-m\u00eame \u00e0 la main.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.4. Traduire du code d&rsquo;un langage \u00e0 l&rsquo;autre<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A titre d&rsquo;exemple, nous allons traduire la fonction d\u00e9crite ci-dessus de Python vers Go.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1344\" height=\"2118\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/07\/image-20230730e-1.png\" alt=\"\" class=\"wp-image-666\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730e-1.png 1344w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730e-1-190x300.png 190w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730e-1-650x1024.png 650w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730e-1-768x1210.png 768w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730e-1-975x1536.png 975w\" sizes=\"auto, (max-width: 1344px) 100vw, 1344px\" \/><figcaption class=\"wp-element-caption\">Dialogue 5 : Traduction du code de Python vers Go <\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Je n&rsquo;ai pas test\u00e9 ce code mais ici encore le code semble tenir la route. Il serait n\u00e9anmoins judicieux de le tester, \u00e9ventuellement en demandant au mod\u00e8le de fournir des fonctions de test comme il le sugg\u00e8re par ailleurs lui-m\u00eame.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.5. Faire g\u00e9n\u00e9rer un code fastidieux<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Pour garder cet exemple simple, nous allons momentan\u00e9ment quitter le monde du Python pour passer au HTML, qui contient souvent des tas de r\u00e9p\u00e9titions p\u00e9nibles \u00e0 encoder.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1388\" height=\"1948\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/07\/image-20230730f-1.png\" alt=\"\" class=\"wp-image-667\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730f-1.png 1388w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730f-1-214x300.png 214w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730f-1-730x1024.png 730w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730f-1-768x1078.png 768w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730f-1-1094x1536.png 1094w\" sizes=\"auto, (max-width: 1388px) 100vw, 1388px\" \/><figcaption class=\"wp-element-caption\">Dialogue 6 : G\u00e9n\u00e9ration d&rsquo;un texte HTML fastidieux<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Ici aussi, c&rsquo;est correct. Il suffit de sauvegarder le texte dans un fichier \u00e0 l&rsquo;extension <em>.htm<\/em> ou .<em>html<\/em> et vous pouvez l&rsquo;ouvrir dans un navigateur.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.6. Demander des informations sur les librairies appropri\u00e9es \u00e0 un projet<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Identifier les librairies disponibles les plus utiles \u00e0 un projet est souvent une des t\u00e2ches les plus importantes de la r\u00e9daction d&rsquo;un programme. Supposons que je cherche \u00e0 faire de l&rsquo;analyse linguistique en python. Il existe des librairies qui vont offrir une s\u00e9rie de fonctions de traitement pour me faciliter la t\u00e2che. Demandons \u00e0 ChatGPT ce qu&rsquo;il peut proposer :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1384\" height=\"1734\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2023\/07\/image-20230730g-1.png\" alt=\"\" class=\"wp-image-669\" srcset=\"https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730g-1.png 1384w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730g-1-239x300.png 239w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730g-1-817x1024.png 817w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730g-1-768x962.png 768w, https:\/\/artificiellementintelligent.eu\/wp-content\/uploads\/2023\/07\/image-20230730g-1-1226x1536.png 1226w\" sizes=\"auto, (max-width: 1384px) 100vw, 1384px\" \/><figcaption class=\"wp-element-caption\">Dialogue 7 : Recherche de librairies<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Cela semble un bon point de d\u00e9part. Bien s\u00fbr, vous pouvez approfondir le dialogue et demander des d\u00e9tails sur l&rsquo;une ou l&rsquo;autre librairie afin d&rsquo;orienter votre choix.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. R\u00e9flexions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Les mod\u00e8les conversationnels ne sont pas (encore ?) en mesure de remplacer un programmeur. Le code qu&rsquo;ils r\u00e9digent est susceptible de contenir des erreurs et il ne faut pas attendre d&rsquo;eux la cr\u00e9ation d&rsquo;une application complexe \u00e0 partir de rien. Il ne faut pas oublier que ces mod\u00e8les sont \u00ab\u00a0dress\u00e9s\u00a0\u00bb \u00e0 r\u00e9p\u00e9ter ce qu&rsquo; ils ont vu ailleurs &#8211; y compris les erreurs \u00e9ventuelles -, pas \u00e0 raisonner de mani\u00e8re abstraite&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cela veut aussi dire que les personnes n&rsquo;ayant aucune exp\u00e9rience en programmation ne pourront pas recourir \u00e0 ces mod\u00e8les pour pallier \u00e0 leur ignorance. Par contre, le programmeur \u00ab\u00a0occasionnel\u00a0\u00bb, celui qui conna\u00eet les bases du langage sans \u00eatre plong\u00e9 dedans quotidiennement, verra le gain le plus important. Le programmeur expert pourra l&rsquo;utliser pour confronter ses propres id\u00e9es mais le gain sera probablement moindre.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Leur autre grande valeur ajout\u00e9e est qu&rsquo;ils ont un bon niveau de connaissance des diff\u00e9rentes librairies et packages existants qui sont souvent d&rsquo;une grande aide \u00e0 la programmation. Et pour cela, il suffit d&rsquo;entamer un dialogue avec le mod\u00e8le en lui demandant ce qu&rsquo;on cherche et dans quel contexte. Comme pour les autres utilisations de ces mod\u00e8les, il ne faut pas h\u00e9siter \u00e0 remettre en cause ses propositions ou lui demander de changer d&rsquo;approche.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Et d&rsquo;ailleurs, quels langages de programmation ces mod\u00e8les ma\u00eetrisent-ils ? Eh bien la plupart d&rsquo;entre eux, soit non seulement les suspects habituels (Python, Java, C++, Go, PHP&#8230;) mais aussi des langages moins r\u00e9pandus comme le Fortran, le Cobol ou le Lisp. Et si vous h\u00e9sitez sur le choix d&rsquo;un langage, vous pouvez lui poser la question&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une derni\u00e8re remarque pour mentionner le plugin <em>code interpreter<\/em> qui est disponible si vous avez l&rsquo;abonnement ChatGPT+. Je ne l&rsquo; ai volontairement pas utilis\u00e9 dans cet article pour rester g\u00e9n\u00e9raliste. Ce plugin va permettre \u00e0 ChatGPT d&rsquo;ex\u00e9cuter automatiquement du code qu&rsquo;il g\u00e9n\u00e8re et de vous montrer le r\u00e9sultat, au lieu de devoir le recopier manuellement dans un \u00e9diteur puis l&rsquo;ex\u00e9cuter. C&rsquo;est un avantage int\u00e9ressant si vos sc\u00e9narios d&rsquo;utilisation sont fortement orient\u00e9s vers la programmation ou si vous devez souvent analyser des donn\u00e9es.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Les mod\u00e8les conversationnels peuvent non seulement converser naturellement, mais aussi assister les programmeurs. Ils peuvent g\u00e9n\u00e9rer du code, automatiser des t\u00e2ches r\u00e9p\u00e9titives, traduire du code, g\u00e9n\u00e9rer des tests, et recommander des librairies. Cependant, ils ne peuvent remplacer l&rsquo;exp\u00e9rience et le raisonnement abstrait des programmeurs.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-327","post","type-post","status-publish","format-standard","hentry","category-modeles-de-langage","post-preview"],"_links":{"self":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/posts\/327","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/comments?post=327"}],"version-history":[{"count":0,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/posts\/327\/revisions"}],"wp:attachment":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/media?parent=327"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/categories?post=327"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/tags?post=327"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}