Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Symfony AI in Action

Symfony AI in Action

Construire des fonctionnalités IA réalistes avec Symfony

Avatar for Mathieu Ledru

Mathieu Ledru

November 06, 2026

More Decks by Mathieu Ledru

Other Decks in Programming

Transcript

  1. Darkwood selection / SymfonyLive Berlin 2026 Symfony AI in Action

    Construire des fonctionnalités IA réalistes avec Symfony 24-04-2026 @matyo91
  2. Le problème L'IA produit beaucoup de buzzwords. Le produit, lui,

    demande du contrôle. Le vrai défi n'est pas de faire répondre un modèle. C'est de le brancher sur une application qui a des règles, des données, des droits et des effets de bord. 01 | problème @matyo91
  3. Vision Symfony AI ne vend pas un chatbot. Il donne

    une stack pour activer des features IA. Inférence Contexte Action Changer de modèle sans réécrire l'app. Relier l'IA aux données métier. Exposer du code Symfony contrôlé. 02 | vision @matyo91
  4. Les briques Une stack, pas un helper HTTP. Platform ·

    Agent · Store · AI Bundle · MCP Bundle · MCP SDK 03 | overview @matyo91
  5. Slide 5 · 1/1 · représentation statique Platform Une abstraction

    d'inférence pour parler à plusieurs providers. Capture statique : Schéma ou tableau Lecture du schéma : Votre code PHP Mistral → Platform → OpenAI Claude Gemini 04 | platform Version interactive (mise en ligne à venir) : https://slides.darkwood.com/slides/symfony-ai-in-action @matyo91
  6. Même intention, modèle différent Le code applicatif reste stable. $result

    = $platform->request( model: new GptModel('gpt-4.1-mini'), input: 'Résume cette commande client.' ); OpenAI 05 | providers Claude Gemini Mistral @matyo91
  7. Streaming Streamer, ce n'est pas juste afficher des mots plus

    vite. Deltas typés Usage tokens UX live Texte, tool call, signal de fin. Observer le coût pendant la réponse. Répondre sans bloquer l'interface. 06 | streaming @matyo91
  8. Multimodal L'entrée et la sortie ne sont plus seulement du

    texte. Audio · Image · PDF · Binaire Le modèle devient une pièce d'un pipeline média, pas une zone de texte magique. 07 | multimodal @matyo91
  9. Structured Output On veut des objets PHP fiables, pas du

    JSON fragile dans une string. final readonly class ProductInsight { public function __construct( public string $risk, public array $nextActions, ) {} } 08 | structure @matyo91
  10. Slide 10 · 1/1 · représentation statique Agent Un agent,

    c'est une boucle contrôlée entre modèle et application. Capture statique : Schéma ou tableau Lecture du schéma : LLM → Tool call → Service Symfony → Réponse 09 | agent Version interactive (mise en ligne à venir) : https://slides.darkwood.com/slides/symfony-ai-in-action @matyo91
  11. Tool Calling Exposer du code métier avec une frontière explicite.

    #[AsTool('refund_order')] public function refundOrder(string $orderId): RefundResult { return $this->refunds->request($orderId); } 10 | tools @matyo91
  12. Slide 12 · 1/1 · représentation statique Human in the

    Loop Le modèle peut proposer. L'application décide quand agir. Capture statique : Schéma ou tableau Lecture du schéma : Tool call proposé refus → Validation humaine → Exécution ou 11 | hitl Version interactive (mise en ligne à venir) : https://slides.darkwood.com/slides/symfony-ai-in-action @matyo91
  13. Memory La mémoire utile vient souvent de votre application. Profil

    Préférences, rôle, langue. Historique Actions et conversations récentes. Permissions Ce que l'agent peut voir ou faire. 12 | memory @matyo91
  14. Slide 14 · 1/1 · représentation statique Store Le RAG

    commence avant la recherche vectorielle. Capture statique : Schéma ou tableau Lecture du schéma : Loading → Filtering → Transforming → Vectorizing 13 | store Version interactive (mise en ligne à venir) : https://slides.darkwood.com/slides/symfony-ai-in-action @matyo91
  15. Slide 15 · 1/1 · représentation statique RAG Connecter l'agent

    aux données applicatives, avec du contexte vérifiable. Capture statique : Schéma ou tableau Lecture du schéma : Question sourcée → SimilaritySearch → Documents → Réponse 14 | rag Version interactive (mise en ligne à venir) : https://slides.darkwood.com/slides/symfony-ai-in-action @matyo91
  16. Multi-agent Plusieurs agents, oui. Mais seulement avec une orchestration lisible.

    Subagents Handoff Traces Spécialiser une tâche bornée. Passer le relais avec contexte. Comprendre qui a décidé quoi. 15 | multi-agent @matyo91
  17. Slide 17 · 1/1 · représentation statique MCP MCP ouvre

    la porte à des architectures agentiques interopérables. Capture statique : Schéma ou tableau Lecture du schéma : Symfony app ↔ MCP Server ↔ Agents IDE Outils externes 16 | mcp Version interactive (mise en ligne à venir) : https://slides.darkwood.com/slides/symfony-ai-in-action @matyo91
  18. Analyse Darkwood Le vrai sujet n'est pas le chatbot. C'est

    l'orchestration. Qui appelle quoi ? Avec quel contexte ? Sous quelles permissions ? Avec quelle trace ? Et comment on reprend la main quand le modèle sort du cadre ? 17 | analyse @matyo91
  19. Stack cible Symfony AI + MCP + Flow + Navi

    + Uniflow. Symfony AI MCP Flow / Navi / Uniflow Modèles, agents, store, bundles. Interopérabilité des tools et contextes. Workflows, navigation agentique, orchestration métier. 18 | stack @matyo91
  20. Construire des features IA, pas seulement des prompts. Briques Symfony

    + données produit + orchestration contrôlée. C'est là que Symfony AI devient intéressant pour une vraie application. @matyo91 19 | conclusion @matyo91