{"id":2242,"date":"2026-04-13T10:04:46","date_gmt":"2026-04-13T08:04:46","guid":{"rendered":"https:\/\/askem.eu\/?p=2242"},"modified":"2026-04-13T10:04:52","modified_gmt":"2026-04-13T08:04:52","slug":"outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production","status":"publish","type":"post","link":"https:\/\/askem.eu\/en\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/","title":{"rendered":"Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production"},"content":{"rendered":"<h2 class=\"wp-block-heading\">Outlines&nbsp;: forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production<\/h2>\n\n\n\n<p>Un LLM qui r\u00e9pond en langage naturel, c&rsquo;est impressionnant. Un LLM qui r\u00e9pond en JSON valide, conforme \u00e0 un sch\u00e9ma pr\u00e9cis, \u00e0 chaque appel, sans exception, c&rsquo;est exploitable en production. C&rsquo;est exactement ce que permet <strong><a href=\"https:\/\/github.com\/dottxt-ai\/outlines\">Outlines<\/a><\/strong>, biblioth\u00e8que open source (licence Apache 2.0) de g\u00e9n\u00e9ration structur\u00e9e qui contraint la sortie d&rsquo;un mod\u00e8le de langage au niveau m\u00eame du processus de sampling des tokens.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Le probl\u00e8me&nbsp;: des sorties impr\u00e9visibles<\/h3>\n\n\n\n<p>Quand on int\u00e8gre un LLM dans un pipeline automatis\u00e9&nbsp;: extraction d&rsquo;entit\u00e9s, classification, alimentation d&rsquo;une base de donn\u00e9es, appel d&rsquo;outils via MCP, on attend une sortie structur\u00e9e&nbsp;: du JSON, un choix parmi N options, un entier, une date. Or, m\u00eame les meilleurs mod\u00e8les produisent r\u00e9guli\u00e8rement des sorties malform\u00e9es&nbsp;: accolades manquantes, champs invent\u00e9s, types incorrects, texte parasite avant ou apr\u00e8s le JSON. Les solutions classiques (prompts \u00ab\u00a0r\u00e9ponds en JSON\u00a0\u00bb, post-processing regex, retry loops) sont fragiles et co\u00fbteuses en tokens.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">La solution&nbsp;: contraindre le sampling, pas le prompt<\/h3>\n\n\n\n<p>Outlines intervient \u00e0 un niveau fondamental&nbsp;: au lieu de demander poliment au mod\u00e8le de produire du JSON, il <strong>interdit math\u00e9matiquement<\/strong> la g\u00e9n\u00e9ration de tokens qui violeraient le sch\u00e9ma cible. \u00c0 chaque \u00e9tape de g\u00e9n\u00e9ration, un masque logit est appliqu\u00e9 pour ne conserver que les tokens valides selon la grammaire ou le sch\u00e9ma JSON fourni. Le r\u00e9sultat est garanti conforme, pas \u00ab\u00a0presque toujours\u00a0\u00bb, mais <strong>toujours<\/strong>.<\/p>\n\n\n\n<p>La biblioth\u00e8que supporte plusieurs modes de contrainte&nbsp;:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>JSON Schema<\/strong>&nbsp;: on fournit un sch\u00e9ma JSON (ou un mod\u00e8le Pydantic) et chaque sortie est garantie conforme. Types, champs requis, enums, patterns regex dans les valeurs&nbsp;: tout est respect\u00e9.<\/li>\n\n\n\n<li><strong>Expressions r\u00e9guli\u00e8res<\/strong>&nbsp;: pour des sorties simples (date, email, code postal, identifiant), on d\u00e9finit un pattern regex et la sortie le respecte caract\u00e8re par caract\u00e8re.<\/li>\n\n\n\n<li><strong>Grammaires CFG<\/strong>&nbsp;: pour des formats complexes (SQL, code Python, XML), on peut fournir une grammaire context-free compl\u00e8te.<\/li>\n\n\n\n<li><strong>Choix multiples<\/strong>&nbsp;: le mod\u00e8le est contraint \u00e0 r\u00e9pondre exactement l&rsquo;une des options fournies, utile pour la classification.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Int\u00e9gration avec la stack open source<\/h3>\n\n\n\n<p>Outlines s&rsquo;int\u00e8gre nativement avec les briques d\u00e9j\u00e0 couvertes sur ce site. Avec <strong><a href=\"https:\/\/askem.eu\/en\/2026\/04\/07\/vllm-servir-des-llm-a-haute-performance-en-production\/\" type=\"post\" id=\"2198\">vLLM<\/a><\/strong>, la g\u00e9n\u00e9ration structur\u00e9e est disponible directement via le param\u00e8tre <code>guided_json<\/code> ou <code>guided_regex<\/code> de l&rsquo;API compatible OpenAI, vLLM utilise Outlines en interne pour le guided decoding. Avec <strong><a href=\"https:\/\/askem.eu\/en\/2026\/03\/29\/ollama-executer-des-llm-en-local\/\" type=\"post\" id=\"2141\">Ollama<\/a><\/strong>, le support du format JSON est disponible via le param\u00e8tre <code>format<\/code> depuis la version 0.5. Pour des contraintes plus fines (regex, grammaires), on utilise Outlines directement avec <code>transformers<\/code> ou <code>llama-cpp-python<\/code>.<\/p>\n\n\n\n<p>L&rsquo;int\u00e9gration dans un pipeline <strong><a href=\"https:\/\/askem.eu\/en\/2026\/03\/30\/n8n-automatiser-ses-workflows\/\" type=\"post\" id=\"2144\">n8n<\/a><\/strong> ou <strong><a href=\"https:\/\/askem.eu\/en\/2026\/04\/09\/langgraph-construire-des-agents-ia-autonomes-avec-orchestration-memoire-et-outils\/\" type=\"post\" id=\"2212\">LangGraph<\/a><\/strong> est directe&nbsp;: l&rsquo;agent appelle le endpoint vLLM avec un sch\u00e9ma JSON, re\u00e7oit une r\u00e9ponse garantie parseable, et la transmet \u00e0 l&rsquo;\u00e9tape suivante sans try\/catch ni retry. Le co\u00fbt en fiabilit\u00e9 passe de \u00ab\u00a090&nbsp;% du temps \u00e7a marche\u00a0\u00bb \u00e0 \u00ab\u00a0100&nbsp;% garanti\u00a0\u00bb.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Exemple concret&nbsp;: extraction structur\u00e9e depuis un document<\/h3>\n\n\n\n<p>Imaginons un pipeline RAG qui indexe des d\u00e9lib\u00e9rations de conseil municipal dans <strong><a href=\"https:\/\/askem.eu\/en\/2026\/04\/01\/qdrant-base-vectorielle-open-source-pour-le-rag-et-la-recherche-semantique\/\" type=\"post\" id=\"2159\">Qdrant<\/a><\/strong>. Pour chaque document ing\u00e9r\u00e9 via <strong><a href=\"https:\/\/askem.eu\/en\/2026\/04\/10\/docling-convertir-pdf-docx-et-images-en-donnees-structurees-pour-ses-pipelines-rag\/\" type=\"post\" id=\"2216\">Docling<\/a><\/strong>, un LLM local extrait les m\u00e9tadonn\u00e9es structur\u00e9es&nbsp;: date de la d\u00e9lib\u00e9ration, num\u00e9ro, th\u00e8me, d\u00e9cision (adopt\u00e9e\/rejet\u00e9e\/ajourn\u00e9e), montant budg\u00e9taire \u00e9ventuel. Sans Outlines, il faut parser la sortie texte du LLM avec des heuristiques fragiles. Avec Outlines et un sch\u00e9ma Pydantic&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>from pydantic import BaseModel\nfrom enum import Enum\n\nclass Decision(str, Enum):\n    adoptee = \"adopt\u00e9e\"\n    rejetee = \"rejet\u00e9e\"\n    ajournee = \"ajourn\u00e9e\"\n\nclass Deliberation(BaseModel):\n    date: str          # format YYYY-MM-DD\n    numero: str\n    theme: str\n    decision: Decision\n    montant_euros: float | None<\/code><\/pre>\n\n\n\n<p>Chaque appel produit un JSON valide, typ\u00e9, directement injectable dans PostgreSQL ou dans les m\u00e9tadonn\u00e9es Qdrant. Z\u00e9ro post-processing, z\u00e9ro erreur de parsing.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Performance et limites<\/h3>\n\n\n\n<p>Le surco\u00fbt de la g\u00e9n\u00e9ration structur\u00e9e est minime&nbsp;: le masque logit est pr\u00e9calcul\u00e9 sous forme d&rsquo;un automate fini (index FSM), ce qui rend l&rsquo;application du masque quasi instantan\u00e9e \u00e0 chaque \u00e9tape. Sur vLLM, l&rsquo;impact sur le d\u00e9bit est de l&rsquo;ordre de 1 \u00e0 5&nbsp;%, n\u00e9gligeable face au gain en fiabilit\u00e9.<\/p>\n\n\n\n<p>Les limites sont connues&nbsp;: la contrainte structurelle ne garantit pas la justesse s\u00e9mantique (le mod\u00e8le peut produire un JSON valide avec des valeurs absurdes), et les sch\u00e9mas tr\u00e8s complexes avec de nombreuses propri\u00e9t\u00e9s optionnelles peuvent ralentir la compilation de l&rsquo;index. Pour les cas les plus exigeants, combiner Outlines avec <strong>Langfuse<\/strong> pour le monitoring et un validateur m\u00e9tier en aval reste la bonne pratique.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">D\u00e9ploiement rapide<\/h3>\n\n\n\n<p>En quelques lignes, on ajoute la g\u00e9n\u00e9ration structur\u00e9e \u00e0 un mod\u00e8le servi par vLLM&nbsp;:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Lancer vLLM avec guided decoding activ\u00e9 (par d\u00e9faut)\ndocker run --gpus all -p 8000:8000 \\\n  vllm\/vllm-openai:latest \\\n  --model mistralai\/Mistral-7B-Instruct-v0.3\n\n# Appel API avec contrainte JSON Schema\ncurl http:\/\/localhost:8000\/v1\/chat\/completions \\\n  -H \"Content-Type: application\/json\" \\\n  -d '{\n    \"model\": \"mistralai\/Mistral-7B-Instruct-v0.3\",\n    \"messages\": &#91;{\"role\": \"user\", \"content\": \"Extrais les m\u00e9tadonn\u00e9es de cette d\u00e9lib\u00e9ration&nbsp;: ...\"}],\n    \"guided_json\": {\n      \"type\": \"object\",\n      \"properties\": {\n        \"date\": {\"type\": \"string\", \"pattern\": \"^\\\\d{4}-\\\\d{2}-\\\\d{2}$\"},\n        \"numero\": {\"type\": \"string\"},\n        \"theme\": {\"type\": \"string\"},\n        \"decision\": {\"type\": \"string\", \"enum\": &#91;\"adopt\u00e9e\", \"rejet\u00e9e\", \"ajourn\u00e9e\"]},\n        \"montant_euros\": {\"type\": \"number\"}\n      },\n      \"required\": &#91;\"date\", \"numero\", \"theme\", \"decision\"]\n    }\n  }'<\/code><\/pre>\n\n\n\n<p>La r\u00e9ponse est un JSON garanti conforme au sch\u00e9ma, pr\u00eat pour l&rsquo;\u00e9tape suivante du pipeline.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">En r\u00e9sum\u00e9<\/h3>\n\n\n\n<p>Outlines transforme un LLM de \u00ab\u00a0g\u00e9n\u00e9rateur de texte impr\u00e9visible\u00a0\u00bb en \u00ab\u00a0fonction typ\u00e9e fiable\u00a0\u00bb. C&rsquo;est la brique qui manquait entre le serving (vLLM, Ollama) et l&rsquo;orchestration (n8n, LangGraph) pour rendre les pipelines IA r\u00e9ellement robustes en production. Combin\u00e9 avec les outils d\u00e9j\u00e0 d\u00e9ploy\u00e9s&nbsp;: Docling pour l&rsquo;ingestion, pgvector ou Qdrant pour le stockage vectoriel, Langfuse pour l&rsquo;observabilit\u00e9, il compl\u00e8te une stack IA open source o\u00f9 chaque maillon est contr\u00f4l\u00e9 et fiable.<\/p>","protected":false},"excerpt":{"rendered":"<p>Outlines&nbsp;: forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production Un LLM qui r\u00e9pond en langage naturel, c&rsquo;est impressionnant. Un LLM qui r\u00e9pond en JSON valide, conforme \u00e0 un sch\u00e9ma pr\u00e9cis, \u00e0 chaque appel, sans exception, c&rsquo;est exploitable en production. C&rsquo;est exactement ce que permet Outlines, biblioth\u00e8que open source (licence Apache 2.0) [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2243,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ocean_post_layout":"","ocean_both_sidebars_style":"","ocean_both_sidebars_content_width":0,"ocean_both_sidebars_sidebars_width":0,"ocean_sidebar":"","ocean_second_sidebar":"","ocean_disable_margins":"enable","ocean_add_body_class":"","ocean_shortcode_before_top_bar":"","ocean_shortcode_after_top_bar":"","ocean_shortcode_before_header":"","ocean_shortcode_after_header":"","ocean_has_shortcode":"","ocean_shortcode_after_title":"","ocean_shortcode_before_footer_widgets":"","ocean_shortcode_after_footer_widgets":"","ocean_shortcode_before_footer_bottom":"","ocean_shortcode_after_footer_bottom":"","ocean_display_top_bar":"default","ocean_display_header":"default","ocean_header_style":"","ocean_center_header_left_menu":"","ocean_custom_header_template":"","ocean_custom_logo":0,"ocean_custom_retina_logo":0,"ocean_custom_logo_max_width":0,"ocean_custom_logo_tablet_max_width":0,"ocean_custom_logo_mobile_max_width":0,"ocean_custom_logo_max_height":0,"ocean_custom_logo_tablet_max_height":0,"ocean_custom_logo_mobile_max_height":0,"ocean_header_custom_menu":"","ocean_menu_typo_font_family":"","ocean_menu_typo_font_subset":"","ocean_menu_typo_font_size":0,"ocean_menu_typo_font_size_tablet":0,"ocean_menu_typo_font_size_mobile":0,"ocean_menu_typo_font_size_unit":"px","ocean_menu_typo_font_weight":"","ocean_menu_typo_font_weight_tablet":"","ocean_menu_typo_font_weight_mobile":"","ocean_menu_typo_transform":"","ocean_menu_typo_transform_tablet":"","ocean_menu_typo_transform_mobile":"","ocean_menu_typo_line_height":0,"ocean_menu_typo_line_height_tablet":0,"ocean_menu_typo_line_height_mobile":0,"ocean_menu_typo_line_height_unit":"","ocean_menu_typo_spacing":0,"ocean_menu_typo_spacing_tablet":0,"ocean_menu_typo_spacing_mobile":0,"ocean_menu_typo_spacing_unit":"","ocean_menu_link_color":"","ocean_menu_link_color_hover":"","ocean_menu_link_color_active":"","ocean_menu_link_background":"","ocean_menu_link_hover_background":"","ocean_menu_link_active_background":"","ocean_menu_social_links_bg":"","ocean_menu_social_hover_links_bg":"","ocean_menu_social_links_color":"","ocean_menu_social_hover_links_color":"","ocean_disable_title":"default","ocean_disable_heading":"default","ocean_post_title":"","ocean_post_subheading":"","ocean_post_title_style":"","ocean_post_title_background_color":"","ocean_post_title_background":0,"ocean_post_title_bg_image_position":"","ocean_post_title_bg_image_attachment":"","ocean_post_title_bg_image_repeat":"","ocean_post_title_bg_image_size":"","ocean_post_title_height":0,"ocean_post_title_bg_overlay":0.5,"ocean_post_title_bg_overlay_color":"","ocean_disable_breadcrumbs":"default","ocean_breadcrumbs_color":"","ocean_breadcrumbs_separator_color":"","ocean_breadcrumbs_links_color":"","ocean_breadcrumbs_links_hover_color":"","ocean_display_footer_widgets":"default","ocean_display_footer_bottom":"default","ocean_custom_footer_template":"","osh_disable_topbar_sticky":"default","osh_disable_header_sticky":"default","osh_sticky_header_style":"default","osh_sticky_header_effect":"","osh_custom_sticky_logo":0,"osh_custom_retina_sticky_logo":0,"osh_custom_sticky_logo_height":0,"osh_background_color":"","osh_links_color":"","osh_links_hover_color":"","osh_links_active_color":"","osh_links_bg_color":"","osh_links_hover_bg_color":"","osh_links_active_bg_color":"","osh_menu_social_links_color":"","osh_menu_social_hover_links_color":"","ocean_post_oembed":"","ocean_post_self_hosted_media":"","ocean_post_video_embed":"","ocean_link_format":"","ocean_link_format_target":"self","ocean_quote_format":"","ocean_quote_format_link":"post","ocean_gallery_link_images":"on","ocean_gallery_id":[],"footnotes":""},"categories":[16],"tags":[],"class_list":["post-2242","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ai","entry","has-media"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production - askem<\/title>\n<meta name=\"description\" content=\"ASKEM BUREAU D&#039;\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/askem.eu\/en\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production - askem\" \/>\n<meta property=\"og:description\" content=\"ASKEM BUREAU D&#039;\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/askem.eu\/en\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/\" \/>\n<meta property=\"og:site_name\" content=\"askem\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/fb.me\/askem.eu\" \/>\n<meta property=\"article:published_time\" content=\"2026-04-13T08:04:46+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-04-13T08:04:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-12.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"800\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"askemadmin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"askemadmin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/\"},\"author\":{\"name\":\"askemadmin\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/person\\\/8bbee74ab9a977d56bf4826662e9d2e9\"},\"headline\":\"Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production\",\"datePublished\":\"2026-04-13T08:04:46+00:00\",\"dateModified\":\"2026-04-13T08:04:52+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/\"},\"wordCount\":881,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/04\\/sujet-askem-2026-04-12.png\",\"articleSection\":[\"AI\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/\",\"url\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/\",\"name\":\"Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production - askem\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/04\\/sujet-askem-2026-04-12.png\",\"datePublished\":\"2026-04-13T08:04:46+00:00\",\"dateModified\":\"2026-04-13T08:04:52+00:00\",\"description\":\"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/#primaryimage\",\"url\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/04\\/sujet-askem-2026-04-12.png\",\"contentUrl\":\"https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2026\\/04\\/sujet-askem-2026-04-12.png\",\"width\":1200,\"height\":800},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/askem.eu\\\/2026\\\/04\\\/13\\\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\\\/\\\/askem.eu\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#website\",\"url\":\"https:\\\/\\\/askem.eu\\\/\",\"name\":\"askem\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/askem.eu\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#organization\",\"name\":\"Askem\",\"url\":\"https:\\\/\\\/askem.eu\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\/\\/mlpi0fxo3sth.i.optimole.com\\/cb:3obA.c61\\/w:760\\/h:480\\/q:mauto\\/f:best\\/https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2020\\/10\\/logoGalaxieAskem3.png\",\"contentUrl\":\"https:\\/\\/mlpi0fxo3sth.i.optimole.com\\/cb:3obA.c61\\/w:760\\/h:480\\/q:mauto\\/f:best\\/https:\\/\\/askem.eu\\/wp-content\\/uploads\\/2020\\/10\\/logoGalaxieAskem3.png\",\"width\":760,\"height\":480,\"caption\":\"Askem\"},\"image\":{\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/fb.me\\\/askem.eu\",\"https:\\\/\\\/linkedin.com\\\/company\\\/askem-eu\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/askem.eu\\\/#\\\/schema\\\/person\\\/8bbee74ab9a977d56bf4826662e9d2e9\",\"name\":\"askemadmin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g\",\"caption\":\"askemadmin\"},\"sameAs\":[\"https:\\\/\\\/askem.eu\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production - askem","description":"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/askem.eu\/en\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/","og_locale":"en_US","og_type":"article","og_title":"Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production - askem","og_description":"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.","og_url":"https:\/\/askem.eu\/en\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/","og_site_name":"askem","article_publisher":"https:\/\/fb.me\/askem.eu","article_published_time":"2026-04-13T08:04:46+00:00","article_modified_time":"2026-04-13T08:04:52+00:00","og_image":[{"width":1200,"height":800,"url":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-12.png","type":"image\/png"}],"author":"askemadmin","twitter_card":"summary_large_image","twitter_misc":{"Written by":"askemadmin","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/#article","isPartOf":{"@id":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/"},"author":{"name":"askemadmin","@id":"https:\/\/askem.eu\/#\/schema\/person\/8bbee74ab9a977d56bf4826662e9d2e9"},"headline":"Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production","datePublished":"2026-04-13T08:04:46+00:00","dateModified":"2026-04-13T08:04:52+00:00","mainEntityOfPage":{"@id":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/"},"wordCount":881,"commentCount":0,"publisher":{"@id":"https:\/\/askem.eu\/#organization"},"image":{"@id":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/#primaryimage"},"thumbnailUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-12.png","articleSection":["AI"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/","url":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/","name":"Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production - askem","isPartOf":{"@id":"https:\/\/askem.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/#primaryimage"},"image":{"@id":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/#primaryimage"},"thumbnailUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-12.png","datePublished":"2026-04-13T08:04:46+00:00","dateModified":"2026-04-13T08:04:52+00:00","description":"ASKEM BUREAU D'\u00c9TUDES ET DE FORMATION NUM\u00c9RIQUE. Nous vous assistons dans la transformation num\u00e9rique de vos outils, services et organisations tout en pla\u00e7ant l\u2019humain au c\u0153ur de notre d\u00e9marche d\u2019accompagnement.","breadcrumb":{"@id":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/#primaryimage","url":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-12.png","contentUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:auto\/h:auto\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2026\/04\/sujet-askem-2026-04-12.png","width":1200,"height":800},{"@type":"BreadcrumbList","@id":"https:\/\/askem.eu\/2026\/04\/13\/outlines-forcer-les-llm-open-source-a-produire-du-json-structure-en-production\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/askem.eu\/"},{"@type":"ListItem","position":2,"name":"Outlines : forcer les LLM open source \u00e0 produire du JSON structur\u00e9 en production"}]},{"@type":"WebSite","@id":"https:\/\/askem.eu\/#website","url":"https:\/\/askem.eu\/","name":"askem","description":"","publisher":{"@id":"https:\/\/askem.eu\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/askem.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/askem.eu\/#organization","name":"Askem","url":"https:\/\/askem.eu\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/askem.eu\/#\/schema\/logo\/image\/","url":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:760\/h:480\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2020\/10\/logoGalaxieAskem3.png","contentUrl":"https:\/\/mlpi0fxo3sth.i.optimole.com\/cb:3obA.c61\/w:760\/h:480\/q:mauto\/f:best\/https:\/\/askem.eu\/wp-content\/uploads\/2020\/10\/logoGalaxieAskem3.png","width":760,"height":480,"caption":"Askem"},"image":{"@id":"https:\/\/askem.eu\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/fb.me\/askem.eu","https:\/\/linkedin.com\/company\/askem-eu"]},{"@type":"Person","@id":"https:\/\/askem.eu\/#\/schema\/person\/8bbee74ab9a977d56bf4826662e9d2e9","name":"askemadmin","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/a202f744ee3a4b6fdbe2ceb57fd84c72559337791a276662270d8d2fb7842e3f?s=96&d=mm&r=g","caption":"askemadmin"},"sameAs":["https:\/\/askem.eu"]}]}},"_links":{"self":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts\/2242","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/comments?post=2242"}],"version-history":[{"count":2,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts\/2242\/revisions"}],"predecessor-version":[{"id":2245,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/posts\/2242\/revisions\/2245"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/media\/2243"}],"wp:attachment":[{"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/media?parent=2242"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/categories?post=2242"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/askem.eu\/en\/wp-json\/wp\/v2\/tags?post=2242"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}