Erro de node OpenAI: "messages must be a non-empty array, got null" apesar de ter inputs

Descreva o problema/erro/pergunta

Olá a todos,
Estou enfrentando um problema com o nó OpenAI (usando a operação „Enviar Mensagem para um Modelo") e gostaria de receber insights sobre como corrigi-lo.
Configurei o nó para enviar uma mensagem de texto simples. Como você pode ver na captura de tela anexada, os parâmetros estão preenchidos:
Tipo: Texto
Função: Usuário
Prompt: Olá
No entanto, quando clico em „Executar etapa", ele falha com esta saída:
Requisição inválida - verifique seus parâmetros
messages deve ser uma matriz não vazia, obteve nulo
Parece que o nó está enviando um payload nulo em vez da matriz de mensagens que configurei na interface.
Contexto Adicional:
Estou usando um nome de modelo personalizado (CSU/PRO/GLM-5.1) por meio de uma URL base personalizada.
Alguém já enfrentou esse glitch de interface ou problema de formatação de payload antes? Existe uma solução alternativa para garantir que o nó empacote corretamente as mensagens na matriz JSON?
Obrigado antecipadamente pela sua ajuda!

Qual é a mensagem de erro (se houver alguma)?

Compartilhe seu workflow

(Selecione os nós em sua tela e use os atalhos de teclado CMD+C/CTRL+C e CMD+V/CTRL+V para copiar e colar o workflow.)

Compartilhe a saída retornada pelo último nó

Informações sobre sua configuração n8n

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

veja minha resposta abaixo, pesquisei mais e encontrei uma solução melhor!

@CuO acho que consigo resolver agora. Pesquisei mais a respeito, o n8ns v2 message a model aponta para a API de Respostas mais recente do OpenAI, que envia o prompt em um campo input, não em um array de messages. seu custom gateway quase certamente só fala a API chat/completions antiga, então recebe um body sem a chave messages e devolve exatamente isso, resultado null, então não é realmente sua config. duas formas de contornar, use o node OpenAI legado (1.4, ele ainda acessa chat/completions) se conseguir escolher a versão do node, ou o node http request direto para /chat/completions do seu gateway com o array de messages. mesma causa raiz v2 responses-api que esta thread resolvida

Oi @CuO

Este é um comportamento conhecido que ocasionalmente surge ao usar URLs base customizadas e nomes de modelo customizados (como CSU/PRO/GLM-5.1), já que a lógica de validação interna do nó pode não reconhecer o modelo customizado, levando-o a enviar um payload incompleto ou nulo:

  1. Nas versões recentes do n8n, a URL Base foi movida dos parâmetros do nó para as configurações de Credentials.
  • Vá para Credentials →→ Selecione sua credencial OpenAI.
  • Certifique-se de que a URL Base está lá inserida (ex: https://your-proxy-url.com/v1).
  • Crucial: Certifique-se de incluir o sufixo /v1 se seu provedor exigir, pois alguns gateways falham ao rotear solicitações sem ele.
  1. O nome do modelo CSU/PRO/GLM-5.1 contém barras. Algumas versões do nó OpenAI tentam validar o nome do modelo em relação a uma lista conhecida ou um endpoint /models. Se a validação falhar ou o nome customizado desencadear um erro de parsing, o nó pode “desistir” de construir o payload.
  • Tente envolver o nome do modelo em uma expressão (clique no ícone de engrenagem →→ Expression) e insira-o como uma string: {{ "CSU/PRO/GLM-5.1" }}. Isso às vezes contorna falhas de validação no nível da UI.
  1. Se o nó OpenAI nativo continuar enviando um payload nulo, a solução mais confiável é usar o nó HTTP Request. Isso contorna o wrapper OpenAI interno do n8n e permite que você envie o JSON exato que a API espera.

Configure o nó HTTP Request da seguinte forma:

  • Method: POST
  • URL: [Sua URL Base Customizada]/chat/completions
  • Authentication: Header Auth (Name: Authorization, Value: Bearer YOUR_API_KEY)
  • Send Body: ON
  • Body Content Type: JSON
  • Specify Body: Using Fixed Fields (ou JSON para controle total)
  1. Se usar o modo “JSON”, use este payload exato:
{
  "model": "CSU/PRO/GLM-5.1",
  "messages": [
    {
      "role": "user",
      "content": "Hi"
    }
  ],
  "temperature": 0.7
}