Reduzindo até 90% os custos de LLMs com modelos Open-Weights

Ultimamente se fala muito dos LLMs “gratuitos”, muito promovidos por influencers de tecnologia. Mas, são realmente gratuitos? É preciso ler as letras miúdas das políticas de uso, que costumam ser confusas. A grande maioria desses modelos usa seus dados para alimentar seu treinamento, o que descarta seu uso em ambientes corporativos, de alta segurança ou produtivos. Para modelos gratuitos realmente com possibilidade de uso em produção e total segurança, recomendo os modelos open-weights com licença Apache e self-hosting.
Após semanas de benchmarking com modelos open-weights para tarefas críticas (como RAG e Tool Calling), os resultados falam por si mesmos: modelos como Qwen 3.5 (Alibaba) ou Gemma 4 (Google) já têm a capacidade de deslocar GPT-4 ou até GPT-5.2 em fluxos produtivos massivos, reduzindo os custos operacionais em até 90%.
Testei a fundo cenários de RAG, tool calling, geração de código, entre outros. Rodando localmente, Qwen3.5 9B (sem raciocínio avançado) passou em todos os testes sem problemas. E um detalhe importante: nem sequer é a versão mais potente da família Qwen 3.5; acima dele estão os modelos de 27B, 35B, 122B e 397B para Cloud.
A evolução dos open-weights nos últimos meses foi brutal. Graças ao trabalho da Alibaba, Meta e Google, a comunidade de desenvolvedores conseguiu criar versões quantizadas que rodam em dispositivos com pouca memória. Isso está tirando a inovação do monopólio das grandes big techs.
Casos de Uso Ideais
Um dos usos mais rentáveis para esses modelos locais está na automação em background:
- Pipelines de CI/CD: Análise de código e automação de implantações.
- Treinamento de prompts com CC/CD: Testes automatizados de comportamento da IA.
- Avaliação com LLM-as-a-Judge: Usar um modelo local para validar a qualidade das respostas de outros modelos.
- Processamento de dados em processos batch: Tarefas de longa duração onde a velocidade não é o problema, mas o volume de tokens é altíssimo.
- Otimização e limpeza de dados massivos: Estruturar toneladas de texto solto.
Até pouco tempo era impensável processar tudo isso de forma massiva pelo caras que são as APIs comerciais. Hoje, um modelo local cobre perfeitamente o básico: RAG, uso de tools e orquestração de agentes.
Características Principais dos Modelos Open-Weights
- Portabilidade: O arquivo do modelo pode ser baixado e executado em servidores privados, nuvens próprias ou até hardware local se contar com a potência necessária.
- Ajuste Fino (Fine-tuning): Ao ter acesso aos pesos, os desenvolvedores podem realizar treinamentos adicionais com dados específicos para especializar o modelo em uma tarefa ou domínio particular.
- Privacidade e Controle: Como o modelo não reside nos servidores de terceiros, os dados processados saem da infraestrutura do usuário, o que é crítico para empresas com normativas de segurança estritas.
- Transparência Limitada: Embora se possam ver os pesos, muitas vezes não se sabe exatamente quais dados foram utilizados para treiná-lo ou os algoritmos específicos de filtragem, pelo que nem sempre cumprem com a definição estrita de “Open Source” da Open Source Initiative (OSI).
Como Executar os Modelos Localmente
Levantar esses modelos via API localmente é muito fácil usando Ollama (ou o motor de inferência que preferir).
Para instalar Ollama no Mac ou Linux, simplesmente execute isto no terminal:
curl -fsSL https://ollama.com/install.sh | sh
Inicie o servidor:
ollama serve
E baixe o modelo:
ollama pull <nome_do_modelo>
Você pode controlar como o modelo se comporta pela API, mas às vezes você precisa deixar parâmetros fixos. Isso é chave se você vai conectá-lo a ferramentas como OpenCode, Copilot ou Claude Code, já que esses assistentes requerem que o modelo esteja configurado desde o início; não é possível personalizar seus parâmetros (como a janela de contexto ou a temperatura) diretamente das configurações do chat ou editor. Para montar uma versão personalizada pronta para uso:
# Executar o modelo
ollama run <nome_do_modelo>
# Definir a janela de contexto
/set parameter num_ctx 65536
# Definir a temperatura inicial
/set parameter temperature 0.3
# Salvar o modelo com um nome personalizado
/save qwen3.5:9b-64k
# Sair do modelo
/bye
Lista de parâmetros disponíveis no Ollama.
Alguns Testes Realizados
1. Detecção e Invocação de Tools (Tool Calling)
Montei um exemplo usando uma tool fictícia (consultar_bd_libreria) para ver quão bem o modelo entendia a intenção do usuário e passava os parâmetros corretos à tool.
Veredicto rápido: Qwen 3.5 9B resolveu tudo de primeira. A versão menor (4B) serviu para consultas simples, mas começou a alucinar com requerimentos complexos quando o system prompt não era suficientemente estrito.
Consulta sobre “livros de amor de Gabriel García Márquez” com o modelo qwen3.5:9b com janela de 64.000 tokens:
curl -X POST \
'http://localhost:11434/api/chat' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "qwen3.5:9b-64k",
"messages": [
{
"role": "system",
"content": "Você é um assistente virtual de uma livraria encarregado de facilitar informações sobre o catálogo de livros e autores disponíveis."
},
{
"role": "user",
"content": "Olá! Bom dia. Ouça, por acaso você teria algum livro de Gabriel García Márquez que seja sobre amor?"
}
],
"tools": [
{
"type": "function",
"function": {
"name": "consultar_bd_libreria",
"description": "Busca informações no banco de dados da livraria sobre autores e livros.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A consulta do usuário otimizada: sem saudações, corrigida gramaticalmente e focada exclusivamente nos critérios de busca (ex: '\''livros de amor de Gabriel García Márquez'\'')."
}
},
"required": ["query"]
}
}
}
],
"think": false,
"stream": false
}'
Resposta (Qwen 3.5 9B):
{
"model": "qwen3.5:9b-64k",
"created_at": "2026-04-13T05:04:18.274354Z",
"message": {
"role": "assistant",
"content": "",
"tool_calls": [
{
"id": "call_y9mljhip",
"function": {
"index": 0,
"name": "consultar_bd_libreria",
"arguments": {
"query": "livros de amor de Gabriel García Márquez"
}
}
}
]
},
"done": true,
"done_reason": "stop",
"total_duration": 7161121041,
"load_duration": 186818208,
"prompt_eval_count": 382,
"prompt_eval_duration": 4331394542,
"eval_count": 38,
"eval_duration": 2460080082
}
Consulta complexa com o modelo qwen3.5:9b com janela de 64.000 tokens:
curl -X POST \
'http://localhost:11434/api/chat' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "qwen3.5:9b-64k",
"messages": [
{
"role": "system",
"content": "Você é um assistente virtual de uma livraria encarregado de facilitar informações sobre o catálogo de livros e autores disponíveis."
},
{
"role": "user",
"content": "Olá! Como vai tudo? Olha, estou procurando algo de Isabel Allende ou talvez de Gabriel García Márquez, mas que seja de realismo mágico e que não me custe mais de 25 dólares, tá? Ah, e somente se tiverem aí na loja para passar a buscar hoje mesmo, é para um presente."
}
],
"tools": [
{
"type": "function",
"function": {
"name": "consultar_bd_libreria",
"description": "Busca informações no banco de dados da livraria sobre autores e livros.",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "A consulta do usuário otimizada: sem saudações, corrigida gramaticalmente e focada exclusivamente nos critérios de busca (ex: '\''livros de amor de Gabriel García Márquez'\'')."
}
},
"required": ["query"]
}
}
}
],
"think": false,
"stream": false
}'
Resposta (Qwen 3.5 9B):
{
"model": "qwen3.5:9b-64k",
"created_at": "2026-04-13T04:59:53.121743Z",
"message": {
"role": "assistant",
"content": "",
"tool_calls": [
{
"id": "call_fqw4hdq7",
"function": {
"index": 0,
"name": "consultar_bd_libreria",
"arguments": {
"query": "livros de realismo mágico de Isabel Allende ou Gabriel García Márquez com preço menor a 25 dólares disponíveis na loja"
}
}
}
]
},
"done": true,
"done_reason": "stop",
"total_duration": 15120528125,
"load_duration": 8777821167,
"prompt_eval_count": 431,
"prompt_eval_duration": 2368185708,
"eval_count": 57,
"eval_duration": 3715160875
}
Podemos ver que com um modelo menor como qwen3.5:4b, uma instrução simples não há problemas:
{
"model": "qwen3.5:4b-64k",
"created_at": "2026-04-13T05:37:48.126052Z",
"message": {
"role": "assistant",
"content": "",
"tool_calls": [
{
"id": "call_emre4xhh",
"function": {
"index": 0,
"name": "consultar_bd_libreria",
"arguments": {
"query": "livros de amor de Gabriel García Márquez"
}
}
}
]
},
"done": true,
"done_reason": "stop",
"total_duration": 8853187542,
"load_duration": 5582010334,
"prompt_eval_count": 382,
"prompt_eval_duration": 1257315083,
"eval_count": 38,
"eval_duration": 1791458750
}
Mas para uma consulta complexa, o modelo qwen3.5:4b já não consegue ser eficiente, alucinando facilmente sem um system prompt mais robusto. Diante do mesmo texto complexo, o de 4B se embolou, ignorou a ferramenta e começou a conversar:
{
"model": "qwen3.5:4b-64k",
"created_at": "2026-04-13T05:38:48.359164Z",
"message": {
"role": "assistant",
"content": "Olá! Tudo muito bem por aqui, obrigado por perguntar. Fico feliz que esteja procurando um presente; o realismo mágico é um gênero fascinante.\n\nPara poder ajudá-lo a encontrar exatamente o que têm em estoque hoje na loja e que cumpra com seu orçamento de 25 dólares, preciso que me dê uma pequena ajuda com a busca.\n\nPor favor, me diga: **Prefere que eu busque primeiro pelos livros de Isabel Allende ou pelos de Gabriel García Márquez?** (Ou se tem algum título específico em mente, também pode me dizer)."
},
"done": true,
"done_reason": "stop",
"total_duration": 11457394291,
"load_duration": 4015661708,
"prompt_eval_count": 431,
"prompt_eval_duration": 1329063875,
"eval_count": 121,
"eval_duration": 5790543085
}
2. Extração RAG com Raciocínio, Matemática e Tom
Passei um texto com as regras da “EcoMóvil”, uma empresa fictícia de scooters. Pedi que calculasse o custo de uma viagem, resolvesse uma avaria e perguntei sobre um dado que simplesmente não existia no documento. Tudo isso com uma regra de sistema estrita: tom amigável, zero emojis.
curl -X POST \
'http://localhost:11434/api/chat' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data-raw '{
"model": "qwen3.5:9b-64k",
"messages": [
{
"role": "system",
"content": "Você é '\''EcoBot'\'', o assistente virtual de atendimento ao cliente da '\''EcoMóvil'\'', uma empresa de aluguel de scooters elétricos. Seu tom deve ser amigável, entusiasmado, ecológico e muito profissional. INSTRUÇÃO ESTRITA: Você tem absolutamente proibido utilizar emojis, emoticons ou caracteres gráficos similares em suas respostas. Mantenha um formato de texto limpo. Sua tarefa é responder as dúvidas dos usuários baseando-se EXCLUSIVAMENTE no contexto fornecido. Se a resposta não se encontrar no texto, desculpe-se amigavelmente e explique que não tem essa informação à mão, sem inventar dados.\n\n<contexto_recuperado>\n[ARTICULO_SOPORTE: TARIFAS_Y_USO_2026]\n- Tarifas: Desbloquear um scooter custa $1.00 USD. O custo por minuto de uso é de $0.25 USD.\n- Horários: O serviço opera todos os dias das 06:00 AM às 11:00 PM. Os scooters são bloqueados automaticamente e não podem ser iniciados fora deste horário.\n- Zonas permitidas: Os scooters só podem circular e ser estacionados dentro da '\''Área Metropolitana Centro'\'' e do '\''Campus Universitário'\''. Estacionar fora dessas zonas acarreta uma multa automática de $25.00 USD no cartão associado.\n- Avarias: Se um scooter apresentar falhas mecânicas durante a viagem, o usuário deve finalizar a viagem imediatamente no app para interromper a cobrança e pressionar o botão '\''Reportar Problema'\'' para notificar a equipe técnica.\n</contexto_recuperado>"
},
{
"role": "user",
"content": "Olá! Queria saber quanto me custaria exatamente uma viagem de 20 minutos. Também, o que acontece se o scooter furar uma pneu no meio do caminho? Ah, e vocês têm planos de expandir o serviço para a zona norte da cidade no próximo mês?"
}
],
"think": false,
"stream": false
}'
Qwen 3.5 9B: Resposta precisa e natural. Respeitou a regra de não usar emojis, admitiu não saber a resposta sobre o dado inventado e o cálculo matemático ($1.00 de desbloqueio + (20 min * $0.25) = $6.00) foi exato.
{
"model": "qwen3.5:9b-64k",
"created_at": "2026-04-13T06:06:54.100627Z",
"message": {
"role": "assistant",
"content": "Olá! É um prazer te saudar. Na EcoMóvil adoramos que você queira conhecer mais sobre nossos serviços.\n\nPara calcular o custo de uma viagem de 20 minutos, primeiro deve considerar que o desbloqueio do scooter custa $1.00 USD. Depois, o custo por minuto de uso é de $0.25 USD. Portanto, a viagem de 20 minutos teria um custo de uso de $5.00 USD (20 minutos multiplicados por $0.25). Somando o custo de desbloqueio, o total a pagar seria de $6.00 USD.\n\nQuanto à situação de um pneu furado, se o scooter apresentar falhas mecânicas durante a viagem, é fundamental que finalize a viagem imediatamente no aplicativo para interromper a cobrança. Posteriormente, deve pressionar o botão 'Reportar Problema' dentro do app para notificar a equipe técnica para que possam te assistir.\n\nPor último, quanto à expansão do serviço para a zona norte da cidade, infelizmente não tenho essa informação à mão neste momento. Recomendo consultar nossas redes sociais ou a seção de notícias em nosso aplicativo para ficar a par dos planos de expansão futuros.\n\nHá mais algo em que eu possa te ajudar hoje?"
},
"done": true,
"done_reason": "stop",
"total_duration": 28816119625,
"load_duration": 8543402584,
"prompt_eval_count": 442,
"prompt_eval_duration": 2152467708,
"eval_count": 272,
"eval_duration": 17493256088
}
Qwen 3.5 4B: Manteve bem o tom de atendimento ao cliente, mas errou na lógica matemática em vários dos exercícios que joguei depois.
{
"model": "qwen3.5:4b-64k",
"created_at": "2026-04-13T05:48:37.869663Z",
"message": {
"role": "assistant",
"content": "Olá! É um prazer te saudar. Como assistente da EcoMóvil, estou aqui para te ajudar a planejar sua viagem de maneira eficiente e responsável.\n\nPara calcular o custo da sua viagem de 20 minutos, devemos considerar o custo base por desbloqueio e a tarifa por minuto. O custo inicial para desbloquear um scooter é de 1.00 USD. Além disso, a tarifa de uso é de 0.25 USD por minuto. Ao multiplicar 20 minutos por 0.25 USD, obtemos um custo de 5.00 USD pelo tempo de uso. Somando o custo de desbloqueio, o preço total para uma viagem de 20 minutos seria de 6.00 USD.\n\nQuanto à sua pergunta sobre avarias, se um scooter apresentar falhas mecânicas durante a viagem, é fundamental que finalize a viagem imediatamente através do aplicativo para interromper qualquer cobrança adicional. Posteriormente, deve pressionar o botão 'Reportar Problema' no app para notificar a equipe técnica, que se encarregará de gerenciar o reparo.\n\nQuanto à expansão do serviço para a zona norte da cidade, infelizmente não tenho essa informação disponível em meus registros atuais. Minha base de dados se limita às tarifas, horários e zonas permitidas atuais, que são a Área Metropolitana Centro e o Campus Universitário. Estacionar fora dessas zonas acarreta uma multa automática de 25.00 USD, pelo que recomendo verificar as rotas oficiais para evitar multas.\n\nFico atento se precisar de mais informações sobre nossos serviços ou tiver alguma outra dúvida. Espero que tenha uma viagem segura e ecológica!"
},
"done": true,
"done_reason": "stop",
"total_duration": 25273808667,
"load_duration": 5406114208,
"prompt_eval_count": 442,
"prompt_eval_duration": 1319714917,
"eval_count": 359,
"eval_duration": 17672467651
}
Qwen 3.5 2B: Gramaticalmente correto, mas errou em cálculos básicos e ofereceu respostas demasiado curtas que cortavam a conversa de repente.
{
"model": "qwen3.5:2b-64k",
"created_at": "2026-04-13T05:58:35.337881Z",
"message": {
"role": "assistant",
"content": "Olá! Claro que sim, estou aqui para te ajudar a planejar sua viagem com a EcoMóvil.\n\nUma viagem de 20 minutos custará exatamente $5.00 USD, calculado como $0.25 USD por minuto multiplicado por 20 minutos.\n\nSe o scooter furar um pneu no meio do caminho, recomendamos finalizar a viagem imediatamente no aplicativo para interromper a cobrança e pressionar o botão \"Reportar Problema\" para notificar a equipe técnica.\n\nQuanto à expansão de zonas, atualmente o serviço opera dentro da Área Metropolitana Centro e do Campus Universitário. Não tenho informação disponível sobre planos específicos para expandir o serviço para a zona norte da cidade no próximo mês, mas recomendo consultar diretamente com nossa equipe de suporte ou revisar nosso site para obter a informação mais atualizada.\n\nEspero que esta informação te seja útil para sua próxima aventura na EcoMóvil. Que tenha um bom dia!"
},
"done": true,
"done_reason": "stop",
"total_duration": 11193157167,
"load_duration": 4680604292,
"prompt_eval_count": 442,
"prompt_eval_duration": 535022292,
"eval_count": 205,
"eval_duration": 5662032366
}
Quando mudamos o system prompt para uma lógica de cálulo um pouco mais complexa, mas simples, somente o modelo de qwen3.5:9b consegue passar com precisão.
qwen3.5:9b:
{
"model": "qwen3.5:9b-64k",
"created_at": "2026-04-13T06:27:43.570695Z",
"message": {
"role": "assistant",
"content": "Olá. Para calcular o custo total da sua viagem de 10 minutos na Área Centro, aplicaremos os seguintes conceitos:\n\n1. **Custo de desbloqueio:** Dado que a duração da viagem é de 10 minutos (menos de 15 minutos), aplica-se uma tarifa de desbloqueio de $2.00 USD.\n2. **Tarifa por minuto:** Cobra-se $0.25 USD por minuto. Para 10 minutos, o custo é de $2.50 USD.\n3. **Multa por zona:** A viagem é realizada dentro da Área Centro, pelo que não se aplica nenhuma multa.\n\n**Cálculo final:**\n$2.00 (desbloqueio) + $2.50 (tarifa por minuto) = $4.50 USD.\n\nO custo total da sua viagem será de **$4.50 USD**."
},
"done": true,
"done_reason": "stop",
"total_duration": 22793113666,
"load_duration": 8255305416,
"prompt_eval_count": 186,
"prompt_eval_duration": 1053119459,
"eval_count": 197,
"eval_duration": 12840003246
}
qwen3.5:4b:
{
"model": "qwen3.5:4b-64k",
"created_at": "2026-04-13T06:26:00.84569Z",
"message": {
"role": "assistant",
"content": "Olá. Para calcular o custo total da sua viagem de 10 minutos dentro da Zona Centro, primeiro devemos determinar o custo do desbloqueio.\n\nDado que sua viagem dura 10 minutos, que é menos de 15 minutos, o desbloqueio não é gratuito e se calcula segundo a tarifa de $0.25 USD por minuto. O custo do desbloqueio é de $2.50 USD (10 minutos x $0.25).\n\nAssumindo que não há outras cobranças adicionais como multas por sair da zona, o custo total da viagem é de $2.50 USD."
},
"done": true,
"done_reason": "stop",
"total_duration": 9396311125,
"load_duration": 480919291,
"prompt_eval_count": 186,
"prompt_eval_duration": 779439167,
"eval_count": 135,
"eval_duration": 6620469968
}
qwen3.5:2b:
{
"model": "qwen3.5:2b-64k",
"created_at": "2026-04-13T06:22:52.715915Z",
"message": {
"role": "assistant",
"content": "Olá. Para realizar uma viagem de 10 minutos dentro do Centro, a tarifa de desbloqueio é de $2.00 USD."
},
"done": true,
"done_reason": "stop",
"total_duration": 5984044125,
"load_duration": 4802225125,
"prompt_eval_count": 186,
"prompt_eval_duration": 290848333,
"eval_count": 31,
"eval_duration": 796598664
}
3. Como assistente de desenvolvimento
Conectei-o ao OpenCode, Copilot e Claude Code. A versão de 9B funciona bem para autocompletar e refatorar localmente. Se você vai montar arquiteturas complexas, vai precisar dos modelos maiores, e aí sim ou sim precisa de um servidor Cloud ou um equipamento local bastante robusto (como um Mac Mini com 32GB ou 64GB de RAM).
Benchmarks qwen3.5
No benchmark oficial podemos ver todo seu poder comparado a outros modelos:

Se olhamos os números oficiais contra modelos comerciais, a diferença de desempenho vs preço é abismal:
O verdadeiro salto do Qwen 3.5 está em seu uso como agente autônomo. No benchmark BrowseComp (busca e navegação web automatizada), chega a 78.6 pontos. Supera por bastante o Gemini 3 Pro (59.2) e pisa nos calcanhares do Claude 4.5 Opus (84.0).
Ao orquestrar APIs ou processar dados externos, Qwen 3.5 compete cara a cara com modelos de pagamento muito mais caros. É a prova de que hoje uma empresa pode deixar de depender exclusivamente de provedores externos para seu core de IA.

Quando Vale a Pena Ir por Modelos Open-Weights?
- Uso massivo de tokens: Se seu produto queima milhões de tokens por mês, a fatura das APIs vai doer. É preciso fazer bem a matemática (servidores vs API), mas hospedar um modelo como
qwen3.5pode baixar a conta mensal em mais de 90%. - Regras estritas de privacidade: Se você trabalha com dados médicos, PII ou financeiros, sua VPC é seu refúgio. Executar tudo localmente garante que os dados nunca toquem um servidor de terceiros.
- Personalização sob medida: Quando você precisa fazer fine-tuning para que o modelo fale a linguagem técnica da sua indústria sem ter que treinar um modelo fundacional do zero.
Conclusão
A realidade é que para 80% das operações com LLMs em produção (classificar textos, RAG, tool calling), não é preciso pagar pelo modelo mais inteligente do mercado.
Você pode delegar grande parte da carga de trabalho a modelos open-weights hospedados por você, sobretudo em tarefas em segundo plano. A arquitetura ideal hoje é ter um bom roteador: você usa modelos locais rápidos e baratos para as tarefas simples, e somente chama os modelos gigantes comerciais quando o raciocínio complexo exige.
Minha recomendação é que antes de fazer essa mudança você se certifique de ter boa observabilidade, conjuntos de dados de testes sólidos e uma gestão de prompts adequada (com ferramentas como Langfuse). Aqui é onde os modelos open-weights também brilham, permitindo invocar milhares de LLM-as-a-Judge sem impacto nos custos, aumentando as traces avaliadas e melhorando as métricas nas avaliações online.
E você, já está movendo suas cargas de trabalho para modelos locais ou ainda dependendo 100% de APIs de terceiros?