@gtvh2o/n8n-nodes-deepseek-fix
v0.2.20-alia-patch4
Published
n8n community node for DeepSeek V4 models (deepseek-v4-flash, deepseek-v4-pro) with thinking mode control
Maintainers
Readme
n8n-nodes-deepseek-v4 (fork corrigido)
Fork interno mantido pela Alia, baseado no pacote original
n8n-nodes-deepseek-fix(MIT). Mudanças:
- Os
require()de@langchain/openaie@n8n/ai-utilitiesestavam hardcoded para um caminho absoluto (/usr/local/lib/node_modules/n8n/node_modules/...), o que quebrava em instalações onde o n8n não expõe esses módulos nesse caminho exato (ex: instalações baseadas em pnpm). Corrigido para resolução de módulo normal, com as duas libs declaradas comodependenciesreais.- O tipo de credencial vinha registrado internamente como
deepSeekApi— o mesmo identificador usado pelo node nativoDeepSeek Chat Modeldo n8n. Isso colidia com credenciais já existentes, fazendo o node nativo parar de autenticar depois da instalação deste pacote. Renomeado paradeepSeekV4FixApi(nome exibido continua "DeepSeek API").- Selecionar Thinking Mode: Disabled não enviava
{"thinking": {"type": "disabled"}}— o código só enviava o campo quando thinking estava habilitado, e simplesmente omitia o parâmetro quando desabilitado. Como a API da DeepSeek vem com thinking habilitado por padrão quando o parâmetro não é enviado, "Disabled" na prática não desabilitava nada. Corrigido para enviar{"thinking": {"type": "disabled"}}explicitamente.- Causa raiz real dos itens 3 continuar falhando mesmo corrigido: o node passava o parâmetro
thinkingviaconfiguration.extraBodyproChatOpenAIdo@langchain/openai(JS) — mas esse campo não existe na implementação JS do LangChain (só na versão Python, viaextra_body). O valor era descartado silenciosamente antes mesmo de chegar na API. Corrigido para usarmodelKwargs, que é o mecanismo real do LangChain JS pra mesclar campos extras no corpo da requisição.
Nó comunitário do n8n para os modelos DeepSeek V4 (deepseek-v4-flash e deepseek-v4-pro), com controle completo do Thinking Mode.
Modelos suportados
| Model ID | Alias legado | Thinking |
|---|---|---|
| deepseek-v4-flash | deepseek-chat | Opcional |
| deepseek-v4-pro | deepseek-reasoner | Opcional |
| deepseek-chat | — | Sem thinking por padrão |
| deepseek-reasoner | — | Com thinking por padrão |
Features
- ✅ Thinking Mode toggle — Desabilite, habilite com
highoumaxeffort - ✅ Retorna
reasoning_contentseparado docontent(opcional) - ✅ Parâmetros
temperature,top_p,presence_penalty,frequency_penaltysão automaticamente omitidos quando thinking está ativo (evita conflito com a API) - ✅ Suporte a JSON Output Mode (
response_format: json_object) - ✅ Stop sequences configuráveis
- ✅ Custom Base URL (útil para proxies OpenAI-compatible)
Instalação
Via npm (produção)
npm install @aliaapp/n8n-nodes-deepseek-fixVia n8n UI
Vá em Settings → Community Nodes → Install e busque @aliaapp/n8n-nodes-deepseek-fix.
Desenvolvimento local
cd n8n-nodes-deepseek-v4
npm install
npm run build
# Copie a pasta para ~/.n8n/custom/ ou use npm linkConfiguração da Credencial
- Acesse platform.deepseek.com e gere uma API Key
- No n8n, vá em Credentials → New → DeepSeek API
- Insira a API Key e salve
Parâmetros do Nó
| Parâmetro | Descrição |
|---|---|
| Model | Modelo a usar (v4-flash, v4-pro, etc.) |
| System Message | Prompt de sistema (opcional) |
| User Message | Prompt do usuário |
| Thinking Mode | Disabled / Enabled – High / Enabled – Max |
| Return Thinking Content | Incluir reasoning_content no output |
| Temperature | Temperatura (ignorada com thinking ativo) |
| Max Tokens | Máximo de tokens gerados |
| JSON Output Mode | Força output como JSON válido |
| Stop Sequences | Sequências de parada (vírgula separadas) |
Saída
{
"content": "Resposta final do modelo",
"reasoning_content": "Chain-of-thought (apenas se thinking ativo e Return habilitado)",
"model": "deepseek-v4-flash",
"usage": {
"prompt_tokens": 100,
"completion_tokens": 200,
"total_tokens": 300
},
"finish_reason": "stop"
}Por que desabilitar o Thinking?
O Thinking Mode consome mais tokens e é mais lento. Para tarefas simples (classificação, extração, tradução, geração de texto direto), desabilitá-lo é mais eficiente e barato. O nó envia explicitamente {"thinking": {"type": "disabled"}} para garantir que o modelo não use reasoning mesmo quando o default da API for enabled.
Licença
MIT
