Présentation de LangChain4j pour simplifier l'intégration de LLM dans les applications Java

LangChain4j (LangChain pour Java) est un ensemble d'outils puissants pour construire votre application RAG en Java simple.

Passez à la pratique avec Elasticsearch : explorez nos notebooks d’exemples, lancez un essai gratuit sur le cloud ou testez Elastic dès maintenant sur votre machine locale.

Le cadre LangChain4j a été créé en 2023 avec cet objectif:

L'objectif de LangChain4j est de simplifier l'intégration des LLM dans les applications Java.

LangChain4j fournit une méthode standard pour :

  • créer des embeddings (vecteurs) à partir d'un contenu donné, par exemple un texte
  • stocker les embeddings dans un magasin d'embeddings
  • recherche de vecteurs similaires dans le magasin d'intégration
  • discuter avec les LLM
  • utiliser une mémoire de chat pour se souvenir du contexte d'une discussion avec un LLM

Cette liste n'est pas exhaustive et la communauté LangChain4j est toujours en train d'implémenter de nouvelles fonctionnalités.

Ce billet couvrira les premières parties principales du cadre.

Ajouter LangChain4j OpenAI à notre projet

Comme dans tous les projets Java, c'est juste une question de dépendances. Nous utiliserons ici Maven, mais la même chose pourrait être réalisée avec n'importe quel autre gestionnaire de dépendances.

Comme première étape du projet que nous voulons construire ici, nous utiliserons OpenAI, il nous suffit donc d'ajouter l'artefact langchain4j-open-ai:

Pour le reste du code, nous utiliserons soit notre propre clé API, que vous pouvez obtenir en créant un compte auprès d'OpenAI, soit celle fournie par le projet LangChain4j à des fins de démonstration uniquement :

Nous pouvons maintenant créer une instance de notre ChatLanguageModel :

Enfin, nous pouvons poser une question simple et obtenir une réponse :

La réponse donnée pourrait être quelque chose comme :

Si vous souhaitez exécuter ce code, consultez la classe Step1AiChatTest.java.

Fournir plus de contexte avec langchain4j

Ajoutons l'artefact langchain4j:

Celui-ci fournit un ensemble d'outils qui peuvent nous aider à construire une intégration LLM plus avancée pour construire notre assistant. Ici, nous allons simplement créer une interface Assistant qui fournit la méthode chat qui appellera automatiquement la méthode ChatLanguageModel que nous avons définie plus tôt :

Il suffit de demander à la classe LangChain4j AiServices de construire une instance pour nous :

Puis appeler la méthode chat(String):

Le comportement est le même qu'auparavant. Pourquoi avons-nous donc modifié le code ? Tout d'abord, c'est plus élégant, mais en plus, vous pouvez maintenant donner des instructions au LLM à l'aide de simples annotations :

C'est maintenant chose faite :

Si vous souhaitez exécuter ce code, consultez la classe Step2AssistantTest.java.

Passer à un autre LLM : langchain4j-ollama

Nous pouvons utiliser le grand projet Ollama. Il est utile d'exécuter un LLM localement sur votre machine.

Ajoutons l'artefact langchain4j-ollama:

Comme nous exécutons l'exemple de code à l'aide de tests, ajoutons des conteneurs de test à notre projet :

Nous pouvons maintenant démarrer/arrêter les conteneurs Docker :

Nous "devons simplement" modifier l'objet model pour qu'il devienne un OllamaChatModel au lieu du OpenAiChatModel que nous utilisions précédemment :

Notez que l'extraction de l'image avec son modèle peut prendre un certain temps, mais au bout d'un moment, vous pouvez obtenir la réponse :

Meilleure mémoire

Si nous posons plusieurs questions, par défaut le système ne se souviendra pas des questions et réponses précédentes. Ainsi, si nous posons la question suivante : "Quand est-il né ?", notre application répondra :

Ce qui est absurde. Nous devrions plutôt utiliser la mémoire de chat :

En posant les mêmes questions maintenant, on obtient une réponse significative :

Conclusion

Dans le prochain article, nous découvrirons comment poser des questions à notre ensemble de données privé en utilisant Elasticsearch comme magasin d'intégration. Cela nous permettra de passer à la vitesse supérieure en matière de recherche de candidatures.

Questions fréquentes

Qu'est-ce que LangChain4j ?

LangChain4j (LangChain pour Java) est un ensemble d'outils puissants pour construire votre application RAG en Java simple.

Pour aller plus loin

Prêt à créer des expériences de recherche d'exception ?

Une recherche suffisamment avancée ne se fait pas avec les efforts d'une seule personne. Elasticsearch est alimenté par des data scientists, des ML ops, des ingénieurs et bien d'autres qui sont tout aussi passionnés par la recherche que vous. Mettons-nous en relation et travaillons ensemble pour construire l'expérience de recherche magique qui vous permettra d'obtenir les résultats que vous souhaitez.

Jugez-en par vous-même