🤖 Symfony AI in Action - Building real AI systems with Symfony
on April 24, 2026
For two days, on April 23 and 24, 2026, the SymfonyLive Berlin conference brought the community together around the major developments of the Symfony ecosystem.
Among the talks, one in particular marks a turning point:
👉 Symfony AI in Action, presented by Christopher Hertel.
- 🎥 Slides: https://speakerdeck.com/chr_hertel/symfony-ai-in-action-symfonylive-berlin-2026
- 🧠 Symfony AI: https://ai.symfony.com
- 🛠️ Platform used for this article: https://slidewire.dev
This article does not summarize the conference. He offers a Darkwood interpretation of what is happening.
The real issue: stop thinking “chatbot”
Today, many AI integrations are limited to this:
write a prompt → call a template → display a response
That's insufficient.
The real problem, in production, lies elsewhere:
- orchestrate multiple models
- manage context and memory
- Expose actions (tools)
- monitor costs and logs
- integrate everything into a business architecture
👉 Symfony AI does not offer a chatbot. 👉 Symfony AI offers a complete stack.
Symfony AI: a stack, not a feature
The objective is clear:
“Enable AI features, not only LLMs.”
Symfony AI introduces several fundamental building blocks:
- Platform → model abstraction
- Agent → LLM loop + tools
- Store → embeddings & RAG
- AI Bundle → Symfony integration
- MCP Bundle / SDK → tools exhibition
👉 We're moving from an API call… to a complete AI architecture.
Platform: Model abstraction
First classic problem:
OpenAI, Claude, Gemini, Mistral → Different APIs
Symfony AI introduces a unique abstraction.
$platform->invoke('gpt-5-mini', $input);
Same code, different providers.
Why this is key
- change model without refactoring
- optimize costs
- fallback multi-provider
- Integrate local and remote
👉 Symfony becomes a model orchestration layer.
Streaming & multimodal
Symfony AI goes beyond simple text:
- Real-time token streaming
- audio, image, PDF
- binary output
Examples:
- analyze a PDF
- Describe an image
- process an audio
- generate files
👉 AI is becoming a multimodal application building block.
Structured Output: regaining control
Classic problem:
LLMs return text… not reliable data
Symfony AI introduces typed responses:
$response_format => MyDTO::class
Result :
- usable PHP objects
- strict validation
- Direct integration into the profession
👉 We are moving from “generated text” to controlled data.
Agent: Connect the LLM to your application
An agent is:
a model that can call your code
With Symfony AI:
#[AsTool('create_recipe')]
You present your profession as a tool.
What this changes
Before :
- Isolated LLM
After :
- LLM + access to your system
👉 AI becomes executable.
Human in the loop: security
A critical point that is often overlooked:
An AI shouldn't do everything automatically.
Symfony AI allows you to:
- intercept a tool call
- request validation
- block or allow
Example :
- publish an article
- trigger critical action
👉 You remain in control.
Memory: contextualize
Agents do not function without context.
Symfony AI allows you to:
- inject user data
- manage profiles
- store history
- control permissions
👉 AI is becoming contextual and personalized.
Store & RAG: Connect your data
Pipeline:
- loading
- Filtering
- transforming
- Vectorizing
👉 You are building a vector basis.
Afterwards :
- user request
- search in the store
- enrichment of the prompt
👉 This is RAG (Retrieval Augmented Generation).
Real Impact
- Smart FAQ
- industry search engine
- internal co-pilot
- documented assistant
👉 You connect the AI to your business knowledge.
Multi-agent: specialization
Advanced architecture:
- senior agent
- specialized sub-agents
- orchestration
- sharing or isolation of context
Example :
- support agent
- technical agent
- billing agent
👉 Each agent has a role.
MCP: Expose your system
Symfony AI is part of a broader movement:
👉 the MCP protocol
Objective :
- Showcase your tools
- make your system queryable
- standardize AI interactions
👉 Your application becomes an intelligence server.
The real turning point: orchestration
The most important point is not:
- the models
- the prompts
- the agents
👉 The real issue is orchestration.
Key questions:
- Who calls what?
- In what context?
- Under what permissions?
- With what traceability?
- How to regain control?
The Darkwood Approach
At Darkwood, the answer is clear:
Suggested Stack
- Symfony AI → AI building blocks
- MCP → tools exposure
- Flow → orchestration
- Navi → execution + tracing
- Uniflow → interface
Why this stack
Symfony AI provides:
- the models
- the agents
- the tools
- the RAG
But something is missing:
- business orchestration
- overall control
- full visibility
👉 This is where Flow and Navi come in.
What this changes in practice
Before :
- isolated AI scripts
- fragile prompts
- little control
After :
- orchestrated system
- traceable execution
- integrated business logic
👉 We are moving from “playing with AI” to building reliable systems.
Conclusion
Symfony AI marks a major evolution:
You're no longer building a chatbot
you build a complete AI feature
Today you have:
- an abstraction of models
- agents connected to your code
- a memory system
- of the integrated RAG
- a basis for orchestrating
👉 You have no more excuses.
To go further
- Symfony AI: https://ai.symfony.com
- Slides by Christopher Hertel: https://speakerdeck.com/chr_hertel/symfony-ai-in-action-symfonylive-berlin-2026
- The technical support that allowed me to generate the slides - Slidewire: https://slidewire.dev
Darkwood
👉 Articles coming soon with concrete implementations.