From e4f4f0bab2a09694eae9a2914a2ddf25897c4a54 Mon Sep 17 00:00:00 2001 From: jsboige Date: Thu, 8 Oct 2026 11:47:27 +0200 Subject: [PATCH] fix(readme,#18911): GenAI/Plateformes-Conversationnelles -- 59 liens .ipynb -> .html (defaut #13025) --- .../00-Tour-Plateforme/README.md | 2 +- .../03-Functional/03-1-Chatbots/README.md | 14 ++++---- .../03-Functional/03-2-Forms/README.md | 4 +-- .../03-3-RAG-et-Embeddings/README.md | 4 +-- .../03-Functional/03-4-MCP-Server/README.md | 8 ++--- .../03-5-Multi-Provider/README.md | 6 ++-- .../03-Functional/README.md | 36 +++++++++---------- .../05-Playwright-AI-Engine/README.md | 4 +-- .../06-Securite-et-Methode/README.md | 2 +- .../AI-Engine-WordPress/README.md | 36 +++++++++---------- .../Plateformes-Conversationnelles/README.md | 2 +- 11 files changed, 59 insertions(+), 59 deletions(-) diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/00-Tour-Plateforme/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/00-Tour-Plateforme/README.md index aa85d796e3c..db4c36336e4 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/00-Tour-Plateforme/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/00-Tour-Plateforme/README.md @@ -241,7 +241,7 @@ de l'instance vivent dans un `.env` **non commité** ; seuls les - Pour piloter la même plateforme **par l'API** plutôt qu'à la souris, suivre la série **AI Engine par son API**, à partir de - [`presenter-ai-engine-par-son-api.ipynb`](../03-Functional/03-5-Multi-Provider/presenter-ai-engine-par-son-api.ipynb). + [`presenter-ai-engine-par-son-api.ipynb`](../03-Functional/03-5-Multi-Provider/presenter-ai-engine-par-son-api.html). - Pour monter l'instance jetable chez soi et rejouer ce tour : [`../instance-jetable/README.md`](../instance-jetable/README.md). - Pour la même visite côté Open WebUI, voir le diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/README.md index a3ee4292c81..74fb6176ae9 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-1-Chatbots/README.md @@ -6,10 +6,10 @@ Le chatbot vu par l'API : c'est un document JSON qu'on lit, écrit et interroge ## Notebooks -- [`configurer-chatbots-par-l-api.ipynb`](configurer-chatbots-par-l-api.ipynb) — le chatbot est un document JSON -- [`donner-une-memoire-ephemere-au-chatbot-par-l-api.ipynb`](donner-une-memoire-ephemere-au-chatbot-par-l-api.ipynb) — les fichiers du chatbot, une mémoire éphémère -- [`parler-au-chatbot-en-visiteur-par-l-api.ipynb`](parler-au-chatbot-en-visiteur-par-l-api.ipynb) — la face navigateur de l'API -- [`joindre-un-fichier-au-chatbot-par-l-api.ipynb`](joindre-un-fichier-au-chatbot-par-l-api.ipynb) — ignoré, annoté, ou vraiment vu -- [`obtenir-des-donnees-structurees-par-l-api.ipynb`](obtenir-des-donnees-structurees-par-l-api.ipynb) — la case json, le fallback sans env et le null silencieux -- [`interroger-lassistant-de-lediteur-par-l-api.ipynb`](interroger-lassistant-de-lediteur-par-l-api.ipynb) — la quatrième face du plugin -- [`mesurer-la-derive-dun-copilot.ipynb`](mesurer-la-derive-dun-copilot.ipynb) — le gate par étape ne protège pas la chaîne +- [`configurer-chatbots-par-l-api.ipynb`](configurer-chatbots-par-l-api.html) — le chatbot est un document JSON +- [`donner-une-memoire-ephemere-au-chatbot-par-l-api.ipynb`](donner-une-memoire-ephemere-au-chatbot-par-l-api.html) — les fichiers du chatbot, une mémoire éphémère +- [`parler-au-chatbot-en-visiteur-par-l-api.ipynb`](parler-au-chatbot-en-visiteur-par-l-api.html) — la face navigateur de l'API +- [`joindre-un-fichier-au-chatbot-par-l-api.ipynb`](joindre-un-fichier-au-chatbot-par-l-api.html) — ignoré, annoté, ou vraiment vu +- [`obtenir-des-donnees-structurees-par-l-api.ipynb`](obtenir-des-donnees-structurees-par-l-api.html) — la case json, le fallback sans env et le null silencieux +- [`interroger-lassistant-de-lediteur-par-l-api.ipynb`](interroger-lassistant-de-lediteur-par-l-api.html) — la quatrième face du plugin +- [`mesurer-la-derive-dun-copilot.ipynb`](mesurer-la-derive-dun-copilot.html) — le gate par étape ne protège pas la chaîne diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-2-Forms/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-2-Forms/README.md index 28708d9d955..64b282a5ee7 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-2-Forms/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-2-Forms/README.md @@ -6,5 +6,5 @@ Le formulaire conditionnel vu par l'API : c'est un contenu WordPress, pas une ta ## Notebooks -- [`administrer-les-formulaires-par-l-api.ipynb`](administrer-les-formulaires-par-l-api.ipynb) — le formulaire est un contenu, pas une table -- [`auditer-un-formulaire-conditionnel.ipynb`](auditer-un-formulaire-conditionnel.ipynb) — l'état que vous ne voyez pas +- [`administrer-les-formulaires-par-l-api.ipynb`](administrer-les-formulaires-par-l-api.html) — le formulaire est un contenu, pas une table +- [`auditer-un-formulaire-conditionnel.ipynb`](auditer-un-formulaire-conditionnel.html) — l'état que vous ne voyez pas diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-3-RAG-et-Embeddings/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-3-RAG-et-Embeddings/README.md index 699dde8bb1b..7a82d4f6368 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-3-RAG-et-Embeddings/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-3-RAG-et-Embeddings/README.md @@ -6,7 +6,7 @@ Cinq vector stores supportés (Chroma, Qdrant, Pinecone, OpenAI Vector Store, ** ## Notebooks -- [`ingestion-corpus-long-rag.ipynb`](ingestion-corpus-long-rag.ipynb) — ingestion d'un corpus long structuré -- [`separer-les-environnements-de-vecteurs.ipynb`](separer-les-environnements-de-vecteurs.ipynb) — isoler les vector stores par environnement +- [`ingestion-corpus-long-rag.ipynb`](ingestion-corpus-long-rag.html) — ingestion d'un corpus long structuré +- [`separer-les-environnements-de-vecteurs.ipynb`](separer-les-environnements-de-vecteurs.html) — isoler les vector stores par environnement → détail et comparaison avec la pile RAG native d'Open WebUI dans la [section dédiée du comparatif](../../02-Comparatif/comparatif-owui-vs-ai-engine.md#rag-et-embeddings). diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-4-MCP-Server/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-4-MCP-Server/README.md index 1f1babc2461..83fef3a4da7 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-4-MCP-Server/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-4-MCP-Server/README.md @@ -6,9 +6,9 @@ AI-Engine transforme WordPress en **serveur MCP** : des outils permission-aware ## Notebooks -- [`auditer-un-serveur-mcp.ipynb`](auditer-un-serveur-mcp.ipynb) — auditer un serveur MCP qu'on n'a pas écrit -- [`autour-du-consent-oauth-du-serveur-mcp.ipynb`](autour-du-consent-oauth-du-serveur-mcp.ipynb) — OAuth de bout en bout -- [`consommer-vs-exposer-le-mcp.ipynb`](consommer-vs-exposer-le-mcp.ipynb) — les deux sens du fil -- [`piloter-wordpress-par-mcp.ipynb`](piloter-wordpress-par-mcp.ipynb) — le serveur, pas l'API d'administration +- [`auditer-un-serveur-mcp.ipynb`](auditer-un-serveur-mcp.html) — auditer un serveur MCP qu'on n'a pas écrit +- [`autour-du-consent-oauth-du-serveur-mcp.ipynb`](autour-du-consent-oauth-du-serveur-mcp.html) — OAuth de bout en bout +- [`consommer-vs-exposer-le-mcp.ipynb`](consommer-vs-exposer-le-mcp.html) — les deux sens du fil +- [`piloter-wordpress-par-mcp.ipynb`](piloter-wordpress-par-mcp.html) — le serveur, pas l'API d'administration → terrain de comparaison avec les **Tools / MCP** d'Open WebUI dans la [section dédiée du comparatif](../../02-Comparatif/comparatif-owui-vs-ai-engine.md#mcp-server-natif). diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-5-Multi-Provider/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-5-Multi-Provider/README.md index 825934f5f2d..1bb29f9ff93 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-5-Multi-Provider/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/03-5-Multi-Provider/README.md @@ -6,6 +6,6 @@ Neuf providers distants + un connecteur auto-hébergé : la matrice environnemen ## Notebooks -- [`brancher-plusieurs-providers-par-l-api.ipynb`](brancher-plusieurs-providers-par-l-api.ipynb) — environnements et matrice d'usages -- [`eval-choisir-son-modele.ipynb`](eval-choisir-son-modele.ipynb) — une mini-évaluation reproductible -- [`presenter-ai-engine-par-son-api.ipynb`](presenter-ai-engine-par-son-api.ipynb) — le tour de l'API sur l'instance jetable Maison Valmont +- [`brancher-plusieurs-providers-par-l-api.ipynb`](brancher-plusieurs-providers-par-l-api.html) — environnements et matrice d'usages +- [`eval-choisir-son-modele.ipynb`](eval-choisir-son-modele.html) — une mini-évaluation reproductible +- [`presenter-ai-engine-par-son-api.ipynb`](presenter-ai-engine-par-son-api.html) — le tour de l'API sur l'instance jetable Maison Valmont diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/README.md index 9cc91727cd9..6c2e9622f1d 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/03-Functional/README.md @@ -24,30 +24,30 @@ précédent, et des **compagnons autonomes**, exploitables seuls. Onze notebooks, dans l'ordre où la série les a construits : chaque étape reprend la question laissée ouverte par la précédente. -1. [`presenter-ai-engine-par-son-api.ipynb`](03-5-Multi-Provider/presenter-ai-engine-par-son-api.ipynb) +1. [`presenter-ai-engine-par-son-api.ipynb`](03-5-Multi-Provider/presenter-ai-engine-par-son-api.html) pose le socle : instance, catalogue des routes `mwai/v1`, première completion réelle avec compte de tokens. -2. [`configurer-chatbots-par-l-api.ipynb`](03-1-Chatbots/configurer-chatbots-par-l-api.ipynb) +2. [`configurer-chatbots-par-l-api.ipynb`](03-1-Chatbots/configurer-chatbots-par-l-api.html) traite les chatbots comme des **documents JSON** — lecture, duplication, écriture read-modify-write — puis mesure honnêtement ce que les instructions d'un persona changent, et ce qu'elles ne changent pas. -3. [`administrer-les-formulaires-par-l-api.ipynb`](03-2-Forms/administrer-les-formulaires-par-l-api.ipynb) +3. [`administrer-les-formulaires-par-l-api.ipynb`](03-2-Forms/administrer-les-formulaires-par-l-api.html) montre l'autre style d'API du plugin : le formulaire est un **contenu** WordPress (custom post type `mwai_form`, CRUD unitaire, corps Gutenberg, rendu public par shortcode) — et mesure la frontière gratuite/Pro (du contenu rendu, pas encore des champs). -4. [`piloter-wordpress-par-mcp.ipynb`](03-4-MCP-Server/piloter-wordpress-par-mcp.ipynb) +4. [`piloter-wordpress-par-mcp.ipynb`](03-4-MCP-Server/piloter-wordpress-par-mcp.html) ouvre la seconde face du plugin : **WordPress comme serveur MCP** — endpoint JSON-RPC `mcp/v1/http`, handshake avec négociation de version, catalogue de 43 outils à JSON Schema, et de vrais `tools/call` en lecture puis en écriture — la frontière d'authentification mesurée à 401 sur chaque méthode. -5. [`brancher-plusieurs-providers-par-l-api.ipynb`](03-5-Multi-Provider/brancher-plusieurs-providers-par-l-api.ipynb) +5. [`brancher-plusieurs-providers-par-l-api.ipynb`](03-5-Multi-Provider/brancher-plusieurs-providers-par-l-api.html) ouvre la régie des **environnements** : la matrice `ai__default_env` lue et écrite par l'API, l'interrogation d'un provider, le cycle déclarer/basculer/rétablir — et le piège @@ -55,14 +55,14 @@ reprend la question laissée ouverte par la précédente. remplace**. La matrice croisée laisse des cases vides, dont la case json. -6. [`parler-au-chatbot-en-visiteur-par-l-api.ipynb`](03-1-Chatbots/parler-au-chatbot-en-visiteur-par-l-api.ipynb) +6. [`parler-au-chatbot-en-visiteur-par-l-api.ipynb`](03-1-Chatbots/parler-au-chatbot-en-visiteur-par-l-api.html) ouvre la troisième face, celle du **navigateur d'un visiteur anonyme** (namespace `mwai-ui/v1`) : la page publique n'embarque aucun jeton, l'amorçage passe par `start_session`, la conversation par `chats/submit` au `X-WP-Nonce` — et la nuance : un nonce est un anti-CSRF, pas une authentification. -7. [`obtenir-des-donnees-structurees-par-l-api.ipynb`](03-1-Chatbots/obtenir-des-donnees-structurees-par-l-api.ipynb) +7. [`obtenir-des-donnees-structurees-par-l-api.ipynb`](03-1-Chatbots/obtenir-des-donnees-structurees-par-l-api.html) ferme la dernière veine « non prouvée » : la route `/ai/json`, qui ignore `envId`/`model` et lit **la case json de la matrice d'usages** laissée vide à l'étape 5. Le notebook reproduit l'erreur à froid, @@ -70,14 +70,14 @@ reprend la question laissée ouverte par la précédente. exploitable, puis mesure honnêtement la promesse : le **null silencieux** du parser PHP et la nature de la contrainte de format. -8. [`autour-du-consent-oauth-du-serveur-mcp.ipynb`](03-4-MCP-Server/autour-du-consent-oauth-du-serveur-mcp.ipynb) +8. [`autour-du-consent-oauth-du-serveur-mcp.ipynb`](03-4-MCP-Server/autour-du-consent-oauth-du-serveur-mcp.html) reprend la question laissée ouverte par l'étape 4 : comment un client tiers se connecte-t-il **sans les clés de l'admin** ? Serveur d'autorisation OAuth 2.0 embarqué, enregistrement dynamique, PKCE, consentement réservé aux administrateurs, code → token → appel MCP réel au bearer délégué — puis révocation mesurée. -9. [`interroger-lassistant-de-lediteur-par-l-api.ipynb`](03-1-Chatbots/interroger-lassistant-de-lediteur-par-l-api.ipynb) +9. [`interroger-lassistant-de-lediteur-par-l-api.ipynb`](03-1-Chatbots/interroger-lassistant-de-lediteur-par-l-api.html) complète le tour des **quatre faces** du plugin — admin, agent, visiteur, éditeur — par celle de celui qui écrit : la route `mwai-ui/v1/editor/submit`, dont le contrat se découvre par les @@ -85,14 +85,14 @@ reprend la question laissée ouverte par la précédente. elle-même. La route est stateless : le tour isolé oublie, le tour qui re-apporte `messages` souvient. -10. [`donner-une-memoire-ephemere-au-chatbot-par-l-api.ipynb`](03-1-Chatbots/donner-une-memoire-ephemere-au-chatbot-par-l-api.ipynb) +10. [`donner-une-memoire-ephemere-au-chatbot-par-l-api.ipynb`](03-1-Chatbots/donner-une-memoire-ephemere-au-chatbot-par-l-api.html) ouvre la cinquième surface : la famille `mwai-ui/v1/files/*`, celle des **pièces jointes** — éphémères par architecture (TTL d'une heure prouvé par soustraction), partitionnées par utilisateur, avec le miroir admin `mwai/v1/openai/files/*`. Le stockage est fait ; la question devient son usage. -11. [`joindre-un-fichier-au-chatbot-par-l-api.ipynb`](03-1-Chatbots/joindre-un-fichier-au-chatbot-par-l-api.ipynb) +11. [`joindre-un-fichier-au-chatbot-par-l-api.ipynb`](03-1-Chatbots/joindre-un-fichier-au-chatbot-par-l-api.html) ferme le dossier pièces jointes par la question qui suit le stockage : **comment un fichier téléversé entre-t-il dans une completion ?** La réponse mesurée est un drame en trois actes — le @@ -103,25 +103,25 @@ reprend la question laissée ouverte par la précédente. Sept notebooks de ce niveau se lisent seuls, sans suivre la chaîne : -- [`eval-choisir-son-modele.ipynb`](03-5-Multi-Provider/eval-choisir-son-modele.ipynb) +- [`eval-choisir-son-modele.ipynb`](03-5-Multi-Provider/eval-choisir-son-modele.html) — cinq propriétés discriminantes contre n'importe quel endpoint compatible OpenAI, en stdlib pur sans clé ni réseau : « je l'ai essayé, il répond bien » devient un tableau reproductible. -- [`ingestion-corpus-long-rag.ipynb`](03-3-RAG-et-Embeddings/ingestion-corpus-long-rag.ipynb) +- [`ingestion-corpus-long-rag.ipynb`](03-3-RAG-et-Embeddings/ingestion-corpus-long-rag.html) — découper un catalogue avant de l'indexer : la dégradation du retrieval vient du chunking, pas de l'embedder. -- [`separer-les-environnements-de-vecteurs.ipynb`](03-3-RAG-et-Embeddings/separer-les-environnements-de-vecteurs.ipynb) +- [`separer-les-environnements-de-vecteurs.ipynb`](03-3-RAG-et-Embeddings/separer-les-environnements-de-vecteurs.html) — fuite cross-environnement et accident de réindexation, mesurés sur un vector store partitionné. -- [`auditer-un-serveur-mcp.ipynb`](03-4-MCP-Server/auditer-un-serveur-mcp.ipynb) +- [`auditer-un-serveur-mcp.ipynb`](03-4-MCP-Server/auditer-un-serveur-mcp.html) — un serveur MCP utile expose les verbes du métier, pas les tables. -- [`consommer-vs-exposer-le-mcp.ipynb`](03-4-MCP-Server/consommer-vs-exposer-le-mcp.ipynb) +- [`consommer-vs-exposer-le-mcp.ipynb`](03-4-MCP-Server/consommer-vs-exposer-le-mcp.html) — les deux sens du fil : chevauchement cross-catalogue, redondance d'écriture dangereuse. -- [`auditer-un-formulaire-conditionnel.ipynb`](03-2-Forms/auditer-un-formulaire-conditionnel.ipynb) +- [`auditer-un-formulaire-conditionnel.ipynb`](03-2-Forms/auditer-un-formulaire-conditionnel.html) — un formulaire à branchement est une machine à états implicite : sept champs engendrent treize états. -- [`mesurer-la-derive-dun-copilot.ipynb`](03-1-Chatbots/mesurer-la-derive-dun-copilot.ipynb) +- [`mesurer-la-derive-dun-copilot.ipynb`](03-1-Chatbots/mesurer-la-derive-dun-copilot.html) — le gate humain à chaque étape ne protège pas la chaîne : des destructrices complémentaires perdent la moitié du document. diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/05-Playwright-AI-Engine/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/05-Playwright-AI-Engine/README.md index 3abc3470532..84413b88787 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/05-Playwright-AI-Engine/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/05-Playwright-AI-Engine/README.md @@ -42,7 +42,7 @@ des constats, pas par symétrie d'arborescence. ## Le parcours — ce qu'il mesure -[`00-Parcours-QA-AI-Engine.ipynb`](00-Parcours-QA-AI-Engine.ipynb) suit +[`00-Parcours-QA-AI-Engine.ipynb`](00-Parcours-QA-AI-Engine.html) suit un escalier de quatre paliers sur un indicateur témoin, `module_workspace` : @@ -144,7 +144,7 @@ grep -nE "Bearer |password|localhost:80(8|9)[0-9]" 00-Parcours-QA-AI-Engine.ipyn - [`../00-Tour-Plateforme/README.md`](../00-Tour-Plateforme/README.md) — le tour guidé de l'interface, où ce comportement a été rencontré pour la première fois, au détour d'une capture -- [`../parler-au-chatbot-en-visiteur-par-l-api.ipynb`](../03-Functional/03-1-Chatbots/parler-au-chatbot-en-visiteur-par-l-api.ipynb) +- [`../parler-au-chatbot-en-visiteur-par-l-api.ipynb`](../03-Functional/03-1-Chatbots/parler-au-chatbot-en-visiteur-par-l-api.html) — dernier grain de la série « par son API », qui épuisait les faces atteignables sans navigateur - [`../../Open-WebUI/Playwright-OWUI/README.md`](../../Open-WebUI/Playwright-OWUI/README.md) diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/06-Securite-et-Methode/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/06-Securite-et-Methode/README.md index 030877e09cb..d800c016cab 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/06-Securite-et-Methode/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/06-Securite-et-Methode/README.md @@ -42,7 +42,7 @@ du dépôt. ## Notebooks -- [`auditer-la-conformite-visuelle.ipynb`](auditer-la-conformite-visuelle.ipynb) — +- [`auditer-la-conformite-visuelle.ipynb`](auditer-la-conformite-visuelle.html) — smoke test structurel vs conformité visuelle : contraste WCAG, primaires Bootstrap, affordance des CTA. Quatre pages synthétiques portant une violation délibérée chacune, trois détecteurs dédiés, et la démonstration diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/README.md index 356a042705f..14e895e95ba 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/AI-Engine-WordPress/README.md @@ -86,36 +86,36 @@ d'une instance jetable dédiée (montage en 5 étapes dans ### Fonctionnel — chatbots et assistants -- [configurer-chatbots-par-l-api](03-Functional/03-1-Chatbots/configurer-chatbots-par-l-api.ipynb) — les chatbots sont des documents JSON : lire, dupliquer, écrire (read-modify-write) — et mesurer ce que les instructions d'un persona changent réellement -- [parler-au-chatbot-en-visiteur](03-Functional/03-1-Chatbots/parler-au-chatbot-en-visiteur-par-l-api.ipynb) — la face navigateur : page sans jeton, `start_session` seul endpoint public, et nonce = anti-CSRF, pas authentification -- [interroger-lassistant-de-lediteur](03-Functional/03-1-Chatbots/interroger-lassistant-de-lediteur-par-l-api.ipynb) — la face éditeur : nonce `wp_rest`, contrat découvert par les refus, frontière gratuite/Pro inscrite dans la réponse -- [donner-une-memoire-ephemere](03-Functional/03-1-Chatbots/donner-une-memoire-ephemere-au-chatbot-par-l-api.ipynb) — la famille `files/*` : upload par refus, TTL d'une heure prouvé par soustraction, partition par utilisateur -- [joindre-un-fichier-au-chatbot](03-Functional/03-1-Chatbots/joindre-un-fichier-au-chatbot-par-l-api.ipynb) — un fichier joint a trois destins : ignoré (200 silencieux), annoté-puis-jeté (tokens à l'appui), réellement vu (l'image bicolore) -- [mesurer-la-derive-dun-copilot](03-Functional/03-1-Chatbots/mesurer-la-derive-dun-copilot.ipynb) — le gate humain à chaque étape ne protège pas la chaîne : des destructrices complémentaires perdent la moitié du document -- [obtenir-des-donnees-structurees](03-Functional/03-1-Chatbots/obtenir-des-donnees-structurees-par-l-api.ipynb) — la route `/ai/json` : la case json de la matrice d'usages, son remplissage, le null silencieux du parser +- [configurer-chatbots-par-l-api](03-Functional/03-1-Chatbots/configurer-chatbots-par-l-api.html) — les chatbots sont des documents JSON : lire, dupliquer, écrire (read-modify-write) — et mesurer ce que les instructions d'un persona changent réellement +- [parler-au-chatbot-en-visiteur](03-Functional/03-1-Chatbots/parler-au-chatbot-en-visiteur-par-l-api.html) — la face navigateur : page sans jeton, `start_session` seul endpoint public, et nonce = anti-CSRF, pas authentification +- [interroger-lassistant-de-lediteur](03-Functional/03-1-Chatbots/interroger-lassistant-de-lediteur-par-l-api.html) — la face éditeur : nonce `wp_rest`, contrat découvert par les refus, frontière gratuite/Pro inscrite dans la réponse +- [donner-une-memoire-ephemere](03-Functional/03-1-Chatbots/donner-une-memoire-ephemere-au-chatbot-par-l-api.html) — la famille `files/*` : upload par refus, TTL d'une heure prouvé par soustraction, partition par utilisateur +- [joindre-un-fichier-au-chatbot](03-Functional/03-1-Chatbots/joindre-un-fichier-au-chatbot-par-l-api.html) — un fichier joint a trois destins : ignoré (200 silencieux), annoté-puis-jeté (tokens à l'appui), réellement vu (l'image bicolore) +- [mesurer-la-derive-dun-copilot](03-Functional/03-1-Chatbots/mesurer-la-derive-dun-copilot.html) — le gate humain à chaque étape ne protège pas la chaîne : des destructrices complémentaires perdent la moitié du document +- [obtenir-des-donnees-structurees](03-Functional/03-1-Chatbots/obtenir-des-donnees-structurees-par-l-api.html) — la route `/ai/json` : la case json de la matrice d'usages, son remplissage, le null silencieux du parser ### Fonctionnel — formulaires -- [administrer-les-formulaires-par-l-api](03-Functional/03-2-Forms/administrer-les-formulaires-par-l-api.ipynb) — le formulaire est un contenu WordPress (CPT `mwai_form`) : CRUD unitaire, rendu par shortcode, frontière gratuite/Pro mesurée -- [auditer-un-formulaire-conditionnel](03-Functional/03-2-Forms/auditer-un-formulaire-conditionnel.ipynb) — un formulaire à branchement est une machine à états implicite : sept champs engendrent treize états, coût LLM et champs morts émergents +- [administrer-les-formulaires-par-l-api](03-Functional/03-2-Forms/administrer-les-formulaires-par-l-api.html) — le formulaire est un contenu WordPress (CPT `mwai_form`) : CRUD unitaire, rendu par shortcode, frontière gratuite/Pro mesurée +- [auditer-un-formulaire-conditionnel](03-Functional/03-2-Forms/auditer-un-formulaire-conditionnel.html) — un formulaire à branchement est une machine à états implicite : sept champs engendrent treize états, coût LLM et champs morts émergents ### Fonctionnel — RAG et embeddings -- [ingestion-corpus-long-rag](03-Functional/03-3-RAG-et-Embeddings/ingestion-corpus-long-rag.ipynb) — découper un catalogue avant de l'indexer : la dégradation du retrieval vient du chunking, pas de l'embedder -- [separer-les-environnements-de-vecteurs](03-Functional/03-3-RAG-et-Embeddings/separer-les-environnements-de-vecteurs.ipynb) — fuite cross-environnement et accident de réindexation, mesurés sur un vector store partitionné +- [ingestion-corpus-long-rag](03-Functional/03-3-RAG-et-Embeddings/ingestion-corpus-long-rag.html) — découper un catalogue avant de l'indexer : la dégradation du retrieval vient du chunking, pas de l'embedder +- [separer-les-environnements-de-vecteurs](03-Functional/03-3-RAG-et-Embeddings/separer-les-environnements-de-vecteurs.html) — fuite cross-environnement et accident de réindexation, mesurés sur un vector store partitionné ### Fonctionnel — serveur MCP -- [piloter-wordpress-par-mcp](03-Functional/03-4-MCP-Server/piloter-wordpress-par-mcp.ipynb) — WordPress serveur MCP : handshake JSON-RPC, catalogue à JSON Schema, vrais `tools/call` en écriture -- [consommer-vs-exposer-le-mcp](03-Functional/03-4-MCP-Server/consommer-vs-exposer-le-mcp.ipynb) — les deux sens du fil : chevauchement cross-catalogue (Jaccard sur verbe, cible), la redondance d'écriture est dangereuse -- [auditer-un-serveur-mcp](03-Functional/03-4-MCP-Server/auditer-un-serveur-mcp.ipynb) — un serveur MCP utile expose les verbes du métier, pas les tables : classification CRUD/métier + distance au schéma -- [autour-du-consent-oauth](03-Functional/03-4-MCP-Server/autour-du-consent-oauth-du-serveur-mcp.ipynb) — l'escalier des refus de l'OAuth embarqué : PKCE, consent admin mécanisé, token délégué — puis révocation mesurée +- [piloter-wordpress-par-mcp](03-Functional/03-4-MCP-Server/piloter-wordpress-par-mcp.html) — WordPress serveur MCP : handshake JSON-RPC, catalogue à JSON Schema, vrais `tools/call` en écriture +- [consommer-vs-exposer-le-mcp](03-Functional/03-4-MCP-Server/consommer-vs-exposer-le-mcp.html) — les deux sens du fil : chevauchement cross-catalogue (Jaccard sur verbe, cible), la redondance d'écriture est dangereuse +- [auditer-un-serveur-mcp](03-Functional/03-4-MCP-Server/auditer-un-serveur-mcp.html) — un serveur MCP utile expose les verbes du métier, pas les tables : classification CRUD/métier + distance au schéma +- [autour-du-consent-oauth](03-Functional/03-4-MCP-Server/autour-du-consent-oauth-du-serveur-mcp.html) — l'escalier des refus de l'OAuth embarqué : PKCE, consent admin mécanisé, token délégué — puis révocation mesurée ### Fonctionnel — multi-provider -- [presenter-ai-engine-par-son-api](03-Functional/03-5-Multi-Provider/presenter-ai-engine-par-son-api.ipynb) — le socle de la série : instance jetable, catalogue des routes `mwai/v1`, première completion réelle -- [brancher-plusieurs-providers](03-Functional/03-5-Multi-Provider/brancher-plusieurs-providers-par-l-api.ipynb) — la matrice `ai__default_env` lue et écrite — et le piège : `settings/update` ne met pas à jour, il remplace -- [eval-choisir-son-modele](03-Functional/03-5-Multi-Provider/eval-choisir-son-modele.ipynb) — cinq propriétés discriminantes contre n'importe quel endpoint : « je l'ai essayé, il répond bien » devient un tableau reproductible +- [presenter-ai-engine-par-son-api](03-Functional/03-5-Multi-Provider/presenter-ai-engine-par-son-api.html) — le socle de la série : instance jetable, catalogue des routes `mwai/v1`, première completion réelle +- [brancher-plusieurs-providers](03-Functional/03-5-Multi-Provider/brancher-plusieurs-providers-par-l-api.html) — la matrice `ai__default_env` lue et écrite — et le piège : `settings/update` ne met pas à jour, il remplace +- [eval-choisir-son-modele](03-Functional/03-5-Multi-Provider/eval-choisir-son-modele.html) — cinq propriétés discriminantes contre n'importe quel endpoint : « je l'ai essayé, il répond bien » devient un tableau reproductible ### Sécurité et méthode diff --git a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/README.md b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/README.md index 77d99b78ecf..aa22c9b7693 100644 --- a/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/README.md +++ b/MyIA.AI.Notebooks/GenAI/Plateformes-Conversationnelles/README.md @@ -82,7 +82,7 @@ propre déploiement. ### Qui il est -[`differencier-les-assistants.ipynb`](differencier-les-assistants.ipynb) traite +[`differencier-les-assistants.ipynb`](differencier-les-assistants.html) traite l'autre moitié. Déclarer quatre assistants spécialisés ne les rend pas distincts : le prompt porte une intention, la spécialisation est une propriété des sorties. Le notebook construit la mesure — une batterie de sondes ambiguës,