Apresentamos o LangChain4j para simplificar a integração do LLM em aplicações Java.

LangChain4j (LangChain para Java) é um conjunto de ferramentas poderoso para construir sua aplicação RAG em Java puro.

Experimente o Elasticsearch na prática: Mergulhe em nossos notebooks de amostra, inicie um teste gratuito na nuvem ou experimente o Elastic em sua máquina local agora mesmo.

O framework LangChain4j foi criado em 2023 com este objetivo:

O objetivo do LangChain4j é simplificar a integração de LLMs em aplicações Java.

LangChain4j oferece uma maneira padronizada de:

  • Criar representações vetoriais (embeddings) a partir de um determinado conteúdo, digamos, um texto, por exemplo.
  • armazenar embeddings em um armazenamento de embeddings
  • pesquisar vetores semelhantes no armazenamento de embeddings
  • discutir com mestres em direito
  • Use uma memória de bate-papo para lembrar o contexto de uma discussão com um mestre em Direito.

Esta lista não é exaustiva e a comunidade LangChain4j está sempre implementando novos recursos.

Esta postagem abordará as primeiras partes principais da estrutura.

Adicionando LangChain4j OpenAI ao nosso projeto

Como em todos os projetos Java, é apenas uma questão de dependências. Aqui usaremos o Maven, mas o mesmo resultado poderia ser obtido com qualquer outro gerenciador de dependências.

Como primeiro passo para o projeto que queremos construir aqui, usaremos o OpenAI, então precisamos apenas adicionar o artefato langchain4j-open-ai :

Para o restante do código, usaremos nossa própria chave de API, que você pode obter criando uma conta na OpenAI, ou a fornecida pelo projeto LangChain4j apenas para fins de demonstração:

Agora podemos criar uma instância do nosso ChatLanguageModel:

E, finalmente, podemos fazer uma pergunta simples e obter a resposta:

A resposta fornecida poderia ser algo como:

Se você quiser executar este código, consulte a classe Step1AiChatTest.java .

Fornecendo mais contexto com langchain4j

Vamos adicionar o artefato langchain4j :

Esta ferramenta oferece um conjunto de recursos que pode nos ajudar a construir uma integração LLM mais avançada para criar nosso assistente. Aqui, criaremos uma interface Assistant que fornece o método chat , o qual chamará automaticamente o ChatLanguageModel que definimos anteriormente:

Basta pedirmos à classe LangChain4j AiServices para construir uma instância para nós:

Em seguida, chame o método chat(String) :

Está apresentando o mesmo comportamento de antes. Então, por que alteramos o código? Em primeiro lugar, é mais elegante, mas além disso, agora você pode dar instruções ao LLM usando anotações simples:

Isso está resultando em:

Se você quiser executar este código, consulte a classe Step2AssistantTest.java .

Mudando para outro LLM: langchain4j-ollama

Podemos usar o excelente projeto Ollama. Executar um LLM localmente em sua máquina pode ser útil.

Vamos adicionar o artefato langchain4j-ollama :

Como estamos executando o código de exemplo usando testes, vamos adicionar Testcontainers ao nosso projeto:

Agora podemos iniciar/parar contêineres Docker:

Nós "apenas" precisamos mudar o objeto model para se tornar um OllamaChatModel em vez do OpenAiChatModel que usamos anteriormente:

Observe que pode levar algum tempo para obter a imagem com seu modelo, mas depois de um tempo, você poderá obter a resposta:

Melhor com memória

Se fizermos várias perguntas, por padrão o sistema não se lembrará das perguntas e respostas anteriores. Então, se perguntarmos depois da primeira pergunta "Quando ele nasceu?", Nosso aplicativo responderá:

O que é um absurdo. Em vez disso, devemos usar a Memória de Chat:

Executar as mesmas perguntas agora fornece uma resposta significativa:

Conclusão

Na próxima publicação, descobriremos como podemos fazer perguntas ao nosso conjunto de dados privado usando o Elasticsearch como repositório de embeddings. Isso nos dará uma maneira de elevar nossa busca de aplicativos a um novo patamar.

Perguntas frequentes

O que é LangChain4j?

LangChain4j (LangChain para Java) é um conjunto de ferramentas poderoso para construir sua aplicação RAG em Java puro.

Conteúdo relacionado

Pronto para criar buscas de última geração?

Uma pesquisa suficientemente avançada não se consegue apenas com o esforço de uma só pessoa. O Elasticsearch é impulsionado por cientistas de dados, especialistas em operações de aprendizado de máquina, engenheiros e muitos outros que são tão apaixonados por buscas quanto você. Vamos nos conectar e trabalhar juntos para construir a experiência de busca mágica que lhe trará os resultados desejados.

Experimente você mesmo(a)