Objectif : Cet article montrera comment ajouter des fonctionnalités d'IA à une application Jakarta EE/MicroProfile à l'aide de LangChain4J‑CDI, avec des exemples simples à implémenter qui s'exécutent sur Payara, WildFly, Open Liberty, Helidon, Quarkus ou tout autre environnement d'exécution compatible CDI 4.x. Remarque : Il s'agit d'un article mis à jour par rapport à celui publié dans le magazine JAVAPRO - "04-2025 | Java 25 - Special Edition". Depuis la sortie de LangChain4J-CDI version 1.0.0, des changements mineurs ont été apportés, mais l'architecture fondamentale et l'utilisation de la bibliothèque sont les mêmes.
Langchain4J est une bibliothèque Java qui simplifie l'intégration de l'IA et des LLM et, grâce à sa fonctionnalité de services d'IA, elle fournit une API déclarative et de type sécurisé permettant aux développeurs de définir des interfaces qui représentent les services d'IA, éliminant ainsi les complexités de la communication directe LLM.
LangChain4J‑CDI est une extension CDI qui connecte les composants LangChain4J (modèles de discussion, modèles d'intégration, mémoires, récupérateurs, outils) à votre application à l'aide des annotations Jakarta familières et de MicroProfile Config. Vous déclarez une interface de service AI et l'extension génère et enregistre un bean CDI que vous pouvez injecter n'importe où (bean gérés par CDI, ressources REST, EJB, planificateurs, etc.).
Grâce à ces avantages clés offerts par LangChain4J-CDI, les développeurs d'entreprise bénéficieront de :
@RegisterAIServicel'annotation peut être injectée sous forme de beans CDI.Les principales fonctionnalités fournies par Langchain4J Microprofile :
@RegisterAIServiceannotation annotée sur une interface de service Lanchain4J AI, le proxy du service AI devient un bean détectable CDI prêt à être injecté. LangChain4J-CDI fournit 2 extensions de service CDI parmi lesquelles les développeurs peuvent choisir afin de rendre leur service d'IA CDI détectable : extension portable CDI ou extension compatible CDI Build (introduite dans CDI 4.0 et versions ultérieures).ChatModèle/StreamingChatModèle,ChatMessage,ChatMémoire,ContentRetriever,Fournisseur d'outils(utile pour Model Context Protocol, MCP), et plus encore, sans obliger les développeurs à écrire des constructeurs pour générer de tels éléments.@Réessayer,@Temps mort,@RateLimit,@Retomber, etc).**Veuillez noter :* Langchain4J-CDI est un module développé par les membres de Microprofile, initialement appelé SmallRye-LLM. Il a depuis été donné à Langchain. Le dépôt SmallRye-LLM sur GitHub a été retiré.*
Langchain4J-CDI fournit un exemple concret de création d'un agent d'IA conversationnel pour un système de réservation de voitures. Cette démonstration est inspirée de la conférence perspicace « Java meets AI » de Lize Raes à Devoxx Belgium 2023 (avec d'autres contributions de Jean-François James. La démo originale est de Dmytro Liubarskyi). Les développeurs peuvent voir comment le même exemple est implémenté sur les serveurs d'applications populaires Jakarta EE 10.
Avant de commencer, nous supposerons que vous connaissez les éléments suivants :
Nous utilisons OpenLiberty comme serveur d'applications de choix (vous pouvez parcourir leexemples/liberty-car-bookingexemple à partir de l'exemple de lien fourni ci-dessus), mais vous pouvez utiliser n'importe quel serveur d'applications compatible Jakarta EE / Microprofile avec lequel vous êtes à l'aise (voir les exemples d'autres...
[Courte citation de 8% de l'article original]