Erro no nó Azure OpenAI Chat

Descreva o problema/erro/pergunta

O nó Azure OpenAI chat não está funcionando em nossos workflows de agente de chat. Mesmo que não tenhamos feito nenhuma alteração na configuração ou no conteúdo desses fluxos, estamos recebendo um erro de solicitação inválida. Acreditamos que algo mudou do lado da API do OpenAI, mas o nó ainda não foi atualizado para refletir essa mudança.

Qual é a mensagem de erro (se houver)?

Solicitação inválida - por favor, verifique seus parâmetros

Parâmetro obrigatório ausente: ‘tools[0].type’.

Por favor, compartilhe seu workflow

Compartilhe a saída retornada pelo último nó

Solicitação inválida - por favor, verifique seus parâmetros
Parâmetro obrigatório ausente: ‘tools[0].type’.

Informações sobre sua configuração n8n

  • Versão n8n: 2.29.10
  • Banco de dados (padrão: SQLite): SQLite
  • Configuração n8n EXECUTIONS_PROCESS (padrão: own, main): own
  • Executando n8n via (Docker, npm, n8n cloud, desktop app): Docker
  • Sistema operacional: RHEL

Você consegue usar o modelo de chat da OpenAI?
É só mudar a URL base. Funciona?

Ei, obrigado pela resposta rápida!

A URL base para nossa credencial do Azure OpenAI é “https://swedencentral.api.cognitive.microsoft.com/

Você acha que funcionaria com OpenAI node? Como devemos modificar a URL base?

Para fazer o nó OpenAI funcionar com o Azure, você precisaria configurar um proxy (como LiteLLM) que traduz requisições no formato OpenAI para requisições no formato Azure.

Esse erro ‘Missing required parameter: tools[0].type’ quase sempre é a api-version do Azure, não a credencial em si. Recentemente algumas regiões (Sweden Central inclusive) passaram a validar o array de tools de forma estrita, exigindo que cada tool venha como {“type”:“function”,“function”:{…}}. Se a sua api-version aponta pra ‘latest’/preview, o endpoint espera o formato novo mas o payload que sai do node não bate, e você vê esse erro mesmo sem ter mudado nada no fluxo. Fixe a api-version numa GA estável, tipo 2024-10-21 (ou 2024-08-01-preview), diretamente na credencial/base URL do deployment, em vez de deixar na mais nova. Isso realinha o payload que o node manda com o que o endpoint aceita. Dois checks rápidos pra confirmar o diagnóstico antes de mexer: 1) tire temporariamente os sub-nodes de tool do AI Agent e rode só o chat puro; se funcionar, está confirmado que é a serialização das tools atrelada à api-version, e não a credencial. 2) confirme que o deployment é um modelo que suporta tool calling numa versão recente (gpt-4o / gpt-4-turbo); deployments antigos de gpt-35-turbo rejeitam o formato de tools. Proxy tipo LiteLLM resolve, mas é workaround, não precisa disso pra esse caso.

Olá, muito obrigado por sua resposta detalhada! Depois de alterar a api-version e testar os exemplos GA estáveis que você forneceu, estamos recebendo outro erro, mas desta vez ele vem do nó AI Agent, não do nó Azure OpenAI Chat. Aqui está o rastreamento do erro:

NodeOperationError: Cannot read properties of undefined (reading ‘toLowerCase’) at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+n8n-nodes-langchain@file+packages+@n8n+nodes-langchain_2c7f106572ec97ecf6e9416b33a264bd/node_modules/@n8n/n8n-nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V2/execute.ts:418:13 at Array.forEach (<anônimo>) at ExecuteContext.toolsAgentExecute (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+n8n-nodes-langchain@file+packages+@n8n+nodes-langchain_2c7f106572ec97ecf6e9416b33a264bd/node_modules/@n8n/n8n-nodes-langchain/nodes/agents/Agent/agents/ToolsAgent/V2/execute.ts:406:17) at ExecuteContext.execute (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/@n8n+n8n-nodes-langchain@file+packages+@n8n+nodes-langchain_2c7f106572ec97ecf6e9416b33a264bd/node_modules/@n8n/n8n-nodes-langchain/nodes/agents/Agent/V2/AgentV2.node.ts:142:10) at WorkflowExecute.executeNode (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+exporter-trace-otlp_cf5896492347c4895f0373f4acc773d7/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1080:8) at WorkflowExecute.runNode (/usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+exporter-trace-otlp_cf5896492347c4895f0373f4acc773d7/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1380:11) at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+exporter-trace-otlp_cf5896492347c4895f0373f4acc773d7/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:1842:27 at /usr/local/lib/node_modules/n8n/node_modules/.pnpm/n8n-core@file+packages+core_@opentelemetry+api@1.9.0_@opentelemetry+exporter-trace-otlp_cf5896492347c4895f0373f4acc773d7/node_modules/n8n-core/src/execution-engine/workflow-execute.ts:2534:11

Você acha que pode estar relacionado à alteração da api-version no nó de chat? Porque no editor de depuração, estou vendo esta mensagem na janela de chat na parte inferior esquerda:

O erro toLowerCase no AI Agent (ToolsAgentV2) é uma questão separada da api-version - geralmente ocorre quando uma chamada de ferramenta retorna undefined ou null em vez de uma string, e o agente tenta chamar .toLowerCase() nela para normalizar o nome da ferramenta antes do roteamento. Duas coisas a verificar:

  1. Isole qual ferramenta está causando - remova ferramentas uma por uma do AI Agent até que o agente seja executado sem falhar. A ferramenta que quebra está retornando um formato de resposta ruim.
  2. Certifique-se de que cada nó de ferramenta conectado sempre retorna { json: { output: "some string" } } - o AI Agent espera o resultado da ferramenta no campo output como uma string. Se seu nó de ferramenta não retornar nada ou uma forma inesperada, você terá esse erro.

O “Connection rejected” na janela de chat sugere que a conexão Azure OpenAI em si ainda está falhando upstream, então estabilizar isso primeiro (corrigir a api-version como nocoderobots descreveu) ajudará a isolar se o erro de ferramenta é secundário.

Olá,

Muito obrigado pela sua resposta detalhada! Na verdade, foi causado por um nó de Chat conectado ao Agente de IA como uma ferramenta. Então quando removemos, funcionou novamente. Vou investigar como podemos corrigi-lo e reconectá-lo ao Agente de IA.

Obrigado a todos pelo tempo e apoio!

Olá @nguyenthieutoan ,

Temos tentado corrigir o problema no nó de chat human-in-the-loop, mas parece haver um problema na comunicação entre os nós.

Ainda estamos recebendo o erro

Bad request - please check your parameters
400 Missing required parameter: ‘tools[0].type’.

Tentamos adicionar o nó do zero (para verificar se há um problema de compatibilidade de versão do nó) e fazer todas as configurações novamente do zero. Não sei qual poderia ser o problema. Você tem alguma ideia de como isso poderia ser corrigido?

Reconstruir os nós do zero não vai resolver isso — o problema está na credencial do Azure, não na configuração do nó. Verifique a versão da API definida na sua credencial do Azure OpenAI. Se estiver apontando para uma versão mais recente da API (como 2025-xx-xx ou qualquer preview), o Azure agora exige estritamente type: "function" em toda definição de ferramenta, o que o nó n8n ainda não envia.

A solução: abra sua credencial do Azure OpenAI e fixe a versão da API em 2024-10-21 (GA estável). Essa versão aceita o formato de ferramenta que o n8n atualmente envia. Se sua credencial usar uma URL base com a versão incorporada, atualize essa URL diretamente.

Opa! Sua intuição está 100% correta — algo realmente mudou do lado da API OpenAI, e está causando exatamente esse problema.

A OpenAI atualizou recentemente seus requisitos de API para chamadas de função e ferramentas. Agora eles exigem explicitamente que um campo type (geralmente definido como "function") seja passado em cada definição de ferramenta no payload. Como seu AI Agent está passando ferramentas para o nó Azure OpenAI Chat usando a estrutura de payload antiga e legada, a API do Azure está rejeitando com o erro Missing required parameter: 'tools[0].type'.

A Solução:
Vejo que você está executando a versão n8n 2.29.10. O time n8n já está ciente dessa mudança na API OpenAI e lançou um patch especificamente para resolvê-la.

Tudo o que você precisa fazer é atualizar sua imagem Docker n8n para a versão 2.31.0 ou superior.

Depois de atualizar, o nó Azure OpenAI estruturará automaticamente o array tools para estar em conformidade com os novos requisitos, e seus agentes de chat estarão online novamente instantaneamente. Nenhuma mudança de workflow necessária!


P.S. Na verdade, passei seu post exato do fórum pelo n8n Mastery / Sensei (um Co-pilot AI gratuito que construí para a comunidade n8n), e ele identificou imediatamente a mudança de payload do OpenAI e o mismatch exato de versão n8n!

Estou anexando uma captura de tela de sua análise completa abaixo. Se você quiser um assistente para debugar instantaneamente erros de AI Agent ou mismatches de versão de API bem próximo ao seu canvas, confira aqui: https://n8n-sensei-app-nu.vercel.app/

Espero que a atualização corra suavemente e deixe seus workflows rodando novamente!

Sim, obrigado! Esta mudança parece resolver nosso problema no momento.