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.

Coloque a mão na massa com o Elasticsearch: mergulhe nos nossos notebooks de amostra no repositório Elasticsearch Labs, inicie uma avaliação gratuita na nuvem ou conheça o Elastic na sua máquina local agora.

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.

Quão útil foi este conteúdo?

Não útil

Um pouco útil

Muito útil

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)