Skip to content

Ideas & Plans for this Project #41

Open
@chr-hertel

Description

@chr-hertel

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
  • 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:

Cheers!

Metadata

Metadata

Assignees

No one assigned

    Labels

    Help wantedExtra attention is needed

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions