symfony/ai-cohere-platform
Cohere platform bridge for Symfony AI, adding chat, embed, rerank, and audio transcription support through the official Cohere API. Links to Cohere reference docs and the main Symfony AI repo for contributing and issue reports.
symfony/ai as a hard dependency, so the true comparison is "adopt Symfony AI's abstraction layer" vs. "own our own thin client." That is an architecture decision, not a library decision, and should be made deliberately.Provider abstraction and model routing layer introduced in the v0.8 line is the strategically interesting part. If the roadmap includes a plausible future in which Cohere is swapped for or blended with another provider, standardizing on an abstraction now is cheaper than rewriting call sites later. If Cohere is a permanent, single-vendor choice, that abstraction is pure overhead.github-actions) against the upstream monorepo, which means model IDs move on the vendor's cadence rather than ours. Treat model selection as a pinned, versioned product decision — not something that floats in with a patch bump — so a catalog sync can't silently change cost or output quality behind a shipped feature.Consider it when:
symfony/ai and symfony/http-client. Laravel 9/10 on PHP 8.1+ is a workable fit; it just needs a service provider, config publishing, and a facade before it feels native.symfony/ai repository, which is a reasonable governance signal, but this split repository currently has zero stars and zero dependents and only a README plus changelogs as documentation.Look elsewhere when:
symfony/ai release. The abstraction will lag the vendor API by design; a refreshed model catalog is not the same as refreshed endpoint coverage.Practical gating criteria before committing: confirm symfony/ai resolves cleanly against your Laravel version and HTTP client; confirm you can pin and upgrade a pre-1.0 dependency on your release cadence (seven minor releases between 0.8 and 0.15 is the realistic churn rate to plan around, and 0.15.0 is itself a constraint bump that forces the paired symfony/ai upgrade); confirm someone owns the service provider, config, error handling, rate-limit middleware, and the model-ID allowlist; and confirm you have a fallback provider plan, since the abstraction promises portability you will only actually get if you exercise it.
For executives (one paragraph). We can ship Cohere-powered features — support chat, semantic search, and audio transcription — faster by using a maintained open-source bridge instead of writing and owning our own API integration. The package is part of the Symfony AI family, MIT-licensed, and standardizes our calls behind a provider abstraction so Cohere is not a permanent commitment. The trade-off is that it is early: effectively no public adoption yet, documentation is thin, it is still pre-1.0 and releasing minors frequently — including this week's 0.15.0, which is a version-constraint bump plus an automated model-list refresh, not a feature release — and it requires us to adopt Symfony's AI layer inside our PHP stack. My recommendation is a scoped, time-boxed pilot on one high-value use case — I'd suggest the support assistant or internal search — where the API client is a small fraction of the work and the real cost sits in the surrounding product (data, evaluation, UX). Success at the pilot stage justifies the abstraction; failure costs us a few weeks, not a quarter.
For engineering (short brief). This is a thin Symfony AI bridge over Cohere's Chat, Embed, Rerank, and Transcription APIs, now at v0.15.0. The latest release is housekeeping only: a coordinated bump of version constraints to the 0.15 line (PR #2753) and an automated model-catalog update (PR #2638, authored by github-actions). No API surface, breaking, or deprecation changes in this step — but the constraint bump means 0.15.0 must be upgraded in lockstep with the matching symfony/ai minor, so schedule it deliberately rather than letting Dependabot land it. Note the baseline has moved from v0.8.0, which is where the shared error-handling trait, the Provider abstraction with model routing, and speech-to-text landed. On Laravel you'll need symfony/ai and symfony/http-client, plus a service provider to bind the client, publish config, and a facade for ergonomics. Plan for queue-backed execution for anything non-interactive (transcription, bulk embeddings), caching for embeddings, retry/backoff for rate limits, and explicit error mapping into our existing reporting. Because the model catalog is CI-generated upstream, pin model IDs in our own config and diff that catalog on every bump — a model rename or retirement can change output quality and unit cost without any code change on our side. Known friction: no Laravel-native config or job wrappers, potential HTTP client overlap, and a pre-1.0 dependency we must pin and track across frequent minor bumps. Suggested sequence: two-day spike in Tinker, one-week integration and facade, then feature rollout on the highest-value use case. Please bring back a written read of the abstraction's ergonomics and the upgrade risk — including how much of the churn is real feature work versus constraint-bump churn — before we commit a roadmap slot to it.
How can I help you explore Laravel packages today?