LangChain4j : libérez le potentiel des modèles de langage en Java

Rédigé par : Rania Chaari

Introduction

L’intelligence artificielle et les chatbots ont transformé la manière dont les entreprises interagissent avec leurs clients. Avec l’augmentation exponentielle des données et l’évolution rapide des technologies, l’intégration de solutions IA et des chatbots devient essentielle pour rester compétitif. Pour autant, ces projets ont toujours été difficiles à développer, car ils nécessitent d’avoir accès à des informations en temps réel contenues dans des documents ou des bases de données.

Dans cet article, nous aborderons les particularités de LangChain, un framework innovant, conçu pour faciliter et améliorer le développement d’applications utilisant des modèles de langage à grande échelle (LLM). Nous mettrons particulièrement l’accent sur LangChain 4j, la dernière itération de leur technologie.

Qu’est-ce que LangChain ?

LangChain est un framework open-source modulaire lancé en 2022 par Harrison Chase et Ankush Gola. Il agit principalement comme une solution logicielle dont l’objectif est de standardiser et de simplifier le développement d’applications qui utilisent des modèles de langage à grande échelle (LLM), tels que les chatbots, la recherche intelligente, les réponses aux questions ainsi que les services de synthèse et les agents conversationnels. LangChain est principalement utilisé avec Python, sa langue principale de développement, mais il a aussi des intégrations pour JavaScript/TypeScript.

LangChain4j : l’implémentation Java de LangChain

LangChain 4j est donc l’adaptation de LangChain pour le langage Java, offrant les mêmes avantages en terme de simplification et de standardisation du développement d’applications utilisant des LLM. Parmi ses avantages, nous retrouvons notamment :

  • Interopérabilité et intégration : LangChain4j s’intègre facilement avec les projets Java existants, permettant une adoption rapide et sans friction.
  • Performance et scalabilité : conçu pour les applications à haute performance, LangChain4j offre une exécution efficace des workflows, optimisant ainsi les ressources et la scalabilité.
  • Simplicité d’utilisation : avec une API claire et bien documentée, LangChain4j simplifie la création et la gestion des chaînes de traitement complexes.
  • Gestion robuste des erreurs : la bibliothèque inclut des mécanismes avancés de gestion des erreurs, garantissant la fiabilité et la stabilité des applications.

Exemples d’utilisation de LangChain 4j

1 . Import de la librairie

Pour Maven

Pour importer la librairie, ajoutez les dépendances suivantes à votre fichier ‘pom.xml’ :

<dependencies>
<!– Dépendance pour l’intégration avec OpenAI –>

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai</artifactId>
<version>0.31.0</version>

</dependency>

 <!– Dépendance pour l’API de haut niveau des services d’IA –>

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j</artifactId>
<version>0.31.0</version>
</dependency>
</dependencies>

Pour Spring Boot

Pour les applications Spring Boot, utilisez la dépendance Maven ci-dessous pour une configuration automatique :

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
<version>0.31.0</version>
</dependency>

À noter que lorsque vous incluez cette dépendance, Spring Boot crée et fournit automatiquement les beans ‘ChatLanguageModel’ et ‘StreamingChatLanguageModel’ en fonction des propriétés disponibles dans le fichier ‘application.properties’.

Exemple de clés de configuration :

<dependency>
<groupId>dev.langchain4j</groupId>
<artifactId>langchain4j-open-ai-spring-boot-starter</artifactId>
<version>0.31.0</version>
</dependency>

2 . Exemple d’API de bas niveau

Voici un premier exemple d’utilisation des API LangChain4j de bas niveau dans un contexte Web Spring Boot :

/**

* This is an example of using a {@link ChatLanguageModel}, a low-level LangChain4j API.

*/

@RestController

class ChatLanguageModelController {

@Autowired

private ChatLanguageModel chatLanguageModel;



@GetMapping(« /model »)
public String model(@RequestParam(value = « message », defaultValue = « Hello ») final String message)
{
 return chatLanguageModel.generate(message);
}
}

3 . Exemple d’API de haut niveau

Dans l’exemple ci-dessous, nous avons défini le message système suivant : « You are a polite assistant ». Ceci représente le message de contexte qui permet d’encadrer le comportement de l’assistant. En background, ce message sera envoyé en tant que ‘SystemMessage’ au LLM avec le ‘UserMessage’.

@AiService

interface Assistant {
@SystemMessage(« You are a polite assistant »)
String chat(String userMessage);

}

‘ChatMemory’ est une composante utilisée pour gérer la mémoire conversationnelle d’un assistant. Elle conserve une trace des messages échangés dans une session de chat. Dans l’exemple ci-dessous, nous avons limité le nombre de message à sauvegarder à 10.

@Configuration

class AssistantConfiguration {

/**

* This chat memory will be used by an {@link Assistant}

*/
@Bean

ChatMemory chatMemory() {

return MessageWindowChatMemory.withMaxMessages(10);
}
}

Pour intégrer l’assistant dans une application web utilisant Spring Boot :

/**

* This is an example of using an {@link AiService}, a high-level LangChain4j API.

*/

@RestController

class AssistantController {
@Autowired

private Assistant assistant;



@GetMapping(« /assistant »)
public String assistant(@RequestParam(value = « message », defaultValue = « What is the time now? »)
final String message) {
return assistant.chat(message);
}
}

Enfin, il est également possible d’ajuster certains paramètres en fonction du modèle et du fournisseur LLM choisi, au niceay de ‘application.yml’. Cela peut inclure des configurations spécifiques telles que les clés API, les options de personnalisation du modèle, ou d’autres paramètres de performance et de comportement.

langchain4j.open-ai.chat-model.api-key=${OPENAI_API_KEY}

langchain4j.open-ai.chat-model.model-name=gpt-3.5-turbo

langchain4j.open-ai.chat-model.temperature=0.7

Bonnes pratiques

Voici quelques éléments figurant parmi les bonnes pratiques que nous recommandons :

  • Sécurité des API Keys : assurez-vous de sécuriser vos clés API en les stockant dans des variables d’environnement ou des services de gestion de secrets, plutôt que de les hardcoder dans votre code source.
  • Gestion des erreurs : utilisez les mécanismes de gestion des erreurs de LangChain4j pour gérer les erreurs de manière proactive et garantir la stabilité de vos applications. Par exemple, implémentez des retries avec backoff pour les appels réseau échoués.

Cas d’utilisation avancés

Retrouvez ci-dessous deux exemples de cas d’utilisation avancés de LangChain4j :

  • Chatbots avancés : utilisez LangChain4j pour créer des chatbots avancés capables de comprendre le contexte et de fournir des réponses personnalisées en temps réel. Vous pouvez par exemple intégrer ces chatbots dans des applications de service client pour améliorer l’expérience utilisateur.
  • Analyse de sentiments : implémentez des workflows d’analyse de sentiments pour surveiller les mentions d’une marque sur les réseaux sociaux et répondre proactivement aux commentaires négatifs.

Intégration

Enfin, pour aller plus loin, cette section offre une vue d’ensemble des capacités d’intégration prêtes à l’emploi et des modèles pris en charge par chaque fournisseur de LLM supporté par LangChain4j.

1 . Capacités

  • Embeddings : implémentation des modèles d’embeddings textuels.
  • Function Calling : permet l’appel de fonctions en tant qu’outil.
  • Image generation : création d’images réalistes à partir de texte.
  • Native image : utilisable pour la compilation AOT avec GraalVM.
  • Scoring : réorganisation des résultats des modèles.
  • Streaming Completion : permet de streamer la réponse du modèle.
  • Sync Completion : supporte les modèles de complétion textuelle et de chat.

2 . Vue d’ensemble

LLM prises en charge par LangChain4j
Tableau présentant les LLM prises en charge par LangChain4j, source : documentation LangChain4j

Références et ressources complémentaires

À propos de l’auteur
Photo de profil Linkedin de Adnene Hamdouni

RANIA CHAARI,

Icon linkedIn

Partager