Pantala
Projetos · Modelos própriosEquipe HiNow

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.

Router v5 · em produção no HiNowVer no GitHub

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:

  1. 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.

  2. 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.

  3. 03

    O encoder

    Lê pergunta e catálogo juntos, em uma janela de 1024 tokens. O catálogo inteiro entra em toda chamada.

  4. 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.

  5. 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.

  6. 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ãoLLM de chatPantala · System One
Otimizado paraPreferê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.
EntradaConversa — uma sequência de mensagens.Estado do programa mais o catálogo de ferramentas disponíveis naquele momento.
SaídaString 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 rodaServidor com GPU, do outro lado da rede.No aparelho: celular, relógio, óculos. Offline.
TamanhoBilhões de parâmetros.4,4 milhões de parâmetros. 9 MB em ONNX int8.
Tempo de respostaSegundos, com a latência da rede por cima.Cerca de 90 ms em CPU, sem rede nenhuma.
Custo por decisãoPor token, a cada chamada.Zero. O modelo já está instalado no aparelho.
Dados de treinoCorpus da internet, com procedência difícil de reconstruir.Nossos, do zero. Cada token do pré-treino saiu de dado que é nosso.
Para que serveConversar, 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.

FormaQuando usarExemplos
ClassificaçãoUma categoria conhecida precisa vencerIntenção, assunto, departamento, tipo de risco, tipo de entidade
DetecçãoVocê quer a probabilidade de uma propriedade existirSpam, urgência, dado sensível, pedido de cancelamento
PontuaçãoA resposta cabe numa régua ordenadaSeveridade, relevância, qualidade, frustração
RoteamentoUma categoria escolhe o próximo caminho no códigoUso de ferramenta, escalação, fila de suporte, modelo
BuscaVocê quer achar itens que casem com uma consultaBusca semântica, descoberta de documento, geração de candidatos
RecuperaçãoO fluxo precisa do contexto mais relevanteContexto de RAG, recuperação de evidência, consulta de cadastro
OrdenaçãoItens precisam de ordem por relevância ou qualidadeResultados de busca, recomendações, priorização de candidatos
VerificaçãoUm artefato precisa ser checado por modos de falhaViolação de política, erro de chamada, qualidade de resposta
Feature para MLUm modelo clássico precisa de sinal semânticoIntenção de compra, pressão competitiva, sinal de churn
Extração estruturadaCampos conhecidos precisam sair de texto livreAtributos 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.

  1. 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.

  2. 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.

  3. 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.

  4. 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 é.

  5. 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 gerada​cessó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âmetros4,4M (v5) · 26M (v2, em construção)
Tamanho no dispositivo9 MB, ONNX int8
Latência~90 ms por decisão, em CPU, com KV cache
Janela do encoder1024 tokens — pergunta e catálogo juntos
Catálogo em produção23 destinos fechados
Catálogo práticoaté ~12 ferramentas; acima disso, filtrar candidatos antes da chamada
Exemplos por ferramentamínimo 120 (100 treino · 10 validação · 10 teste)
LínguaPortuguês — decisão de projeto, constante no código
ExecuçãoOffline, no dispositivo
LicençaMIT — 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.