Integrar LLM no Spring Boot com LangChain4j
Como conectar modelos IA de linguagem natural (LLMs) em projetos Java, usando Spring Boot, API OpenAI e rodando offline com Ollama. A integração de IA nunca foi tão
Por que isso é importante
Integrar LLM Spring Boot com LangChain4j (ou Spring AI): interface única de chat/completions, backends OpenAI cloud e Ollama local, prompts versionados, timeout e circuit breaker. Sync só em chat curto; async/fila sob carga — API keys só em secret manager.
Leitura relacionada: curso grátis de Spring Boot · curso de Java para iniciantes · aprenda isso no Spring · programar com IA sem perder a lógica · comparativo de AI coding tools.
O que mudou no cenário de Inteligência Artificial?
Para integrar LLM no Spring Boot hoje: escolha LangChain4j ou Spring AI, exponha um serviço de chat atrás de interface única e suporte OpenAI cloud + Ollama local com timeout e custo sob controle.
Atenção
O uso intensivo de LLMs pode exigir infraestrutura compatível, especialmente em processamento local. Sempre avalie a capacidade do seu hardware antes de usar modelos grandes na sua máquina.
Entendendo LLMs: O que são e como funcionam?
LLM (Large Language Model) gera texto a partir de prompts; na app Java você chama completions/chat via SDK ou LangChain4j — com limites, retries e sem vazar secrets nos logs.
Info extra
LLMs utilizam processamento paralelo, explorando GPUs com arquitetura SIMMD (Single Instruction, Multiple Data), aumentando muito a velocidade na manipulação de vetores e matrizes.
Modelos de Engenharia de Prompt: Básico, Intermediário e Avançado
Ao integrar LLMs na sua aplicação, você pode optar por diferentes estratégias de prompt. No modo básico, não há contexto: cada mensagem gera uma resposta independente. O modo intermediário inclui dados adicionais para respostas mais precisas. Já o avançado implementa histórico de conversas (memória de chat), permitindo à IA lembrar e referenciar interações anteriores, tornando a experiência muito mais fluida.
Dica de uso
Modelos com memória de chat são indicados para chatbots, sistemas de suporte e assistentes que precisam manter contexto entre diferentes perguntas dos usuários.
Integrando LLMs no Spring Boot com LangChain4j
LangChain4j no Spring Boot: configure o model (OpenAI ou Ollama), injete o serviço e versionar prompts. Alternativa: Spring AI no ecossistema Spring — escolha pelo time, sem benchmark inventado.
Atenção
Sempre utilize as versões atualizadas das dependências no seu projeto para garantir compatibilidade e segurança, especialmente ao trabalhar com IA generativa.
Tutorial passo-a-passo: Integrando OpenAI GPT no seu projeto
Siga o guia prático abaixo para colocar seu sistema Java Spring Boot conversando com a API do ChatGPT (OpenAI):
langchain4j.openai.api-key=YOUR_KEY/chat para enviar mensagens e receber respostas da LLM.Problemas comuns: Erros de cota e custos
APIs da OpenAI e outros provedores normalmente exigem pagamento conforme uso. Se você exceder sua cota gratuita, verá erros como 429 "Too Many Requests". Para continuar, é necessário assinar um plano ou adicionar pagamento, embora muitos provedores ofereçam crédito de teste para novos usuários.
Erro comum
Se receber o erro <code>429 Too Many Requests</code> , verifique a utilização da sua API OpenAI na área de Billing e recarregue seus créditos.
Alternativa offline e gratuita: Rodando LLMs localmente com Ollama
Para quem deseja rodar modelos LLMs sem custos em nuvem e 100% offline, a ferramenta Ollama é uma solução poderosa. Com ela, é possível baixar e executar modelos ajustes diretamente no computador, integrando via API local com as bibliotecas Java.
ollama pull ollama3 (ou outro modelo de sua preferência).application.properties com o endpoint: langchain4j.openai.base-url=http://localhost:11434/v1 e defina o
modelo desejado.Atenção
Rodar LLMs localmente pode consumir muita RAM e processamento. Verifique os requisitos para cada modelo em <a href="https://ollama.com/library">Ollama Library</a> antes de iniciar.
Spring Boot: Expondo endpoints RESTfully para sua IA
Ao criar um Controller, exponha endpoints claros, como <code>/chat</code> , que recebam prompts por parâmetro e retornem respostas da IA. Isso permite integrar facilmente clientes web, mobile e automações, democratizando o uso da IA para diferentes aplicações.
Testando sua API com Postman ou HTTP Request
Para simular requisições, utilize ferramentas como o Postman ou os próprios requests HTTP via sua IDE (ex: comandos .http no IntelliJ). Envie GET para <code>localhost:8080/chat?mensagem=Sua mensagem</code> e analise as respostas geradas pela IA, validando toda a integração.
Dica prática
Crie scripts de testes HTTP para automatizar cenários de interação e garantir que o endpoint responde corretamente.
OpenAI na nuvem ou Ollama local
OpenAI (Cloud)
Processamento via API remota da OpenAI, ideal para alta disponibilidade
Prós
- Escalabilidade imediata
- Últimos modelos de ponta disponíveis
- Infraestrutura gerenciada
Contras
- Custos variáveis
- Requer conexão constante com internet
- Depende da política e quota do provedor
Ollama (Local)
Execução dos modelos open source no seu próprio hardware
Prós
- Zero custos recorrentes
- Controle total dos dados e privacidade
- Funciona offline
Contras
- Depende da sua infraestrutura
- Limite em performance/modelo conforme hardware
Spring AI ou LangChain4j: quando escolher
Spring AI
Encaixa em shops já 100% Spring (Boot 3/4, auto-config, Observation)
Prós
- First-class no ecossistema Spring
- Auto-config e Observation naturais
Contras
- Menos portável fora do Spring
- Curva se o time não é Spring-only
LangChain4j
Foco deste guia: @AiService, ChatModel e troca de provedores
Prós
- @AiService com menos cerimônia
- Troca OpenAI/Ollama mais direta
- Útil multi-framework
Contras
- Menos “Spring nativo” que Spring AI
- Você monta mais a higiene de prod
Critério prático: time só-Spring e quer “first-class Spring” → avalie Spring AI. Precisa de portabilidade de provedor e @AiService rápido → LangChain4j. Não há sponsor: escolha pela curva do time. Sem benchmarks inventados.
Uma interface, dois backends: OpenAI ou Ollama
Exponha ChatModel / @AiService atrás de um bean único; application.properties ou env escolhe base-url, api-key e modelo. O controller REST (/chat) não deve saber se o backend é cloud ou local.
Padrão: perfil spring.profiles.active=openai|ollama; openai.api.key só via env; ollama.base-url=http://localhost:11434. Em ambos: connect/read timeout, retry com teto (sem loop infinito em 429), e nunca logar a key. O caminho OpenAI e o caminho Ollama deste artigo devem convergir no mesmo endpoint.
Segredos, timeout e retries: higiene de produção
Chaves só em variáveis de ambiente / secret manager — nunca no repo. Timeouts curtos no client HTTP; retries com backoff e limite; trate 429 com jitter. Monitore tokens e custo por rota. Prefira endpoints REST desacoplados e documentados para trocar o provedor sem reescrever o front.
Boas práticas
Versionamento de endpoints, correlação de request-id nos logs e teto de max tokens por chamada evitam fatura surpresa e hangs em produção.
Checklist de Implementação
Fontes
Revisão em agosto de 2026. Integração LLM via LangChain4j + Spring Boot / Ollama muda com versões de starters e providers. Tutorial de padrão; valide dependências e segredos no seu ambiente.
<a href="https://docs.langchain4j.dev/">LangChain4j docs</a>. <a href="https://spring.io/projects/spring-boot">Spring Boot</a>. <a href="https://ollama.com/">Ollama</a>.
Perguntas frequentes
Como integrar LLM (OpenAI ou Ollama) no Spring Boot?
Use client HTTP/SDK ou LangChain4j com prompts versionados, timeouts e circuit breaker. Exponha um serviço de chat/completions atrás de interface única — cloud ou Ollama local.
LangChain4j ou Spring AI para Boot?
Ambos funcionam. LangChain4j é comum em tutoriais OpenAI+Ollama; Spring AI encaixa no ecossistema Spring. Escolha pelo time e suporte — sem benchmark inventado.
Sync ou async na chamada ao LLM?
Chat curto pode ser sync com timeout. Para UX e carga, prefira async/fila. Nunca bloqueie threads de request sem necessidade.
Como controlar custo e segredo da API no Java?
API keys só em env/secret manager, limites por usuário, cache de respostas idempotentes e logs sem vazar prompt sensível.