Description
Idea
This collection of libraries is meant to provide multiple things
- A agent/multi agent framework => Agent Component
- An abstraction layer for AI model (not only LLMs) and inference provider or libraries => Platform Component
- A store integration for RAG and similar pattern => Store Component
- A low level MCP library for server and client => MCP SDK
By design these components are intended to be framework and vendor agnostic - even if using Symfony components.
Meaning that specific integrations for models, inference provider or stores are moved to bridges, and additional bundles integrate those into the framework => AI Bundle and MCP Bundle
Current Status
The lib just got moved from PHP-LLM into symfony/ai
- also with the new split of LLM Chain into Agent, Store and Platform. This is not yet fully done and clean (dependencies). The development mostly happens on the llm-chain
repository and gets cherry-picked into this repo - this is not exclusive though. It's just that people are already/still active contributing and there's valuable stuff there. And unless the repos diverge too much and cherry-picking get too annoying, that's fine.
The demo application broke over the time - at least audio and video examples (javascript part).
Plans
The previous Chain
class was only renamed to Agent
but does not really deserve that label yet. On top, some of those concerns (e.g. model capability validation) or extension points (input/output processor) should go to the Platform
class, and the Agent
should focus on multi-step model Platform interaction. Also meaning that the structured output handling most likely belongs into the Platform component.
More concrete known issues:
- Platform Component
- Introduce connector concept over multiple Platform implementations, similar DBAL Connection and Platform duo
- Error Handling - especially around the HTTP calls
- Redundancy in response conversion, see ResponseConverterInterface implementations
- Introduce Input/Output processor (or events?)
- Introduce capability validation (e.g. audio input but model doesn't support audio?)
- Better type support for user land (.e.g.
$platform->requestText(...)
or$platform->request(...)->asText()
) - Token consumption tracking
- Support for more models, see Models, Platforms & Stores Support #16
- Store Component
- Introducing Loader-Transformer-Vectorizer-Indexing pipeline
- Potential extension points for querying
- Use-case multi-vector query
- Use-case result reranking
- Text extraction, e.g. for using entities, see [Store] Support user land objects for embedding instead of TextDocument #18
- Support for more stores, see Models, Platforms & Stores Support #16
- Support for more loader (web, rss, pdf, word, json, ...)
- Agent Component
- Redesign interface for looking for like an agent (instruction + tools + input + options)
- Multi-Agent runner (orchestration, handoff), see [Agent] Multi-Agent Runner #19
- Agent Trace collecting metadata about the agent runtime, see [Agent] Agent Execution Trace #17
- Chat agent blueprint
- Summarizer
- Tool call limitation
- Tool classifier (read vs write)
- Agent Interaction/Interception
- AI Bundle
- Extend config to support library features
- Profiler panel to visualize platform, tools and agents correctly
- MCP things, see [MCP SDK] Complete MCP protocol #5
And that's only the bigger stuff ... LLM Chain issue tracker has some interesting things open as well
How to get started
If you are up for joining, that's super awesome - and I guess running the examples or the demo is a great start. I bet you will also find tiny things that need enhancements basically everywhere - PRs are welcome whereever.
I think to get familiar with the platform component implementing a bridge for unsupported models is a great start - or with a store.
Other than that, I'm happy to write down one of the bullet points from above in more detail if you're interested - or even jump on a call.
In general, if someone is interested and want to learn more about the status quo - I'm happy to do an intro call or session - just let me know :)
Interesting reads:
- https://github.com/humanlayer/12-factor-agents
- https://cdn.openai.com/business-guides-and-resources/a-practical-guide-to-building-agents.pdf
- https://speakerdeck.com/el_stoffel/agentic-applications-with-symfony
Cheers!