Chat completions via API OpenAI com configuração de model e messages.
Nó OpenAI
O nó OpenAI (openai_chat) envia uma requisição de chat completion para modelos OpenAI (GPT-4o, GPT-5 Mini, etc.) pelo proxy de IA de workflows da WhatsWave. Use-o para classificação, resumo, extração estruturada e geração de texto dentro das Automações.
Figura 1: Nó OpenAI — API key, model, response format, prompt e temperature
O que faz
A cada execução, o engine do workflow:
- Resolve placeholders
{{variable}}dentro do JSON de Messages - Envia
POST {{API_URL}}/workflows/ai/chatcom provideropenai, o modelo selecionado e as mensagens - Autentica com o integration token da empresa (
{{api_token}}) - Usa a AI API key selecionada no nó (ou a primeira chave OpenAI ativa da empresa)
- Retorna a mensagem do assistente em
data.choices[0].message.contentmais o usage de tokens
| Propriedade | Valor |
|---|---|
| Node type ID | openai_chat |
| Palette label | OpenAI |
| Executor | http_request (proxied) |
| API endpoint | POST /workflows/ai/chat |
| Provider enviado no body | openai |
| Request timeout | 30 segundos |
Pré-requisitos
- Integration token — gerado em Settings → API Keys (injetado como
{{api_token}}automaticamente) - OpenAI API key — adicione em AI / LLM keys na mesma página de configurações e selecione no nó
- Assinatura ativa ou cota de tokens disponível (quando não usar chave própria)
Guia de configuração
Passo 1 — Adicionar o nó
- Abra Automações e edite seu workflow
- Abra a paleta e selecione o grupo AI
- Arraste OpenAI para o canvas
- Conecte após o trigger ou um nó que prepare contexto (texto da mensagem, campos do CRM, etc.)
Passo 2 — Selecionar API key e model
Clique duas vezes no nó. No topo, use o seletor API key / Model:
| Controle | Descrição |
|---|---|
| API key | Chave OpenAI armazenada na empresa (Settings → API Keys). Necessária para execuções confiáveis; se vazia, o engine escolhe a primeira chave OpenAI ativa |
| Model | Uma das opções embutidas (veja tabela abaixo) |
Modelos disponíveis (template do nó):
| Value | Label |
|---|---|
gpt-5.4 | GPT-5.4 |
gpt-4o | GPT-4o |
gpt-5.4-mini | GPT-5.4 Mini (default) |
gpt-5-mini | GPT-5 Mini |
gpt-4.1 | GPT-4.1 |
gpt-5-nano | GPT-5 Nano |
gpt-4o-mini | GPT-4o Mini |
Passo 3 — Escolher response format
| Value | Label | Comportamento |
|---|---|---|
text | Text (default) | Resposta do assistente em texto simples |
json_object | JSON (object) | Modo JSON da OpenAI — o modelo deve retornar um objeto JSON; o engine pode parsear em objeto nativo em content |
Use JSON (object) quando a próxima etapa precisar de campos estruturados (ex.: { "score": 85, "tier": "hot" }).
Passo 4 — Escrever o prompt (Messages)
O campo Prompt edita o array Messages (JSON) subjacente. Por padrão:
[
{ "role": "user", "content": "Your instructions here..." }
]
Roles suportadas: system, user, assistant. Variáveis funcionam dentro de content:
Classify this lead message as hot, warm, or cold.
Message: {{trigger.body.message}}
Contact name: {{trigger.body.name}}
Para contexto multi-turno, mude para JSON bruto no editor (se exposto) ou monte as mensagens em um nó JavaScript e passe via variável.
Exemplo avançado — system + user:
[
{
"role": "system",
"content": "You are a sales assistant. Reply ONLY with JSON: {\"tier\":\"hot|warm|cold\",\"score\":0-100}."
},
{
"role": "user",
"content": "Lead message: {{trigger.body.text}}"
}
]
Passo 5 — Definir temperature
| Campo | Default | Range | Orientação |
|---|---|---|---|
| Temperature | 0.7 | 0–2 (validado no servidor) | Valores baixos (0–0.3) para classificação/extração; mais altos (0.7–1) para copy criativa |
Passo 6 — Testar e inspecionar a saída
- Salve o workflow
- Execute Test ou clique em Play no nó
- No log de execução, confira Prompt sent (mensagens resolvidas) e Output
- Copie caminhos da aba References do nó
Campos de saída
A saída do nó segue o envelope HTTP padrão:
| Caminho | Descrição |
|---|---|
status | Status HTTP (200 em sucesso) |
data.choices | Array com uma mensagem do assistente |
data.choices[0].message.content | Resposta do modelo (string ou objeto JSON parseado) |
data.usage.prompt_tokens | Tokens de entrada |
data.usage.completion_tokens | Tokens de saída |
data.usage.total_tokens | Total de tokens |
data.is_own_key | true quando usa a chave OpenAI da empresa |
Exemplos (node ID openai_1):
{{openai_1.data.choices[0].message.content}}
{{input.data.choices[0].message.content}}
{{openai_1.data.usage.total_tokens}}
Em erro, a saída inclui error e opcionalmente http_error_detail.
Dicas e boas práticas
- Use JSON mode + system prompt quando nós seguintes precisarem de campos previsíveis
- Mantenha prompts explícitos — inclua formato de saída, valores permitidos e exemplos
- Prefira GPT-4o Mini para classificação em alto volume; GPT-4o para raciocínio mais difícil
- Adicione um nó Variable após OpenAI para armazenar
tierouscoreparseados da resposta - Use sua própria API key em uso intenso para evitar limites de tokens do plano (
is_own_key: true) - Inspecione Prompt sent nos logs quando variáveis resolverem para strings vazias
- Combine com Condition — ramifique com base no tier extraído ou score numérico
FAQ
Por que recebo "Nenhuma chave de API ativa para openai"?
Nenhuma chave OpenAI está selecionada no nó e nenhuma está configurada para a empresa. Adicione uma chave em Settings → API Keys, selecione no nó e salve o workflow.
Por que {{trigger.body.message}} está vazio no prompt?
O nome do campo do webhook pode ser diferente (text, body, caminhos aninhados). Inspecione a saída do trigger no drawer de teste e use o caminho exato.
Por que o JSON mode retorna string em vez de objeto?
O modelo pode ter retornado JSON inválido ou cercado por markdown fences. Aperte o system prompt ou faça parse em um nó JavaScript com JSON.parse.
Este nó suporta function calling / tools?
Não — é um chat completion único. Para ferramentas e memória, use o nó AI Agent no grupo WhatsWave.
Os tokens contam contra meu plano?
Sim, a menos que is_own_key seja true (sua própria chave OpenAI). O uso aparece em data.usage e é rastreado para cobrança.
Posso usar um nome de modelo customizado fora do dropdown?
O template do nó lista modelos fixos. Para outros modelos, use o nó HTTP genérico contra a API da OpenAI ou solicite atualização do template.
Exemplos de uso
Exemplo 1 — Lead scoring
Nó OpenAI:
- Model:
gpt-5.4-mini - Response format:
json_object - Prompt:
Rate this lead 0-100 and return JSON { "score": number, "reason": string }. Message: {{trigger.body.message}}
Nó Variable: score = parseado de {{input.data.choices[0].message.content.score}}
Condition: {{variables.score}} >= 80 → ramo hot
Exemplo 2 — Resumir ticket para resposta no WhatsApp
Prompt:
Summarize in 2 short sentences in Portuguese:
{{trigger.body.ticket_description}}
Send message: {{input.data.choices[0].message.content}}
Exemplo 3 — Extrair order ID de texto livre
Prompt:
Extract order_id from the text. Reply JSON only: {"order_id":"..."}
Text: {{trigger.body.message}}
Nó HTTP: buscar pedido usando {{variables.order_id}} definido a partir da saída da IA
Referências de API
| Recurso | Link |
|---|---|
| WhatsWave workflow AI chat | POST https://api.whatswave.com.br/workflows/ai/chat |
| OpenAI Chat Completions | platform.openai.com/docs/api-reference/chat |
| OpenAI JSON mode | platform.openai.com/docs/guides/structured-outputs |
| Visão geral do grupo IA | /ajuda/nos-workflow-ai |
| Variáveis em workflows | /ajuda/variaveis-no-workflow |
Este artigo foi útil?
Precisa de mais ajuda? Falar com suporte