Experimenta con Elasticsearch: Sumérgete en nuestros cuadernos de muestra, inicia una prueba gratuita del cloud o prueba Elastic en tu máquina local ahora.
El marco LangChain4j se creó en 2023 con este objetivo:
El objetivo de LangChain4j es simplificar la integración de LLMs en aplicaciones Java.
LangChain4j está proporcionando una forma estándar de:
- crear incrustaciones (vectores) a partir de un contenido dado, por ejemplo un texto
- Almacenar incrustaciones en un almacén de incrustaciones
- Busca vectores similares en la tienda de incrustación
- discute con los LLMs
- usar una memoria de chat para recordar el contexto de una conversación con un LLM
Esta lista no es exhaustiva y la comunidad de LangChain4j siempre está implementando nuevas funcionalidades.
Esta entrada cubrirá las primeras partes principales del marco.
Agregando LangChain4j OpenAI a nuestro proyecto
Como en todos los proyectos Java, es solo cuestión de dependencias. Aquí usaremos Maven, pero lo mismo podría lograr con cualquier otro gestor de dependencias.
Como primer paso para el proyecto que queremos construir aquí, usaremos OpenAI, así que solo necesitamos agregar el langchain4j-open-ai artefacto:
Para el resto del código usaremos nuestra propia clave API, que puedes obtener registrándote en OpenAI, o la que proporciona el proyecto LangChain4j solo para demostraciones:
Ahora podemos crear una instancia de nuestro ChatLanguageModel:
Y finalmente podemos hacer una pregunta sencilla y obtener la respuesta:
La respuesta dada podría ser algo así:
Si quieres ejecutar este código, por favor echa un vistazo a la clase Step1AiChatTest.java .
Aportando más contexto con langchain4j
Vamos a agregar el artefacto langchain4j :
Este está proporcionando un conjunto de herramientas que puede ayudarnos a construir una integración LLM más avanzada para construir nuestro asistente. Aquí simplemente crearemos una interfaz Assistant que proporcione el método chat que llamará automáticamente a la ChatLanguageModel que definimos antes:
Solo tenemos que pedirle a LangChain4j AiServices clase que construya una instancia para nosotros:
Y luego llama al método chat(String) :
Esto es tener el mismo comportamiento que antes. ¿Entonces por qué cambiamos el código? En primer lugar, es más elegante, pero más que eso, ahora puedes dar algunas instrucciones al LLM usando anotaciones sencillas:
Esto ahora es dar:
Si quieres ejecutar este código, por favor echa un vistazo a la clase Step2AssistantTest.java .
Cambiar a otro LLM: langchain4j-ollama
Podemos aprovechar el gran proyecto Ollama. Ayuda tener un LLM localmente en tu máquina.
Vamos a agregar el artefacto langchain4j-ollama :
Como ejecutamos el código de ejemplo usando pruebas, vamos a agregar Testcontainers a nuestro proyecto:
Ahora podemos iniciar/detener contenedores Docker:
Simplemente tenemos que cambiar el objeto model para que se convierta en un OllamaChatModel en lugar del OpenAiChatModel que usamos antes:
Ten en cuenta que puede tardar un tiempo en extraer la imagen con su modelo, pero luego de un rato, podrías obtener la respuesta:
Mejor con la memoria
Si hacemos varias preguntas, por defecto el sistema no recordará las preguntas frecuentes anteriores. Así que si preguntamos luego de la primera pregunta "¿Cuándo nació?", Nuestra solicitud responderá:
Lo cual es una tontería. En su lugar, deberíamos usar Chat Memory:
Hacer las mismas preguntas ahora da una respuesta significativa:
Conclusión
En la próxima publicación, descubriremos cómo podemos hacer preguntas a nuestro conjunto de datos privado usando Elasticsearch como almacén de incrustaciones. Eso nos dará una forma de transformar nuestra búsqueda de aplicaciones al siguiente nivel.
Preguntas frecuentes
¿Qué es LangChain4j?
LangChain4j (LangChain para Java) es un conjunto de herramientas poderosa para construir tu aplicación RAG en Java puro.




