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

· Silas Joisten · Expertise · 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

Black green and golden computer RAM on a dark ground
Clément Bertillon

Donnez une mémoire durable à vos agents IA : le pattern LLM Wiki appliqué dans Symfony

Chaque développeur travaillant quotidiennement avec des assistants comme Claude Code, Codex ou Antigravity connaît cette frustration : ouvrir un prompt sur un projet et devoir, une fois de plus, tout réexpliquer. L'agent ignore vos préférences d'architecture Symfony, vos standards PHP, la façon dont vous structurez vos DTOs, vos règles de nommage Doctrine ou les choix techniques validés sur un autre dépôt la semaine passée. Vous passez alors plus de temps à rédiger des préambules dans vos prompts qu'à concevoir du code à valeur ajoutée.

En savoir plus : Donnez une mémoire durable à vos agents IA : le pattern LLM Wiki appliqué dans Symfony
Fall leaf hanging on a tree branch
Jules Daunay

L’agenda SensioLabs de la fin d’année 2026 : où nous croiser cet automne ?

L’été touche à sa fin, mais la saison des conférences PHP et Symfony ne fait que commencer ! Entre conférences internationales, événements partenaires, meetups locaux et initiatives pour l'accessibilité, l'équipe de SensioLabs, créateur de Symfony, va parcourir la France et l'Europe d'ici la fin de l'année 🍂

En savoir plus : L’agenda SensioLabs de la fin d’année 2026 : où nous croiser cet automne ?
Modern editorial illustration of TYPO3 DevDays excitement with abstract purple-accented conference and community elements
Stiven Llupa

Un moment génial : retour sur les TYPO3 DevDays

Un mauvais détour à travers une forêt, un champ de maïs, puis une conférence tech. Aux TYPO3 Developer Days, j'ai découvert à quel point les communautés TYPO3 et Symfony sont liées, par la technologie, les défis et un principe essentiel : construire pour les utilisateurs.

En savoir plus : Un moment génial : retour sur les TYPO3 DevDays
Abstract editorial concept of a Duration class, showing elapsed time and precise time intervals in modern PHP coding
Oskar Stark

PHP 8.6 Duration : une petite classe pour corriger une erreur récurrente

PHP 8.6 ajoute une classe Duration dédiée. En apparence, cette nouveauté peut sembler mineure, mais elle permettra enfin d'avoir un type de données clair pour le temps écoulé, plutôt que de surcharger la classe DateInterval, les entiers et l’arithmétique sur les timestamps.

En savoir plus : PHP 8.6 Duration : une petite classe pour corriger une erreur récurrente
Abstract editorial illustration of PHP 8.6 JSON parsing with a highlighted error position and subtle purple accents
Oskar Stark

PHP 8.6 : Trouver la position d’une erreur JSON lors du décodage

PHP 8.6 apporte une amélioration mineure mais pratique pour le décodage JSON : il est désormais possible d'obtenir la position exacte de l'erreur en cas d'échec. Le débogage des payloads incorrects est ainsi grandement facilité.

En savoir plus : PHP 8.6 : Trouver la position d’une erreur JSON lors du décodage
Modern abstract editorial scene with cleaner, safer sorting API concepts and subtle purple accents
Oskar Stark

PHP 8.6 SortDirection : des API de tri plus claires et plus sûres pour PHP

PHP 8.6 introduit `SortDirection`, une évolution utile qui rend les API de tri plus claires. Voici ce que cela change, pourquoi c'est important et comment l'utiliser en pratique.

En savoir plus : PHP 8.6 SortDirection : des API de tri plus claires et plus sûres pour PHP
Large tree under the sunlight
Mathieu Santostefano

Multipliez votre vitesse de développement avec l’IA grâce aux Git Worktrees

Fini le jonglage fastidieux entre git stash et les réinstallations de dépendances. Découvrez comment les Git Worktrees révolutionnent votre expérience développeur en permettant à vos agents IA de travailler sur une branche isolée pendant que vous restez concentré sur votre code. Une méthode indispensable pour mener vos tâches en parallèle et multiplier votre vitesse d'exécution sans friction.

En savoir plus : Multipliez votre vitesse de développement avec l’IA grâce aux Git Worktrees
A man sculpting a rock with PDF written on it
Steven Renaux

Créer un Custom Builder - L'histoire du GotenbergBundle

Nous avons déjà vu comment générer un fichier PDF en quelques lignes de code à l'aide de Gotenberg et de GotenbergBundle, un bundle Symfony. Mais que faire lorsque votre application doit générer plusieurs fichiers PDF différents, chacun avec sa propre mise en page, ses propres styles et ses propres données ?

En savoir plus : Créer un Custom Builder - L'histoire du GotenbergBundle