Evoluindo a Arquitetura de Modelos com LangChain

09/12/2025
4 min
Inteligência Artificial, Notícias
4 curtidas
Ouvir
Navegue por Tópicos
Compartilhe
  • Comentar
Ouvir

Comparando a Versão da Classe Ollama e a Abordagem ChatOllama

Quando trabalhamos com múltiplos provedores de modelos (como Ollama, Gemini, OpenAI e Azure), é recomendável manter um padrão nas tipagens e um comportamento uniforme nos projetos. Principalmente naqueles que envolvem RAG, pipelines de avaliação ou conversas multi-turno, qualquer inconsistência no contrato dos modelos rapidamente se torna um gargalo técnico.  Nos últimos meses, o ecossistema LangChain tem passado por mudanças significativas, tanto na nomenclatura quanto na arquitetura interna dos seus conectores com modelos de linguagem. Um exemplo claro disso pode ser observado na migração do uso da classe Ollama do LangChain para ChatOllama em aplicações que integram modelos locais. Além disso, há uma nova ênfase na extração de metadados de uso, como contagem de tokens, o que traz benefícios tanto operacionais quanto de controle de custos. O objetivo deste artigo é apresentar os principais pontos de mudança nessa nova abordagem.

Nota: Neste texto, o termo provedor (ou provider) é usado no sentido comum da engenharia de IA, ou seja, refere-se à plataforma ou serviço que hospeda e disponibiliza um modelo de linguagem (como OpenAI, Google, Azure ou Ollama).

A implementação da classe Ollama

A importação do LangChain com o Ollama é feito como:

import { Ollama } from "@langchain/ollama";

No entanto, essa classe genérica Ollama não estava alinhada com a interface de chat utilizada por outros provedores como OpenAI e Gemini. Isso criava inconsistências na forma como as mensagens eram formatadas e processadas, especialmente ao usar invoke, stream ou outros métodos do BaseChatModel.  Além disso, não havia suporte explícito para metadados de uso, o que dificultava o monitoramento de consumo de tokens em ambientes híbridos (ex: Ollama local + OpenAI em produção).

A implementação Versão ChatOllama

A importação do LangChain com o ChatOllama é feito como:

import { ChatOllama } from "@langchain/ollama";

Com a atualização temos consistência de interface: Agora, todos os provedores (ChatOllama, ChatGoogleGenerativeAI, ChatOpenAI, etc.) herdam de BaseChatModel. Isso garante que métodos como invoke, stream e batch funcionem da mesma forma, independentemente do provedor.  

Também temos compatibilidade com sistemas de memória e agentes: Muitos componentes do LangChain (como ConversationalRetrievalChain, AgentExecutor) esperam um BaseChatModel. Usar ChatOllama torna a integração mais fluida.  Outrossim é o suporte a mensagens estruturadas: A nova classe trabalha com objetos do tipo BaseMessage, permitindo manipulação granular de HumanMessage, AIMessage, SystemMessage…

A migração

Ao optar pela migração dos projetos para a versão ChatOllama, temos a vantagem de trabalhar com mensagens estruturadas, nas quais o código fica mais limpo, legível e mais alinhado à forma como os modelos foram treinados. Além disso, com a formatação automática do prompt evitamos o desperdício de tokens em comparação com a formatação manual.

Considerações finais

Na prática da ciência de dados aplicada a LLMs, a capacidade de isolar variáveis, modelo,  prompt ou contexto depende diretamente da estabilidade da interface de inferência. A utilização da classe Ollama do LangChain como instância de LLM (baseada em strings brutas) introduzia um viés sistemático: a formatação do prompt ficava sob responsabilidade do código da aplicação, não do modelo. Isso não apenas dificultava a reprodutibilidade entre provedores, como também contaminava comparações de desempenho, já que variações na estrutura do prompt impactavam diretamente no consumo de tokens e na coerência das respostas.

A migração para ChatOllama resolve esse problema ao alinhar a interface local ao padrão BaseChatModel, usado por OpenAI, Gemini e outros. Isso permite que:

  • Prompts sejam comparáveis entre ambientes (local vs. cloud), já que a serialização das mensagens segue o template esperado pelo tokenizer do modelo;

  • Métricas de token usage sejam coletadas de forma consistente, viabilizando análise de custo-computação mesmo em setups híbridos;

  • Permite que as pipelines de avaliação operem sobre um contrato estável, sem ajustes ad hoc por provedor.

Essa padronização elimina uma fonte significativa de variância não controlada. Em projetos onde cada token representa latência adicional ou custo, a capacidade de medir, comparar e otimizar o uso do modelo com base em metadados estruturados é uma condição necessária para tomar decisões embasadas.

Referência

LangChain. (2025). ChatOllama (JavaScript). LangChain JS Documentation. Recuperado em 7 de dezembro de 2025, de https://js.langchain.com/docs/integrations/chat/ollama

 

Navegue por Tópicos
Compartilhe
  • Comentar

Hellem Correa

Bacharel em Estatística pela Universidade Federal de Goiás (UFG) e pós-graduada em Ciência de Dados pela ESALQ/USP. Atua como Especialista em Ciência de Dados no LIGO, com foco em modelagem estatística, genAI, análise de dados e aprendizado de maquina.

Comentários mais recentes

Nenhum comentário encontrado.

Gostou? Deixe seu comentário aqui...

Acessar o conteúdo