PT EN
Voltar ao site

Modelo de Raciocínio do Chat (Thinking)

Uma busca no chat que leva mais de dez segundos para responder mina a confiança do usuário, ainda que a resposta final seja excelente. O campo Modelo de Raciocínio (Thinking), em SistemaIA, ataca exatamente isso: ele permite usar um modelo rápido na parte mecânica do trabalho da IA e reservar o modelo mais capaz para a parte que o usuário lê. Pelas medições, o tempo de resposta do chat cai para menos da metade, sem perda de qualidade no texto.

Permissão necessária: CONFIG_EDIT. Disponível desde: 2026-07-20.

O problema que isto resolve

Uma busca no chat da página principal levava cerca de 11 segundos para responder. A medição em produção — pergunta "a fusopar tem processos abertos?", conversa mrssp5lqssxmd — mostrou onde o tempo ia:

EtapaDuração
Classificação de intenção185 ms
Carga da lista de ferramentas (MCP)169 ms
1ª chamada à IA — escolher a ferramenta9.832 ms
Consulta ao banco de grafo79 ms
2ª chamada à IA — redigir a resposta~2.300 ms

Quase 90% do tempo estava numa única decisão: qual das 28 ferramentas eu chamo? O gemini-2.5-pro é um modelo de raciocínio e, sem teto, entra em dynamic thinking — decide sozinho quanto pensar, e pensa muito, mesmo para uma escolha mecânica.

Medição de controle, com o mesmo prompt trivial e sem ferramentas, confirma a diferença entre modelos:

gemini-2.5-pro     2.309 ms / 2.317 ms
gemini-2.5-flash     730 ms /   717 ms

Nada disso era falta de recurso: os nós estavam a 1% de CPU, o cache da plataforma ocupava 30 MiB de um limite de 6 GiB, e o banco de grafo respondeu à consulta em 79 ms. Era o modelo caro fazendo um trabalho que o modelo rápido resolve igual.

O que a configuração faz

O chat resolve uma pergunta em duas etapas distintas, com exigências diferentes:

  1. Selecionar a ferramenta — decisão mecânica ("preciso de uma consulta ao grafo ou de busca semântica?"). Não precisa de um modelo caro nem de raciocínio longo.
  2. Redigir a resposta — é onde a qualidade do texto importa. Continua no modelo de chat, sem teto de raciocínio.

O campo Modelo de Raciocínio (Thinking) escolhe o modelo da etapa 1 apenas. A etapa 2 usa sempre o Modelo de Chat (LLM) configurado logo acima, na mesma tela.

Deixar o campo em "Mesmo do modelo de chat (sem separação)" mantém o comportamento anterior: um único modelo no ciclo inteiro.

Configuração recomendada

CampoValor
Modelo de Chat (LLM)gemini-2.5-pro
Modelo de Raciocínio (Thinking)gemini-2.5-flash

Efeito esperado pelas medições: a etapa de seleção cai de ~9,8 s para a casa de 2–3 s, levando a busca de ~12 s para ~5 s, sem mudar quem escreve a resposta que o usuário lê.

Passo a passo

  1. Acesse SistemaIA.
  2. Confirme o Modelo de Chat (LLM) desejado (ex.: gemini-2.5-pro).
  3. No campo Modelo de Raciocínio (Thinking), selecione um modelo rápido (ex.: gemini-2.5-flash). A escolha vale para a plataforma inteira — todos os contextos.
  4. Faça uma pergunta de teste no Chat e compare o tempo de resposta. Para voltar atrás, selecione "Mesmo do modelo de chat (sem separação)".

O teto de raciocínio

Independentemente do modelo escolhido, a etapa de seleção passa a mandar um teto de tokens de raciocínio (thinkingConfig.thinkingBudget) ao Gemini. Isso sozinho já derruba a latência, mesmo sem trocar de modelo.

O valor vem da configuração da instalação, definida pelo operador no deploy — não desta tela:

yaml
chat:
  thinkingBudget: 512     # → variável CHAT_THINKING_BUDGET
ValorEfeito
-1Raciocínio dinâmico — comportamento anterior a 2026-07-20
0Desliga o raciocínio. Só o Flash aceita; no Pro a plataforma eleva para 128 (mínimo da API) para não gerar erro 400
> 0Teto explícito em tokens. O Pro aceita de 128 a 32768; o Flash, de 0 a 24576

O teto nunca é aplicado na redação da resposta final: ali o campo sai do pedido e o provedor volta ao seu comportamento padrão.

Como verificar que está ativo

Nos registros do componente de inferência da plataforma, a linha de function-calling passou a informar o orçamento:

Gemini function-calling: model=gemini-2.5-flash tools=28 contents=1 thinkingBudget=512

E nos registros do chat, o início do ciclo informa a separação:

Function-calling loop iniciado: 28 tool(s) disponíveis, modelo=gemini-2.5-pro (seleção de tool em gemini-2.5-flash)

Se aparecer thinkingBudget=default, o teto não chegou ao motor de inferência — confira a variável CHAT_THINKING_BUDGET na configuração da instalação do chat.

Compatibilidade com qualquer modelo Google

O teto de raciocínio (thinkingConfig) não é aceito por todos os modelos, e o suporte não é previsível pelo nome: medições em produção mostraram gemini-3.5-flash aceitando orçamento zero, gemini-3.6-flash rejeitando — e, em um caso, respondendo 200 com resposta vazia a um orçamento válido.

Por isso a plataforma mede na chamada em vez de prever: se o modelo rejeitar o thinkingConfig (erro 400) ou devolver resposta sem texto e sem chamada de ferramenta com o campo presente, o componente de inferência retenta uma única vez sem o campo (e com o teto de saída dobrado). Isso vale para o function-calling e para o streaming. O efeito prático: qualquer modelo Google selecionável na tela funciona no chat — modelos que não suportam o teto apenas pagam a latência do raciocínio dinâmico.

Se mesmo assim o modelo não devolver conteúdo, o usuário recebe uma mensagem clara em português indicando o modelo e sugerindo trocá-lo em Sistema → IA — nunca uma resposta vazia. Nos registros, procure por retentando sem thinkingConfig e terminou sem conteudo.

Assinaturas de raciocínio (thought signatures). Os modelos Gemini 3.x anexam uma assinatura (thoughtSignature) a cada chamada de ferramenta e exigem que ela volte idêntica no histórico da rodada seguinte — sem isso a API rejeita com 400 (missing a thought_signature). A plataforma captura a assinatura na resposta, transporta-a pelo ciclo de function-calling e a devolve no histórico; chamadas construídas pela própria plataforma (ex.: conversão de narração textual) usam o sentinel de bypass documentado pelo Google. Nenhuma configuração é necessária.

Precedência

  1. Modelo explícito informado na chamada (campo model, em integrações via API do DATTA) — desliga a separação: quem pediu um modelo específico o quer no ciclo inteiro.
  2. Modelo de Raciocínio desta tela (llmThinkingModel).
  3. Sem nenhum dos dois: o ciclo inteiro usa o Modelo de Chat (llmModel).

Onde fica armazenado

llmThinkingModel é um campo das configurações de domínio, gravado em todos os contextos: como o llmModel, é escolha de plataforma, não de contexto. A plataforma expõe um endpoint dedicado para gravá-lo — veja a referência de API. O valor é persistido no arquivo runtime_config.json, no armazenamento permanente da configuração da plataforma.

Referências

  • Guia da busca e do chat
  • Prompt personalizado do usuário
  • Recursos do OpenSearch — o outro achado da mesma investigação
  • A arquitetura do ciclo de function-calling está detalhada na documentação de arquitetura do chat.