Translate

Mostrando las entradas con la etiqueta LangChain4j. Mostrar todas las entradas
Mostrando las entradas con la etiqueta LangChain4j. Mostrar todas las entradas

miércoles, 8 de julio de 2026

Construyendo Aplicaciones Inteligentes con LangChain4j y Spring boot


LangChain4j es una poderosa biblioteca para crear aplicaciones que integran grandes modelos de lenguaje (LLMs) de manera estructurada y eficiente. Basado en el éxito de LangChain en el ecosistema de Python, LangChain4j lleva estas capacidades al mundo de Java, facilitando el desarrollo de aplicaciones que usan IA generativa.

Ya hablamos de LangChain4j

Creamos un proyecto básico de Spring Boot con módulos como Web y Configuration y luego agregamos la dependencia con maven:

   <dependency>

       <groupId>io.github.langchain4j</groupId>

       <artifactId>langchain4j</artifactId>

       <version>0.2.0</version>

   </dependency>


Configura tu proveedor de modelo, como OpenAI:


import io.github.langchain4j.model.openai.OpenAiChatModel;

import org.springframework.context.annotation.Bean;

import org.springframework.context.annotation.Configuration;


@Configuration

public class LangChainConfig {


    @Bean

    public OpenAiChatModel openAiChatModel() {

        return OpenAiChatModel.builder()

                .apiKey("TU_CLAVE_API")

                .temperature(0.7)

                .maxTokens(500)

                .build();

    }

}


Implemente un controlador para manejar las solicitudes de los usuarios.


import io.github.langchain4j.model.openai.OpenAiChatModel;

import org.springframework.web.bind.annotation.*;


@RestController

@RequestMapping("/api/chat")

public class ChatController {


    private final OpenAiChatModel chatModel;


    public ChatController(OpenAiChatModel chatModel) {

        this.chatModel = chatModel;

    }


    @PostMapping

    public String chat(@RequestBody String userInput) {

        return chatModel.chat(userInput).getContent();

    }

}


Ejecuta la aplicación Spring Boot y envía una solicitud POST a `/api/chat`:


curl -X POST http://localhost:8080/api/chat LangChain es un marco diseñado para trabajar con modelos de lenguaje para crear aplicaciones avanzadas de IA.

Para agregar memoria a las conversaciones:


import io.github.langchain4j.memory.ChatMemory;

import io.github.langchain4j.memory.InMemoryChatMemory;

import org.springframework.context.annotation.Bean;


@Configuration

public class LangChainConfig {


    @Bean

    public ChatMemory chatMemory() {

        return new InMemoryChatMemory();

    }

}


En el controlador, utiliza el ChatMemory para mantener el contexto entre solicitudes:


import io.github.langchain4j.memory.ChatMemory;


@RestController

@RequestMapping("/api/chat")

public class ChatController {


    private final OpenAiChatModel chatModel;

    private final ChatMemory chatMemory;


    public ChatController(OpenAiChatModel chatModel, ChatMemory chatMemory) {

        this.chatModel = chatModel;

        this.chatMemory = chatMemory;

    }


    @PostMapping

    public String chat(@RequestBody String userInput) {

        chatMemory.addUserMessage(userInput);

        String response = chatModel.chat(userInput).getContent();

        chatMemory.addAiMessage(response);

        return response;

    }

}


LangChain4j es una herramienta poderosa para desarrollar aplicaciones inteligentes en Java. Combinado con Spring, puedes crear servicios escalables que aprovechen lo mejor de la IA generativa. Desde aplicaciones conversacionales hasta sistemas de soporte, las posibilidades son infinitas.

sábado, 14 de diciembre de 2024

LangChain4j: IA Generativa en Java


LangChain4j es un poderoso framework para construir aplicaciones de inteligencia artificial generativa en Java. Inspirado en el popular LangChain para Python y JavaScript, este marco permite integrar modelos de lenguaje como OpenAI GPT, Llama, o Hugging Face con herramientas avanzadas, flujos de trabajo y procesamiento dinámico.

LangChain4j proporciona herramientas para manejar modelos de lenguaje de manera modular y escalable. Algunas de sus características destacadas incluyen:

  • Integración de Modelos de Lenguaje (LLMs): Interactúa fácilmente con GPT-4, GPT-3, o modelos personalizados.
  • Encadenamiento de Operaciones: Diseña flujos complejos combinando varios modelos y herramientas.
  • Contexto Extendido: Utiliza almacenamiento vectorial para manejar contextos largos.
  • Herramientas de Razonamiento y Extracción: Construye aplicaciones como chatbots avanzados, asistentes de búsqueda, o sistemas de recomendación.

Antes de comenzar, agrega la dependencia en tu proyecto Maven o Gradle:


Veamos la dependencia de maven:

<dependency>

    <groupId>com.langchain4j</groupId>

    <artifactId>langchain4j-core</artifactId>

    <version>1.0.0</version>

</dependency>


o gradle:


implementation 'com.langchain4j:langchain4j-core:1.0.0'


Veamos un cliente básico para interactuar con OpenAI GPT:


import com.langchain4j.LangChain;

import com.langchain4j.llm.OpenAiClient;


public class LangChainExample {

    public static void main(String[] args) {

        OpenAiClient client = OpenAiClient.builder()

                .apiKey("tu-api-key")

                .build();


        String response = client.chat("¿Qué es LangChain4j?");

        System.out.println("Respuesta: " + response);

    }

}


Este ejemplo muestra cómo enviar una consulta y recibir una respuesta usando OpenAI GPT.

LangChain4j soporta herramientas como cadenas de procesamiento (`Chains`) para flujos más complejos.


Veamos un ejemplo de un Flujo con Memoria:


import com.langchain4j.chain.ConversationChain;

import com.langchain4j.memory.InMemoryMemory;


public class ConversationExample {

    public static void main(String[] args) {

        ConversationChain conversation = ConversationChain.builder()

                .llm(OpenAiClient.builder().apiKey("tu-api-key").build())

                .memory(new InMemoryMemory())

                .build();


        System.out.println(conversation.chat("Hola, ¿quién eres?"));

        System.out.println(conversation.chat("¿Recuerdas mi nombre?"));

    }

}


Aquí, InMemoryMemory permite que el modelo recuerde las interacciones previas.


LangChain4j admite almacenamiento vectorial, útil para aplicaciones de búsqueda semántica o contextos largos.


import com.langchain4j.vector.PineconeVectorStore;


public class VectorStoreExample {

    public static void main(String[] args) {

        PineconeVectorStore vectorStore = PineconeVectorStore.builder()

                .apiKey("tu-api-key")

                .environment("us-west1-gcp")

                .build();


        vectorStore.add("doc1", "Este es un ejemplo de texto.");

        System.out.println(vectorStore.search("texto relacionado", 1));

    }

}


LangChain4j extiende las capacidades de los modelos de lenguaje para aplicaciones empresariales en Java. Con su enfoque modular, herramientas avanzadas, y soporte para almacenamiento vectorial, se posiciona como una opción clave para proyectos de IA generativa en el ecosistema Java.

Y falto decir que se puede integrar con spring y otros frameworks, pero eso lo voy a dejar para otro post... 

Dejo link: https://docs.langchain4j.dev/