{"id":1122,"date":"2024-02-20T11:32:59","date_gmt":"2024-02-20T10:32:59","guid":{"rendered":"https:\/\/artificiellementintelligent.wordpress.com\/?p=1122"},"modified":"2024-02-20T11:32:59","modified_gmt":"2024-02-20T10:32:59","slug":"techniques-d-exploitation-des-modeles-de-langage","status":"publish","type":"post","link":"https:\/\/artificiellementintelligent.eu\/index.php\/2024\/02\/20\/techniques-d-exploitation-des-modeles-de-langage\/","title":{"rendered":"Techniques d&rsquo; exploitation des mod\u00e8les de langage"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Un des points faibles des mod\u00e8les actuellement disponibles sur le march\u00e9 est qu&rsquo; ils ont \u00e9t\u00e9 entra\u00een\u00e9s sur un ensemble de donn\u00e9es publiquement accessibles qui ne va pas n\u00e9cessairement suffire pour r\u00e9pondre \u00e0 certains besoins sp\u00e9cifiques.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Prenons l&rsquo; exemple d&rsquo;une entreprise qui poss\u00e8de un volume important de donn\u00e9es propri\u00e9taires, qui utilise un vocabulaire hautement sp\u00e9cialis\u00e9 ou encore qui utilise des formats de donn\u00e9es sp\u00e9cifiques. Ces connaissances ne seront a priori pas int\u00e9gr\u00e9es dans un mod\u00e8le g\u00e9n\u00e9raliste car les donn\u00e9es ne sont pas accessibles publiquement. Comment y rem\u00e9dier ? C&rsquo;est ce que je voudrais exposer aujourd&rsquo; hui.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il existe plusieurs techniques pour \u00ab\u00a0enrichir\u00a0\u00bb les connaissances du mod\u00e8le. On trouve, par ordre de complexit\u00e9 croissante :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>le <em>prompt engineering<\/em>;<\/li>\n\n\n\n<li>la g\u00e9n\u00e9ration augment\u00e9e de r\u00e9cup\u00e9ration (RAG en Anglais);<\/li>\n\n\n\n<li>l&rsquo; affinage du mod\u00e8le (complet ou optimis\u00e9).<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Ces techniques se retrouvent au milieu de la figure ci-dessous, entre les deux extr\u00eames du simple dialogue et de l&rsquo; entra\u00eenement complet :<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2024\/02\/image-20240218a.png\" alt=\"\" class=\"wp-image-1124\" \/><figcaption class=\"wp-element-caption\">Figure 1 : Techniques d&rsquo; exploitation des mod\u00e8les de langage<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est un sujet int\u00e9ressant \u00e0 couvrir maintenant car il compl\u00e8te bien mon <a href=\"https:\/\/artificiellementintelligent.wordpress.com\/2024\/02\/05\/les-modeles-generatifs-locaux\/\">pr\u00e9c\u00e9dent article<\/a> sur les mod\u00e8les locaux. En effet, certaines techniques comme l&rsquo; affinage s&rsquo; adressent principalement aux mod\u00e8les <em>open-source<\/em> dont les param\u00e8tres sont librement disponibles.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Passons maintenant les diff\u00e9rentes techniques en revue.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Le Prompt Engineering<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Le <em>Prompt engineering<\/em> est un sujet que j&rsquo;ai d\u00e9j\u00e0 trait\u00e9 dans un pr\u00e9c\u00e9dent article accessible <a href=\"https:\/\/artificiellementintelligent.wordpress.com\/2023\/11\/01\/lart-de-converser-avec-les-modeles-de-langage-le-prompting\/\">ici<\/a>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il comprend deux techniques \u00e9l\u00e9mentaires sous-jacentes : la premi\u00e8re consiste \u00e0 fournir suffisamment d&rsquo; informations contextuelles dans l&rsquo;invite. Le mod\u00e8le combinera alors l&rsquo; ensemble des informations en sa possession (ceux de l&rsquo; entra\u00eenement et ceux fournis dans l&rsquo;invite) pour r\u00e9pondre \u00e0 la question pos\u00e9e.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La seconde technique revient \u00e0 inciter le mod\u00e8le \u00e0 suivre un raisonnement logique structur\u00e9. Les mod\u00e8les de langage ayant \u00e9t\u00e9 entra\u00een\u00e9s pour se conformer aux instructions de l&rsquo;utilisateur, il est possible de leur demander de suivre un raisonnement pas \u00e0 pas ou de fournir une s\u00e9rie d&rsquo; exemples r\u00e9solus pour mettre le mod\u00e8le sur la bonne voie. Sans \u00eatre une panac\u00e9e, ces techniques ont d\u00e9j\u00e0 d\u00e9montr\u00e9 leur efficacit\u00e9.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2024\/02\/image-20240218b.png\" alt=\"\" class=\"wp-image-1127\" \/><figcaption class=\"wp-element-caption\">Figure 2 : Le principe du Prompt Engineering<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Une m\u00e9thode amusante consiste \u00e0 promettre une r\u00e9compense financi\u00e8re au mod\u00e8le s&rsquo; il r\u00e9pond correctement. Ajoutez simplement <em>\u00ab\u00a0Si tu r\u00e9ponds correctement, je te donnerai dix euros\u00a0\u00bb<\/em> \u00e0 la fin de l&rsquo;invite. Croyez-le ou non, cela semble fonctionner !<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le <em>prompt engineering<\/em> peut fournir une pr\u00e9cision suffisante dans un certain nombre d&rsquo; applications. Son principal avantage est sa simplicit\u00e9 de mise en oeuvre, qui ne demande pas non plus de ressources de calcul suppl\u00e9mentaires.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mais cette technique se heurte \u00e0 la taille limit\u00e9e des fen\u00eatres de contexte des mod\u00e8les de langage. Elle ne pourra donc pas s&rsquo;appliquer lorque le volume d&rsquo; informations \u00e0 transmettre est trop grand ou trop complexe \u00e0 d\u00e9crire dans le <em>prompt<\/em>. On risque alors de voir le mod\u00e8le inventer les informations manquantes pour aboutir \u00e0 des r\u00e9ponses incorrectes voire insens\u00e9es (<em>hallucinations<\/em>).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. La G\u00e9n\u00e9ration Augment\u00e9e de R\u00e9cup\u00e9ration (RAG)<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo; id\u00e9e vous aura peut-\u00eatre effleur\u00e9 l&rsquo; esprit en lisant le point pr\u00e9c\u00e9dent : pourquoi ne pas combiner la technique du <em>prompt engineering<\/em> avec un engin de recherche indexant les donn\u00e9es compl\u00e9mentaires ? On obtiendrait alors une invite \u00ab\u00a0enrichie\u00a0\u00bb par les \u00e9l\u00e9ments suppl\u00e9mentaires les plus significatifs, de mani\u00e8re automatis\u00e9e et transparente pour l&rsquo;utilisateur&#8230;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">C&rsquo;est ce que promet la G\u00e9n\u00e9ration Augment\u00e9e de R\u00e9cup\u00e9ration (<em>Retrieval Augmented Generation<\/em> ou RAG en Anglais). Voici la mani\u00e8re dont cette technique fonctionne :<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Les informations suppl\u00e9mentaires sont d\u00e9coup\u00e9es en blocs et chacun de ces blocs est index\u00e9 en fonction de son contenu. Ces index sont en g\u00e9n\u00e9ral des vecteurs dont la position dans l&rsquo; espace d\u00e9pend du contenu du bloc (indexation s\u00e9mantique). Vous trouverez <a href=\"https:\/\/www.pinecone.io\/learn\/vector-embeddings-for-developers\/\">ici<\/a> une introduction sur ce sujet;<br><\/li>\n\n\n\n<li>L&rsquo; ensemble des index est plac\u00e9 dans une base de donn\u00e9es vectorielle qui contient \u00e9galement la r\u00e9f\u00e9rence des blocs de texte index\u00e9s;<br><\/li>\n\n\n\n<li>Lorsqu&rsquo; un utilisateur pose une question, le texte de la question est lui aussi index\u00e9 selon le m\u00eame algorithme. Une recherche dans la base de donn\u00e9es vectorielle permettra d&rsquo; identifier les blocs s\u00e9mantiquement proches de l&rsquo; invite sur base de la proximit\u00e9 entre les vecteurs;<br><\/li>\n\n\n\n<li>Ces blocs d&rsquo; informations s\u00e9mantiquement proches sont concat\u00e9n\u00e9s \u00e0 l&rsquo; invite d&rsquo;origine en tant que contexte additionnel;<br><\/li>\n\n\n\n<li>L&rsquo; invite enrichie du contexte additionnel est envoy\u00e9e au mod\u00e8le de langage pour r\u00e9ponse.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2024\/02\/image-20240218c.png\" alt=\"\" class=\"wp-image-1131\" \/><figcaption class=\"wp-element-caption\">Figure 3 : Le principe de la R\u00e9cup\u00e9ration Augment\u00e9e de G\u00e9n\u00e9ration (RAG)<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Cette technique pr\u00e9sente un certain nombre d&rsquo; avantages. Imaginez un ensemble typique d&rsquo; informations propri\u00e9taires g\u00e9n\u00e9r\u00e9es par une entreprise : bases de donn\u00e9es, documents pdf, fichiers excel, flux d&rsquo; actualit\u00e9s, minutes de r\u00e9union&#8230;.. L&rsquo; ensemble de ces donn\u00e9es pourra \u00eatre d\u00e9coup\u00e9, index\u00e9 s\u00e9mantiquement et introduit dans la base de donn\u00e9es vectorielle. Et il est assez ais\u00e9 de continuer \u00e0 enrichir r\u00e9guli\u00e8rement la base de donn\u00e9es vectorielles pour s&rsquo; assurer que les informations restent \u00e0 jour.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le second grand avantage est qu&rsquo; il n&rsquo; est pas n\u00e9cessaire de modifier le mod\u00e8le de langage en tant que tel. Tout d\u00e9pend bien s\u00fbr de l&rsquo; efficacit\u00e9 du m\u00e9canisme d&rsquo; indexation s\u00e9mantique, mais apr\u00e8s 25 ans d&rsquo;existence d&rsquo; engins de recherche sur Internet, ces techniques sont matures.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Qui plus est, une librairie de programmation comme <a href=\"https:\/\/python.langchain.com\/docs\/get_started\/introduction\">Langchain<\/a> contient l&rsquo; ensemble des fonctionnalit\u00e9s n\u00e9cessaires pour orchestrer l&rsquo; interaction avec la base de donn\u00e9es vectorielle et le mod\u00e8le de langage. Cette librairie supporte notamment une centaine de formats de fichier pour nourrir la base de connaissances.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Le prix \u00e0 payer est une plus grande complexit\u00e9 de l&rsquo; architecture informatique. Il faut int\u00e9grer et combiner plusieurs \u00e9l\u00e9ments d&rsquo; infrastructure. Et si une base de donn\u00e9es vectorielle dans le <em>cloud<\/em> comme <a href=\"https:\/\/www.pinecone.io\/\">Pinecone<\/a> est utilis\u00e9e, il faut aussi prendre en compte les risques de confidentialit\u00e9 qui vont avec.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, l&rsquo; enrichichissement du contexte se faisant de mani\u00e8re ponctuelle et cibl\u00e9e, cette technique n&rsquo;est pas appropri\u00e9e si vous visez \u00e0 sp\u00e9cialiser un mod\u00e8le de langage dans un domaine complexe comme la m\u00e9decine ou la finance.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Dans ce cas, il vaut mieux affiner le mod\u00e8le. C&rsquo;est ce que nous allons voir maintenant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. L&rsquo; affinage des mod\u00e8les<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo; affinage d&rsquo;un mod\u00e8le est un processus au cours duquel un mod\u00e8le d\u00e9j\u00e0 pr\u00e9entra\u00een\u00e9 subit un entra\u00eenement suppl\u00e9mentaire sur un ensemble de donn\u00e9es sp\u00e9cifique. Il permet de capitaliser sur la connaissance d\u00e9j\u00e0 int\u00e9gr\u00e9e lors de l&rsquo; entra\u00eenement initial, en renfor\u00e7ant la comp\u00e9tence du mod\u00e8le dans un domaine sp\u00e9cifique en contrepartie d&rsquo; un investissement raisonnable en ressources informatiques.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cette technique est importante car l&rsquo; entra\u00eenement initial d&rsquo;un mod\u00e8le requiert des ressources \u00e9normes, ce qui le rend hors de port\u00e9e de la pluart des organisations.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Il est possible de r\u00e9duire encore plus le besoin en puissance en recourant \u00e0 des techniques avanc\u00e9es d&rsquo; affinage comme LoRA (<em>Low-Rank Adaptation<\/em>). Cette m\u00e9thode introduite d\u00e9but 2023 r\u00e9duit consid\u00e9rablement le nombre de param\u00e8tres \u00e0 entra\u00eener au prix d&rsquo;une faible d\u00e9gradation en qualit\u00e9.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" src=\"https:\/\/artificiellementintelligent.wordpress.com\/wp-content\/uploads\/2024\/02\/image-20240218d.png\" alt=\"\" class=\"wp-image-1133\" \/><figcaption class=\"wp-element-caption\">Figure 4 : Le principe de l&rsquo; affinage complet et optimis\u00e9<\/figcaption><\/figure>\n<\/div>\n\n\n<p class=\"wp-block-paragraph\">Vous devrez disposer d&rsquo;un jeu de donn\u00e9es suffisant pour l&rsquo; entra\u00eenement compl\u00e9mentaire. Si vous cherchez \u00e0 approfondir l&rsquo; expertise du mod\u00e8le dans un domaine sp\u00e9cifique vous pouvez commencer par utiliser tous les documents de r\u00e9f\u00e9rence sur le sujet dont vous disposez.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">De plus, vous pouvez am\u00e9liorer le type de r\u00e9ponse du mod\u00e8le en ajoutant au donn\u00e9es d&rsquo; entra\u00eenement un ensemble d&rsquo; invites (<em>prompts<\/em>) et de leurs r\u00e9ponses. Ce jeu de donn\u00e9es peut avoir \u00e9t\u00e9 g\u00e9n\u00e9r\u00e9 manuellement ou via un mod\u00e8le de langage \u00ab\u00a0haut de gamme\u00a0\u00bb comme GPT4.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Quoi qu&rsquo; il en soit, l&rsquo; affinage reste une technique plus complexe, qui requiert une expertise suffisante en IA pour constituer le jeu de donn\u00e9es, mettre en place l&rsquo; algorithme d&rsquo; entra\u00eenement du mod\u00e8le et ensuite \u00e9valuer les performances du mod\u00e8le modifi\u00e9. Cette approche n\u00e9cessite aussi l&rsquo; acc\u00e8s \u00e0 une puissance de calcul significative.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un point faible de cette approche par rapport \u00e0 la G\u00e9n\u00e9ration Augment\u00e9e de R\u00e9cup\u00e9ration est qu&rsquo; il est nettement plus difficile d&rsquo; introduire de nouvelles informations dans le mod\u00e8le : il faut repasser par une phase d&rsquo; entra\u00eenement avec tous les efforts qu&rsquo; elle implique.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Une autre contrainte de cette approche est que pour pouvoir modifier un mod\u00e8le, il faut disposer de ses param\u00e8tres. Et donc en pratique, seuls les mod\u00e8les <em>open-source<\/em> comme Llama2 ou Mistral se pr\u00eatent \u00e0 ce genre d&rsquo; exercice.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Enfin, il faut noter que des versions d\u00e9j\u00e0 affin\u00e9es de mod\u00e8les de langage <em>open-source<\/em> comme Llama sont disponibles sur Internet, pour certains domaines particuliers comme la programmation. Utiliser un tel mod\u00e8le peut aussi \u00eatre une solution&#8230;<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">4. R\u00e9flexions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">L&rsquo; exploitation avanc\u00e9e de mod\u00e8les de langage d\u00e9crite ci-dessus est en progression rapide. Tant les techniques d&rsquo;affinage \u00ab\u00a0optimis\u00e9es\u00a0\u00bb que les algorithmes de recherche s\u00e9mantiques et les bases de donn\u00e9es vectorielles de la RAG font des progr\u00e8s constants.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Des techniques comme le RAG ou l&rsquo; affinage sont trop lourdes pour une utilisation priv\u00e9e, mais constituent une solution int\u00e9ressante pour des entreprises. La disponibilit\u00e9 de mod\u00e8les <em>open-source<\/em> combin\u00e9e \u00e0 ces techniques offre une grande souplesse de d\u00e9ploiement aux organisations d\u00e9sireuses d&rsquo; exploiter les mod\u00e8les de langage au mieux de leurs capacit\u00e9s.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Et la possibilit\u00e9 de faire fonctionner l&rsquo; ensemble \u00ab\u00a0en interne\u00a0\u00bb offre une r\u00e9ponse \u00e9l\u00e9gante aux soucis de confidentialit\u00e9 qui freinent de nombreuses organisations.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Notes et r\u00e9f\u00e9rences<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><em>Full Fine-Tuning, PEFT, Prompt Engineering and RAG : Which One is Right for You<\/em> ?, par Najeeb Nawani pour Deci.ai, le 20 septembre 2023 : <a href=\"https:\/\/deci.ai\/blog\/fine-tuning-peft-prompt-engineering-and-rag-which-one-is-right-for-you\/\">https:\/\/deci.ai\/blog\/fine-tuning-peft-prompt-engineering-and-rag-which-one-is-right-for-you\/<\/a><br><\/li>\n\n\n\n<li><em>Qu&rsquo;est-ce que la g\u00e9n\u00e9ration augment\u00e9e de r\u00e9cup\u00e9ration (RAG, retrieval-augmented generation)\u00a0?<\/em>, par alan Zichik pour Oracle, le 19 septembre 2023<em> : <\/em><a href=\"https:\/\/www.oracle.com\/fr\/artificial-intelligence\/generative-ai\/retrieval-augmented-generation-rag\/\">https:\/\/www.oracle.com\/fr\/artificial-intelligence\/generative-ai\/retrieval-augmented-generation-rag\/<\/a><br><\/li>\n\n\n\n<li><em>LLM Explained : The LLM Training Landscape<\/em>, par Crystal Liu sur Medium, le 7 ao\u00fbt 2023 : <a href=\"https:\/\/liu-gendary.medium.com\/llm-explained-the-llm-training-landscape-82c803495caa\">https:\/\/liu-gendary.medium.com\/llm-explained-the-llm-training-landscape-82c803495caa<\/a><br><\/li>\n\n\n\n<li><em>Making LLMs Work For Your Use-Case &#8211; Fine-Tuning vs. RAG vs. Long Context Length vs. Prompting<\/em>, tweet de Bindu Reddy : <a href=\"https:\/\/twitter.com\/bindureddy\/status\/1712257709918318898\">https:\/\/twitter.com\/bindureddy\/status\/1712257709918318898<\/a><br><\/li>\n\n\n\n<li><em>The Art of Fine-Tuning Large Language Models<\/em>, tweet de Bindu Reddy :  <a href=\"https:\/\/twitter.com\/bindureddy\/status\/1699275289493430699\">https:\/\/twitter.com\/bindureddy\/status\/1699275289493430699<\/a><br><\/li>\n\n\n\n<li><em>Vector Embeddings for Developers: The Basics<\/em>, par Roie Schwaber-Cohen sur le site de Pinecone.io, le 30 juin 2023 : <a href=\"https:\/\/www.pinecone.io\/learn\/vector-embeddings-for-developers\/\">https:\/\/www.pinecone.io\/learn\/vector-embeddings-for-developers\/<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Le march\u00e9 des mod\u00e8les de langage actuels pr\u00e9sente des lacunes pour r\u00e9pondre \u00e0 des besoins sp\u00e9cifiques d&rsquo;entreprises. Pour pallier cela, des techniques d&rsquo;enrichissement telles que le prompt engineering, la R\u00e9cup\u00e9ration Augment\u00e9e de G\u00e9n\u00e9ration (RAG) et l&rsquo;affinage des mod\u00e8les sont propos\u00e9es. Ces approches offrent une flexibilit\u00e9 et des performances accrues pour les organisations.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[12],"tags":[],"class_list":["post-1122","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\/1122","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=1122"}],"version-history":[{"count":0,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/posts\/1122\/revisions"}],"wp:attachment":[{"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/media?parent=1122"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/categories?post=1122"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/artificiellementintelligent.eu\/index.php\/wp-json\/wp\/v2\/tags?post=1122"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}