Gleam.br Wiki

[ADR-0011] Execução de LLM Local via Inferência Nativa (Edge AI) | Wiki

Documentação de engenharia e especificações técnicas da Gleam-BR.

[ADR-0011] Execução de LLM Local via Inferência Nativa (Edge AI)

  • *Status:* Proposto
  • *Data:* 17 de Maio, 2026

*Contexto:*

A biblioteca gbr_llm atualmente depende de provedores em nuvem (OpenAI, Anthropic, Google) via HTTP (gun). Embora a abstração agnóstica de provedores (ADR-0002) permita trocar de API facilmente, a dependência exclusiva de redes externas fere os princípios de privacidade absoluta (LGPD/GDPR), impede o uso em ambientes isolados (air-gapped / offline) e gera custos recorrentes de tokens. Como já possuímos uma base de execução de tensores locais (HuggingFace candle via Rust NIF) implementada para a vetorização semântica (gbr_vector), temos o alicerce necessário para estender essa capacidade para a geração de texto.

*Decisão:*

Implementaremos a capacidade de *Inferência Local Zero-Dependency* nativa na plataforma gleambr_ai.

  1. *O Novo Provedor:* Criaremos um novo provedor no gbr_llm/client/provider chamado local_edge (ou native). Este provedor não fará chamadas HTTP, mas implementará a interface despachando requisições para um novo Ator Gleam.
  2. *O Motor de Inferência (Rust NIF):* Expandiremos a nossa ponte Rust/Erlang (baseada em candle) para carregar modelos quantizados (GGUF/Safetensors) otimizados para CPU/Metal, como Llama-3-8B-Instruct ou Phi-3-mini.
  3. *Gerenciamento de Scheduler OTP:* Como a geração de tokens é intensiva em CPU, a execução ocorrerá estritamente em threads DirtyCpu do Rustler para não bloquear os schedulers normais da Erlang VM. A comunicação com o Ator de Sessão será feita emitindo tokens iterativamente de volta para o processo Erlang, simulando o efeito de Streaming SSE que já possuímos.

*Consequências:*

  • *Positivas:* Privacidade total de código (propriedade intelectual não sai da máquina do desenvolvedor); custo zero de execução após o download do modelo; funcionalidade 100% offline; consolida o gleambr_ai como uma ferramenta de defesa de segurança (Privacy-First).
  • *Negativas:* Aumento drástico no uso de memória RAM/VRAM da máquina hospedeira; o tamanho do binário distribuído aumentará significativamente caso o modelo de IA seja empacotado, ou exigirá uma etapa complexa de download/gerenciamento de modelos no primeiro uso.

Análise crítica

  1. *A Vitória Imediata (Ollama/Llama.cpp via HTTP):*
  • Vamos garantir que o nosso provedor genérico da OpenAI permita que o usuário injete um base_url via variável de ambiente (ex: GBR_OLLAMA_URL). Isso nos dá "Edge AI Local" imediatamente, com streaming perfeito e zero esforço de código, aproveitando o que o ecossistema externo já construiu.
  1. *A "Opção Nuclear" (O NIF Nativo com Candle):*
  • Vamos manter o NIF Rust na geladeira como uma prova de conceito (PoC). Quando formos refatorá-lo, o faremos direito: o NIF usará envio de mensagens assíncronas para a BEAM, respeitando a arquitetura de Streaming do ADR-0002 e suportando KV-Caching entre as perguntas para não precisarmos reprocessar o System Prompt (que é gigante por causa das ferramentas) a cada requisição.