
Apresentando o Pantala: modelos System One em português, treinados do zero
Entra o estado do programa, sai uma decisão tipada que o software executa. São 4,4 milhões de parâmetros, 9 MB dentro do aparelho e cerca de 90 ms em CPU — e nenhum peso que não tenha nascido no nosso treino.
Faz anos que os modelos escrevem melhor do que a maioria das pessoas. Então por que quase toda automação ainda termina com alguém lendo a resposta e decidindo o que fazer com ela?
A resposta é sem graça: porque a saída é texto. Texto precisa de parse, precisa de validação e precisa de um plano para quando vier uma frase que não estava no combinado. Entre o modelo e a ação sempre sobra uma camada de código defensivo — e, quase sempre, uma pessoa de plantão.
Em três cartões
O que é o Pantala
Decisão, não parágrafo
Entra o estado do programa com o catálogo do momento; sai a chamada de ferramenta tipada. O programa age direto no resultado, sem interpretar prosa.
Cabe no aparelho
9 MB em ONNX int8, cerca de 90 ms em CPU comum, offline. Sem servidor, sem rede e sem o dado do usuário sair do dispositivo.
Nascido do nosso dado
Cada peso veio de treino nosso, sobre corpus nosso. Nenhum modelo, embedding ou corpus de terceiros entra em nenhuma etapa.
Ele não escreve. Ele decide.
Um LLM devolve texto; entre o texto e a ação existe sempre uma camada de código defensivo. O Pantala devolve o objeto que o seu programa executa: o nome da ferramenta e os argumentos preenchidos, restritos ao catálogo por construção.
Classificação é o mesmo mecanismo com outro nome: modele cada rótulo como uma ferramenta sem parâmetros e o decodificador restrito garante que a saída seja um dos rótulos. Nunca um talvez, nunca três linhas explicando por que a escolha é difícil.
O caminho de uma decisão
Duas entradas, uma saída que executa
A chamada tem três partes — o que o usuário disse, as ferramentas disponíveis naquele momento e a decisão que volta. Por dentro, é este caminho:
- 01
A pergunta
O que o usuário disse, como veio. Sem prompt de sistema, sem histórico de conversa e sem temperatura para calibrar.
- 02
O catálogo
As ferramentas ou rótulos válidos naquele momento, em esquema JSON. É cardápio, não texto decorado: o que não está aqui não pode sair.
- 03
O encoder
Lê pergunta e catálogo juntos, em uma janela de 1024 tokens. O catálogo inteiro entra em toda chamada.
- 04
O decodificador restrito
Só consegue emitir o que existe no catálogo. Erro de tipo é impossível por construção — não por cuidado extra no seu código.
- 05
A decisão
A ferramenta com os argumentos preenchidos, ou o fallback quando nada do catálogo serve. Sem a ferramenta de escape, ele sempre escolhe algo.
- 06
A execução
Seu programa roda a chamada. Sem parse, sem validação de tipo, sem segunda checagem.
Você envia duas coisas. O programa recebe uma terceira, pronta para executar.
Duas fronteiras
O que muda em relação a um LLM de chat
As duas coisas se chamam modelo de linguagem e param de se parecer aí. A comparação que importa na hora de escolher é esta:
| Dimensão | LLM de chat | Pantala · System One |
|---|---|---|
| Otimizado para | Preferência humana: um texto que a pessoa lê e aprova. | Decisão: o rótulo ou a chamada de ferramenta que o programa vai executar. |
| Entrada | Conversa — uma sequência de mensagens. | Estado do programa mais o catálogo de ferramentas disponíveis naquele momento. |
| Saída | String livre. Precisa de parse, precisa de validação e pode inventar um campo que não existe. | Valor estruturado. O nome da ferramenta e as chaves dos argumentos saem do seu catálogo, por construção. |
| Onde roda | Servidor com GPU, do outro lado da rede. | No aparelho: celular, relógio, óculos. Offline. |
| Tamanho | Bilhões de parâmetros. | 4,4 milhões de parâmetros. 9 MB em ONNX int8. |
| Tempo de resposta | Segundos, com a latência da rede por cima. | Cerca de 90 ms em CPU, sem rede nenhuma. |
| Custo por decisão | Por token, a cada chamada. | Zero. O modelo já está instalado no aparelho. |
| Dados de treino | Corpus da internet, com procedência difícil de reconstruir. | Nossos, do zero. Cada token do pré-treino saiu de dado que é nosso. |
| Para que serve | Conversar, redigir, resumir, raciocinar em cadeia. | Rotear, classificar, decidir e disparar a ação. |
Ressalva
A tabela compara classes, não produtos. Um LLM grande resolve a tarefa do Router — resolve bem, e resolve muita coisa que o Router nunca vai resolver. A pergunta não é qual é melhor, é do que você precisa naquele ponto do código: se o próximo passo é um if, você não precisa de um parágrafo.
As contas
Pantala Router v5, medido
O Router está entregue e em produção dentro do HiNow. Os números abaixo são do checkpoint v5, exportado para ONNX int8 e executando em CPU.
- 4,4M
- parâmetros
- Atenção pura, sem camada feed-forward.
- 9 MB
- no aparelho
- ONNX quantizado em int8, pronto para embarcar no app.
- ~90 ms
- por decisão, em CPU
- Sem GPU, sem servidor e sem rede.
- 23
- destinos fechados
- O decodificador restrito não deixa sair nada fora da lista.
Ressalva
Os 90 ms são de CPU, com cache de KV ligado, sobre o catálogo de 23 destinos que usamos em produção — catálogo maior significa mais token de entrada e número maior. Acima de cerca de 12 ferramentas o catálogo estoura o limite de 1024 tokens do encoder, e o caminho passa a ser filtrar os candidatos antes da chamada. E não alucina tem escopo exato: a restrição vale para o nome da ferramenta e para as chaves dos argumentos. O valor de cada argumento é livre, e a restrição é relaxada com aviso se o modelo sair completamente da gramática.
Como se usa
Uma pergunta, um catálogo, uma decisão
A chamada tem três partes: o que o usuário disse, as ferramentas disponíveis naquele momento e a decisão que volta. Não há prompt de sistema, não há histórico de conversa e não há temperatura para calibrar.
# entra o que a pessoa disse, mais o catálogo do momento
result = generate(
model, params, tokenizer,
query="Qual a previsão do tempo em São Paulo?",
tools='[{"name": "get_weather",
"parameters": {"location": {"type": "string",
"required": true}}}]',
)
# sai a decisão, já tipada
[{"name": "get_weather", "arguments": {"location": "São Paulo"}}]Uma decisão, do texto ao objeto que o programa executa.
Mapa de casos de uso
Para que ele serve, por forma de decisão
Este mapa serve para achar o lugar do Pantala no seu sistema: encontre a forma de decisão mais próxima da sua necessidade e veja exemplos reais. O que é decisão fechada cabe nele; o que é texto livre cabe num LLM — e os dois se combinam.
Automação de software
Intercale IA com software confiável de um jeito que rode um milhão de vezes em segundo plano, sem copiloto humano. O código dono do fluxo; o Pantala, das decisões semânticas.
Aplicações em tempo real
Inteligência em velocidade de máquina (~90 ms) permite decidir dentro da interface, no aparelho — em jogo, em tela, em conversa.
Map-reduce semântico sobre dados
Modelo pequeno custa pouco: passe corpora gigantes por classificação, busque informação relevante em milhões de registros, extraia features para previsão.
Verificação universal
Verifique prompt, extração, raciocínio ou chamada de ferramenta de qualquer outro modelo: detecte injeção, citação sem suporte, erro de qualidade — a uma fração do custo da chamada verificada.
Engenharia de harness
Roteamento de modelo, recuperação de contexto semântico, detecção de erro e guardrail de LLM — decisões de harness em velocidade e custo de outro nível.
As formas de decisão
Dez formatos que o Pantala cobre
Cada linha é uma forma de decisão que o modelo devolve, com a situação em que ela é a escolha certa. É o mapa que orienta o desenho do catálogo antes do treino.
| Forma | Quando usar | Exemplos |
|---|---|---|
| Classificação | Uma categoria conhecida precisa vencer | Intenção, assunto, departamento, tipo de risco, tipo de entidade |
| Detecção | Você quer a probabilidade de uma propriedade existir | Spam, urgência, dado sensível, pedido de cancelamento |
| Pontuação | A resposta cabe numa régua ordenada | Severidade, relevância, qualidade, frustração |
| Roteamento | Uma categoria escolhe o próximo caminho no código | Uso de ferramenta, escalação, fila de suporte, modelo |
| Busca | Você quer achar itens que casem com uma consulta | Busca semântica, descoberta de documento, geração de candidatos |
| Recuperação | O fluxo precisa do contexto mais relevante | Contexto de RAG, recuperação de evidência, consulta de cadastro |
| Ordenação | Itens precisam de ordem por relevância ou qualidade | Resultados de busca, recomendações, priorização de candidatos |
| Verificação | Um artefato precisa ser checado por modos de falha | Violação de política, erro de chamada, qualidade de resposta |
| Feature para ML | Um modelo clássico precisa de sinal semântico | Intenção de compra, pressão competitiva, sinal de churn |
| Extração estruturada | Campos conhecidos precisam sair de texto livre | Atributos de produto, campos de pedido, rótulos de documento |
Exemplos por área
Onde isso cai no dia a dia
São os mesmos formatos de cima, aplicados a áreas reais. Cada lista pode virar um catálogo treinado — e é a HiNow que treina, avalia e entrega o modelo.
Roteamento de modelo e agente
- Escolher qual modelo recebe cada mensagem, por regra e limiar seu
- Classificar intenção e domínio; estimar dificuldade e risco
- Escalar para o modelo caro só o que merece
Guardrails de LLM
- Checagem semântica em toda entrada, saída e chamada de ferramenta
- Detectar injeção de prompt, violação de política e exposição de dado sensível
- Registrar o resultado estruturado para auditar falhas do sistema
Suporte ao cliente
- Classificar chamados por problema, área e intenção
- Detectar urgência, frustração, risco de churn e pedido de reembolso
- Rotear para a fila certa e conferir a resposta contra a política
Busca e recuperação
- Pontuar a relevância entre consulta e candidato
- Reordenar resultados e selecionar o contexto útil para o próximo passo do fluxo
- Completar ou substituir embeddings onde a decisão é fechada
E-commerce e marketplace
- Classificar e normalizar anúncios de catálogos inconsistentes
- Extrair atributos de título e descrição; detectar listas proibidas
- Priorizar o que precisa de revisão humana
Documentos e compliance
- Classificar contratos, políticas e documentos fiscais
- Detectar cláusula ausente, alegação proibida e violação de política
- Escalar o que é arriscado ou incerto para quem decide
O caminho até o seu modelo
Treinar nas suas ferramentas
O Pantala que roteia o HiNow não nasceu pronto: foi treinado no catálogo de ferramentas da casa. O mesmo caminho vale para o seu — e cada passo tem ferramenta publicada.
- 01
Modele o catálogo
Cada rótulo vira uma ferramenta sem parâmetros, com nome e descrição. Inclua uma ferramenta de escape para o que está fora do escopo — sem ela, o modelo não tem como recusar.
- 02
Gere os exemplos
No mínimo 120 por ferramenta — 100 de treino, 10 de validação, 10 de teste. Menos que isso, o modelo decora em vez de generalizar: as métricas ficam perfeitas e nada funciona na vida real.
- 03
Rode o finetune
Minutos numa GPU comum, pelo playground (pantala playground) ou pela CLI (pantala finetune dados.jsonl). O playground gera os dados, treina, avalia e empacota.
- 04
Avalie na régua
Métricas de validação e de teste antes de qualquer uso real. A régua vem com o treino; o que ela medir é o que o modelo é.
- 05
Exporte para o dispositivo
Checkpoint .pkl → ONNX int8. O modelo embarca no aplicativo e responde offline, no aparelho do usuário.
Ressalva
Acima de cerca de 12 ferramentas, o catálogo estoura os 1024 tokens do encoder. O caminho previsto é filtrar os candidatos antes da chamada (retrieve_tools) e decidir sobre a lista curta.
Situações
Onde ele serve
Roteamento
Ler a mensagem e dizer para qual agent ela vai. É o que ele faz hoje dentro do HiNow, em 23 destinos.
Classificação
Intenção, prioridade, área responsável, sentimento — qualquer rótulo de um conjunto fechado.
Ação em app offline
Comando no relógio, no óculos ou no carro, sem rede e sem o dado do usuário sair do aparelho.
Triagem antes do modelo grande
Decidir em 90 ms se aquela mensagem precisa mesmo de uma chamada cara.
Lógica condicional no fluxo
O galho do if sai do modelo já tipado, em vez de sair de uma expressão regular sobre texto livre.
Volume
Passar milhões de registros por uma decisão em que o custo por token de um LLM não fecha.
Onde ele não serve
Conversar. O Router foi treinado para emitir só a chamada de ferramenta, e isso não é ajustável. O destino chat do catálogo significa quem responde é o orquestrador — é o Router dizendo: não é comigo.
Conhecimento de mundo. O modelo-base dele, antes do finetune, foi treinado em pergunta e resposta e tenta responder. O que sai é isto:
> quem foi Santos Dumont?
'ION geradacessórios.'E não é defeito de implementação: são 4,4 milhões de parâmetros sobre 5 milhões de tokens. Pela relação de cerca de 20 tokens por parâmetro, esse corpus sustenta uns 250 mil parâmetros — treinamos 17 vezes acima do ponto, então o modelo memoriza trecho em vez de generalizar. O Router funciona apesar disso porque a tarefa tem 23 saídas fechadas, não porque ele aprendeu português.
Procedência
Treinado do zero, com dados nossos
Isso é definição do projeto, não preferência técnica nem questão de custo. A premissa é propriedade completa: dado nosso e pesos nascidos de treino nosso.
O repositório não tem e não terá caminho para:
- finetune, LoRA, adapter ou continued pretraining sobre modelo pré-treinado de terceiros;
- destilação a partir de modelo de terceiros;
- embeddings ou encoders pré-treinados de fora como ponto de partida;
- corpus público de terceiros.
Não é promessa de README. O pré-treino lê exclusivamente o corpus em disco apontado por PANTALA_LOCAL_CORPUS e falha com erro explícito se a variável não existir — não há fonte alternativa para cair. O HuggingFace aparece só como transporte dos repositórios da própria HiNow.
Quando o volume de dado não sustentar um objetivo, a resposta é dizer quanto falta, em tokens, e como obter mais dado nosso. Usar uma base aberta não é uma alternativa neste projeto.
A família
Dois modelos, um nome
São projetos separados de propósito: tamanho, corpus, alvo de qualidade e lugar de execução diferentes. O Router decide para onde vai; o Chat responde.
Pantala Router
Entregue · v5
Lê o que o usuário digitou e devolve para qual agent a mensagem vai. Roda no dispositivo, em 9 MB, com decodificação restrita ao catálogo. Em produção dentro do HiNow.
Pantala Chat
Em construção
Responde. Modelo conversacional só em português — a língua é constante no código, não opção. Três ciclos de treino rodados sobre um modelo de 14M, com um corpus de 13.447 registros classificados um a um. O tamanho final ainda não foi escolhido, e não vai ser antes de medir o corpus.
Ficha técnica
O Pantala Router em números
| Parâmetros | 4,4M (v5) · 26M (v2, em construção) |
|---|---|
| Tamanho no dispositivo | 9 MB, ONNX int8 |
| Latência | ~90 ms por decisão, em CPU, com KV cache |
| Janela do encoder | 1024 tokens — pergunta e catálogo juntos |
| Catálogo em produção | 23 destinos fechados |
| Catálogo prático | até ~12 ferramentas; acima disso, filtrar candidatos antes da chamada |
| Exemplos por ferramenta | mínimo 120 (100 treino · 10 validação · 10 teste) |
| Língua | Português — decisão de projeto, constante no código |
| Execução | Offline, no dispositivo |
| Licença | MIT — código, no repositório hinow-ai/pantala |
Perguntas
O que costumam perguntar
De onde vem o nome?
Pantala flavescens é a libélula que detém o recorde de maior migração de qualquer inseto: cerca de 300 miligramas atravessando oceanos, com direção. É a ideia do projeto — o menor modelo possível, que chega longe e sabe para onde ir.
Isso é só um LLM pequeno?
Não. Um LLM pequeno é um modelo de texto com menos capacidade, e continua tentando escrever. O Router foi treinado para emitir só a chamada de ferramenta, e o decodificador restrito limita a saída ao seu catálogo. O alvo é outro, e a arquitetura acompanha: atenção pura, sem camada feed-forward.
De onde vêm os dados de treino?
De nós. Cada token do pré-treino sai de corpus nosso, em disco. Nenhum peso de terceiros entra, em nenhuma etapa — nem como ponto de partida, nem como professor de destilação. O HuggingFace aparece só como transporte dos repositórios da própria HiNow.
Vocês comparam com algum modelo de fora?
Ainda não, e por um motivo: dizer melhor que X exige rodar X como régua. Até existir essa medida, os números publicados aqui são os nossos, medidos no nosso hardware, e nada além disso.
Roda mesmo sem rede?
Sim. São 9 MB em ONNX int8, executando em CPU. Sem servidor, sem chamada de API e sem o dado do usuário sair do aparelho.
Quando sai o Chat?
Quando o corpus for medido e a régua existir. Há três ciclos de treino rodados e um corpus classificado; o tamanho do modelo sai da conta de tokens, não de uma data no calendário.
Dá para treinar nas minhas ferramentas?
É o caminho previsto: alguns milhares de exemplos e minutos numa GPU comum. A régua prática é no mínimo 120 exemplos por ferramenta — com menos que isso o modelo decora em vez de generalizar, as métricas de treino ficam perfeitas e nada funciona na vida real. E inclua uma ferramenta de escape, senão ele sempre escolhe alguma: sem ela, o modelo não tem como recusar.
Projetos · Modelos próprios
Um modelo que decide, treinado para o seu catálogo
O código é aberto (MIT); o finetune nas suas ferramentas leva minutos. Para treinar conosco ou levar o Pantala para o seu produto, fale com a HiNow.


