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 , 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:
| Etapa | Duração |
|---|---|
| Classificação de intenção | 185 ms |
| Carga da lista de ferramentas (MCP) | 169 ms |
| 1ª chamada à IA — escolher a ferramenta | 9.832 ms |
| Consulta ao banco de grafo | 79 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 msNada 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:
- 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.
- 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
| Campo | Valor |
|---|---|
| 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
- Acesse .
- Confirme o Modelo de Chat (LLM) desejado (ex.:
gemini-2.5-pro). - 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. - Faça uma pergunta de teste no 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:
chat:
thinkingBudget: 512 # → variável CHAT_THINKING_BUDGET| Valor | Efeito |
|---|---|
-1 | Raciocínio dinâmico — comportamento anterior a 2026-07-20 |
0 | Desliga o raciocínio. Só o Flash aceita; no Pro a plataforma eleva para 128 (mínimo da API) para não gerar erro 400 |
> 0 | Teto 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=512E 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
- 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. - Modelo de Raciocínio desta tela (
llmThinkingModel). - 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.