Por que "Reasoning Effort" está disponível apenas para modelos compatíveis com gpt-5*, o1 e o3+

Olá a todos,

Estou usando o nó OpenAI Chat Model com um endpoint personalizado compatível com OpenAI (LiteLLM) que fornece um modelo que suporta raciocínio.

Por exemplo, meu modelo (glm-5.2) suporta o parâmetro reasoning_effort compatível com OpenAI, mas notei que a opção Reasoning Effort não aparece no nó. Ela só aparece ao selecionar um modelo cujo nome corresponde a certos modelos OpenAI (por exemplo, gpt-5.*), o que parece ser uma verificação do frontend.

Depois de examinar o código-fonte, descobri que o campo só é mostrado quando o nome do modelo corresponde a esta expressão regular:

regex: '(^o1([-\\d]+)?$)|(^o[3-9].*)|(^gpt-5.*)'

Portanto, por exemplo:

  • :cross_mark: glm-5.2 → Reasoning Effort está oculto
  • :white_check_mark: gpt-5.6 → Reasoning Effort aparece

A lógica da requisição em si é genérica — ela simplesmente envia:

{
  "reasoning_effort": "high"
}

Isso significa que a limitação parece estar apenas na UI.

Também notei que os valores disponíveis estão limitados a low, medium e high. Seria bom se o campo fosse editável (ou pelo menos incluísse valores adicionais como none, que vários provedores suportam).

Para provedores compatíveis com OpenAI como LiteLLM, vLLM, LM Studio, OpenRouter, etc., nomes de modelos personalizados ainda podem suportar reasoning_effort, então essa expressão regular impede que os usuários acessem um recurso que seu backend já suporta.

Faria sentido:

  • sempre mostrar a opção ao usar uma URL Base personalizada,
  • determinar o suporte a partir das capacidades do modelo em vez de corresponder ao nome do modelo, ou
  • simplesmente disponibilizar a opção para todos os modelos compatíveis com OpenAI e deixar o backend validar se é suportado?

Estou principalmente curioso se essa é uma decisão de design intencional ou simplesmente um atalho de implementação.

Ótima descoberta, @mohamed3nan !!!

Agora sei como “ativar” raciocínio para outros modelos :partying_face:

Solicitação de recurso aqui:

Você pode querer votá-la

Obrigado! Na verdade, encontrei um workaround nos comentários daquele tópico. Basta alterar o seletor de modelo para “By ID” e inserir manualmente o nome do seu modelo:


O problema restante é que Reasoning Effort aceita apenas low, medium e high. Não há suporte para valores como none, xhigh ou max, mesmo que muitos dos modelos mais recentes suportem.

Parece que esse nó não acompanhou as capacidades de raciocínio mais recentes ainda..

Esperamos que seja atualizado em breve, talvez como parte do n8n v3..

Oi @mohamed3nan
O limite low/medium/high não é apenas o dropdown, o nó também valida o valor em seu request builder. No caminho padrão de Chat Completions, reasoning_effort é encaminhado apenas quando é igual a low, medium ou high, então um valor como none, xhigh ou max é descartado antes da chamada e nunca chega ao seu endpoint, independentemente de como o modelo é selecionado.
Para enviar um reasoning_effort arbitrário para o LiteLLM, contorne o nó e chame seu /chat/completions com um nó HTTP Request, com o valor direto no corpo, n8n o encaminha como está:

{
  "model": "glm-5.2",
  "messages": [ { "role": "user", "content": "..." } ],
  "reasoning_effort": "minimal"
}

Finalmente, isso foi resolvido com uma boa abordagem na nova versão n8n@2.34.0:

Há um novo campo Extra Body que agora podemos usar para passar qualquer coisa que o backend suporte, como reasoning_effort.

Obrigado a todos!