Créez des fonctionnalités basées sur l’IA dans Symfony

· Silas Joisten · Temps de lecture: 2 minutes
AI and Symfony

L’IA transforme le développement web — et avec php-llm/llm-chain, les développeurs PHP peuvent facilement intégrer des fonctionnalités LLM puissantes dans leurs applications Symfony. Cet article vous montre comment démarrer grâce à des chatbots, des assistants intelligents, et plus encore.

Pourquoi utiliser l’IA avec Symfony ?

L’intelligence artificielle n’est plus un concept futuriste — elle fait désormais partie intégrante des technologies web modernes. Des chatbots à l’enrichissement de contenu, en passant par la recherche sémantique, les fonctionnalités pilotées par l’IA sont aujourd'hui partout. Les développeurs PHP ne sont pas en reste. Grâce à la bibliothèque php-llm/llm-chain, intégrer ces capacités dans un projet Symfony n’a jamais été aussi simple.

Introduction

php-llm/llm-chain est une bibliothèque native PHP qui permet d’interagir avec des modèles de langage de grande taille (LLM) comme :

Elle prend en charge plusieurs plateformes (OpenAI, Azure, Replicate, etc.) et permet de :

  • Générer du contenu

  • Appeler des outils externes (fonctions PHP) depuis un LLM

  • Créer des embeddings et effectuer des recherches sémantiques

  • Lier plusieurs appels à des LLM de manière logique

L’intégration Symfony est fournie via php-llm/llm-chain-bundle, qui gère automatiquement l’enregistrement des services, l’injection de dépendances, et la configuration via YAML.

Installation du Bundle Symfony

Installez le package via Composer :

composer require php-llm/llm-chain-bundle

Ajoutez votre clé API à .env :

OPENAI_API_KEY=your-api-key-here

Configurez le service dans config/packages/llm_chain.yaml :

llm_chain:
  platform:
    openai:
      api_key: '%env(OPENAI_API_KEY)%'

  chain:
    default:
      model:
        name: 'gpt4o-mini'

Utiliser l’IA dans un service Symfony

Voici un exemple simple de service Symfony qui envoie un message à un LLM et récupère une réponse :

use PhpLlm\LlmChain\ChainInterface;
use PhpLlm\LlmChain\Model\Message\Message;
use PhpLlm\LlmChain\Model\Message\MessageBag;
use PhpLlm\LlmChain\Model\Response\ResponseInterface;

final class SmartAssistant
{
    public function __construct(
        private ChainInterface $chain
    ) {
    }

    public function ask(string $question): ResponseInterface
    {
        $messages = new MessageBag(
            Message::forSystem('You are a helpful assistant.'),
            Message::ofUser($question),
        );

        return $this->chain->call($messages);
    }
}

Vous pouvez utiliser ce service dans un contrôleur, une commande console ou un worker.

Tool Calling : Rendez l’IA interactive

Vous souhaitez que le LLM appelle de vraies fonctions PHP ? Il suffit d’utiliser l’attribut #[AsTool] :

use PhpLlm\LlmChain\Toolbox\Attribute\AsTool;

#[AsTool('current_time', 'Returns the current server time')]
final class ClockTool
{
    public function __invoke(): string
    {
        return (new \DateTimeImmutable())->format('Y-m-d H:i:s');
    }
}

Le LLM peut maintenant décider de lui-même quand utiliser cette fonction pendant une conversation. C’est comme les plugins ChatGPT… mais en PHP.

Embeddings & Recherche

llm-chain prend également en charge les embeddings pour la recherche sémantique. Vous pouvez stocker les vecteurs dans :

Ces solutions sont idéales pour implémenter la génération augmentée par la récupération (RAG). Cette technique consiste à rechercher des documents pertinents avant de poser une question au LLM.

Tester : Projet démo Symfony

Envie d’essayer ? L’équipe php-llm/llm-chain fournit une application Symfony de démonstration avec un chatbot et une recherche vectorielle :

php-llm/llm-chain-symfony-demo

Maîtriser les coûts et les tokens

Les LLM ne sont pas gratuits. Voici quelques bonnes pratiques à suivre pour maîtriser ses coûts :

  • Mettre en cache les réponses répétitives

  • Utiliser des prompts courts

  • Surveiller l’utilisation des tokens via les logs

  • Limiter la taille des messages système

Conclusion

Avec quelques lignes de configuration et de code, vous pouvez intégrer des fonctionnalités IA puissantes à votre application Symfony. Que vous souhaitiez automatiser des tâches, répondre à des questions ou enrichir du contenu, llm-chain est un excellent point de départ.

Symfony est prêt pour l’ère de l’intelligence artificielle. Et vous ?

Prêts à créer des applications Symfony plus intelligentes ?

Commencez dès aujourd’hui avec llm-chain — des fonctionnalités basées sur l’IA en seulement quelques lignes de code.

Cela pourrait aussi vous intéresser

Chart going up
Silas Joisten Nouveau

Les bonnes raisons de tester votre application, expliqué à votre manager

Découvrez pourquoi les tests représentent un investissement stratégique et non un coût. Cet article explique à votre manager la valeur métier des tests, pourquoi ils sont essentiels pour le ROI, comment ils réduisent vos risques et améliorent votre agilité. Des explications claires, chiffres et cas concrets à l'appui.

En savoir plus
Code happy in lights
Imen Ezzine

La Revue de Code : Types, Organisation et Bonnes Pratiques

La Revue de Code (ou code review) est une étape essentielle du cycle de développement logiciel, permettant d’améliorer la qualité du code, de réduire les bugs et d’encourager le partage des connaissances au sein de l’équipe. GitLab et GitHub, deux des plateformes de gestion de code les plus populaires, offrent des fonctionnalités avancées pour faciliter ce processus. Cet article aborde les différents types de revues de code, comment s’organiser, et comment tirer partie des templates et check-lists pour améliorer l’efficacité des PR (Pull Requests).

En savoir plus
Many Lego figurines on a white table with hands playing with them
Alexandre Nesson

Scrum Guide Expansion Pack (2025) Ce qu'il faut savoir

Une nouvelle brique est venue enrichir le Scrum Guide ! Alors, poudre aux yeux ou réelle plus value ? Découvrons le ensemble dans cet article rédigé par l’un de nos experts.

En savoir plus
The SensioLabs team celebrating the 20th anniversary of Symfony with balloons
Jules Daunay

L'histoire continue : SensioLabs célèbre les 20 ans de Symfony

Le temps passe vite, surtout quand on écrit le futur du développement ! L’équipe de SensioLabs vient de souffler les 20 bougies du framework Symfony. Nous avons marqué le coup au bureau, mais la fête n'est pas terminée. Le rendez-vous est déjà pris pour une célébration XXL à SymfonyCon Amsterdam 2025 les 27 au 28 novembre.

En savoir plus
PHP 8.5 URI extension
Oskar Stark

La nouvelle extension URI de PHP 8.5 : Une révolution pour l'analyse des URL

PHP 8.5 introduit une nouvelle extension URI puissante qui modernise la gestion des URL. Grâce au support des standards RFC 3986 et WHATWG, la nouvelle classe Uri fournit des objets immuables, des interfaces fluides et une validation appropriée, résolvant ainsi toutes les limites de la fonction historique parse_url(). Cet articl présente des exemples pratiques avant/après et explique quand utiliser chaque standard.

En savoir plus
Open in new tab
Silas Joisten

Le piège des onglets: pourquoi forcer l'ouverture de nouveaux onglets est une mauvaise pratique en UX

Nous l'avons tous fait — ajouter target="_blank" à un lien pour « aider les utilisateurs » à rester sur notre site. Mais ce qui semble être une commodité inoffensive crée souvent de la confusion, diminue l'accessibilité et introduit des risques de sécurité cachés.

En savoir plus
3 dog heads
Mathieu Santostefano

Venez avec votre propre client HTTP

Libérez-vous des dépendances rigides de vos SDK PHP. Dans cet article, apprenez à utiliser les normes PSR-7, PSR-17 et PSR-18, ainsi que la bibliothèque php-http/discovery, pour permettre à vos utilisateurs d'utiliser le client HTTP de leur choix, qu'il s'agisse de Guzzle, de Symfony HttpClient ou d'un autre. Un incontournable pour les développeurs PHP et Symfony.

En savoir plus
Vegetables on a wooden board with a knife with a pan on top
Rémi Brière

L'Agilité en entreprise - 2. Pourquoi Scrum échoue (et comment y remédier)

Scrum est souvent perçu comme le cadre évident pour structurer et dynamiser le développement d’un produit, particulièrement numérique. Pourtant, son adoption ne garantit pas systématiquement le succès. Mais que permet réellement Scrum ? Plus important encore, quelles sont les conditions nécessaires à son efficacité et surtout les écueils à éviter pour en faire un véritable atout ?

En savoir plus
Blue sign on a building with several Now What? letters
Thibaut Chieux

Comment prioriser les messages lors du développement d'applications asynchrones avec Symfony Messenger

Le traitement asynchrone offre des avantages tels que la découplage des processus et des temps de réponse plus rapides, mais la gestion des priorités des messages peut s'avérer complexe. Pour traiter des tâches allant de la réinitialisation de mot de passe à des exports complexes, il est essentiel de garantir la livraison rapide des messages critiques. Cet article examine les problèmes fréquents liés au traitement asynchrone et propose des solutions avec Symfony Messenger pour optimiser votre application sans refonte majeure.

En savoir plus
SensioLabs University Courses Annonce La nouvelle formation Master de niveau 3 est disponible sur un fond vert
Jules Daunay

Master Symfony : Devenez un expert de Symfony avec notre nouvelle formation

Améliorez votre maîtrise de Symfony grâce à la nouvelle formation Master de niveau 3 sur Symfony ! Maîtrisez les sujets les plus complexes du framework et développez des compétences approfondies.

En savoir plus
PHP 8.5
Oskar Stark

Quoi de neuf dans PHP 8.5 ? Un aperçu complet

PHP 8.5 sort en novembre 2025 et apporte plusieurs nouvelles fonctionnalités utiles et des améliorations. Cette nouvelle version se concentre sur l'amélioration de l'expérience développeur, de nouvelles fonctions utilitaires et de meilleures capacités de débogage.

En savoir plus
Two images: on the left many cars stuck in a traffic jam with the sign "All directions" above, on the right a blue car moving forward alone on the highway with the sign "Service Subscriber" and a Symfony logo above
Steven Renaux

Les Lazy Services de Symfony : Boostez votre DX en utilisant les Service Subscribers

Optimisez la performance de votre application Symfony et l'expérience développeur ! Apprenez à utiliser les Service Subscribers et les attributs de chargement différé des services afin de réduire l'instanciation rapide, de simplifier les dépendances et de créer un code modulaire et maintenable.

En savoir plus
the surface of the earth seen from the space with city lights forming networks
Imen Ezzine

Les verbes HTTP : votre Guide Complet

Apprenez les bases des verbes HTTP : GET, POST, PUT, DELETE, et plus encore. Cet article vous explique leur fonctionnement, leurs utilisations et les conséquences en matière de sécurité.

En savoir plus
Affiche sur l'interview de Guillaume Loulier
Salsabile El-Khatouri

Dans les coulisses d’une formation SensioLabs

À quoi ressemble une formation Symfony donnée par SensioLabs ? Découvrez-le dans cette interview avec Guillaume Loulier, développeur & formateur passionné, qui nous explique tout sur le fonctionnement des formations officielles sur le framework.

En savoir plus
Toy factory production line
Silas Joisten

Boostez vos tests Symfony avec Zenstruck Foundry

Zenstruck Foundry a révolutionné notre manière d’écrire des tests dans Symfony. Dans cet article, vous apprendrez comment des fabriques expressives, des données de test isolées et une expérience développeur plus fluide nous ont permis d’optimiser nos flux de tests et d’améliorer la productivité.

En savoir plus
Image