php-llm/llm-chain-bundle
php-llm/llm-chain-bundle helps PHP developers compose LLM workflows as reusable, maintainable chains. Connect prompts, tools, and model calls through a fluent API to build multi-step AI pipelines with less boilerplate and clearer orchestration.
Architecture fit. Despite the brief framing this as a "Laravel/PHP package," php-llm/llm-chain-bundle is a Symfony bundle, not a Laravel package. It wires LLM chains through Symfony's DI container, bundle configuration, and service tags. The framework-agnostic core (php-llm/llm-chain) is the reusable layer; the bundle is the Symfony-specific adapter. Release 0.25.0 makes this explicit: "PHP LLM becomes Symfony AI" signals a deliberate re-anchoring of the project's identity to the Symfony ecosystem. For a Laravel shop, the bundle is the wrong integration surface — the core library plus a thin service provider is the realistic path.
Integration feasibility. Moderate, gated on the rename. This is a pre-1.0 release (0.25.0) carrying a flagged breaking change (chore!). Expect package name, namespace, config root key, service IDs, and possibly env-var prefixes to move together. The other two entries are low-risk: serializer autowiring for tool input/output is an internal consistency fix, and allowing array arguments in model.options relaxes a previously over-strict config validator.
Technical risk.
composer update.model.options array relaxation means configs that previously failed validation now pass — silent behavioral drift on upgrade, not a loud error.Key questions. Is there a published BC policy or migration guide for the rename? Does 0.24.x get a support window, and for how long? Is there a compatibility shim (old namespace aliasing new) to make the upgrade a no-op for callers? Is the maintainer base broader than the two visible contributors? Does the rename imply a future 1.0 with a stability commitment?
Stack fit. For a Laravel codebase: integrate php-llm/llm-chain (core) directly and hand-roll a small service provider plus config file — do not pull in the Symfony bundle. For a Symfony codebase: adopt Symfony AI, but only after the rename stabilizes. For a polyglot/PHP-monolith shop: the core library is the portable asset; treat the bundle as one adapter among several.
Migration path. Pin to 0.24.x today to stop churn. Stand up a branch that upgrades to 0.25.0 with the rename applied wholesale (composer require, namespace rewrites, config key renames, service ID updates). Run the full test suite plus a tool-calling smoke test against a real provider before merging. Keep 0.24.x tagged as the rollback point.
Compatibility. Verify PHP version floor and Symfony component constraints, particularly symfony/serializer — autowiring tool I/O makes it a hard dependency rather than an optional one. Check that any pinned symfony/* versions in the host app satisfy the new constraints. Confirm the array-in-model.options change is additive and does not alter validation of existing scalar configs.
Sequencing.
Maintenance. Pre-1.0 with an active rebrand is a high-churn dependency. Budget recurring upgrade effort each minor release, and expect documentation to lag the code for at least a release or two. Renovate/Dependabot will open PRs that fail on namespace references; plan for manual review rather than auto-merge.
Support. Open-source, small contributor base (two named maintainers in this release). No vendor SLA. Support quality depends on GitHub Discussions/issues responsiveness. The rename may fragment the issue history and search results, making self-service troubleshooting harder for a quarter or two.
Scaling. The package itself is not the scaling bottleneck — provider rate limits, token cost, and latency are. The serializer autowiring change matters at scale because tool I/O deserialization failures surface as intermittent runtime errors under load, not at boot. Budget for retry/backoff and per-tool error handling in the integration layer, not in the package.
Failure modes.
model.options arrays now accepted where they previously errored → latent misconfiguration ships to production.Ramp-up. Low for a developer already fluent in Symfony DI (or comfortable with Laravel's container, for the core-only path) — the chain abstraction is small. Add one to two days for the rename migration and half a day for tool-serialization contract testing. The larger cost is organizational: rewriting internal runbooks and examples to the new project name so new hires aren't following stale guidance.
How can I help you explore Laravel packages today?