@marvynsoares/n8n-nodes-litellm
v0.1.0
Published
n8n community nodes para LiteLLM (proxy compatível com a API da OpenAI): Chat Model, Embeddings e node de ação (chat/moderations).
Maintainers
Readme
n8n-nodes-litellm
Community nodes do n8n para o LiteLLM — um proxy compatível com a API da OpenAI. Três nodes, todos usando a mesma credencial (LiteLLM API):
- LiteLLM Chat Model — sub-node LangChain (saída
ai_languageModel), conecta em Basic LLM Chain / Summarization Chain / AI Agent*, igual ao "OpenAI Chat Model" nativo. - LiteLLM Embeddings — sub-node LangChain (saída
ai_embedding), conecta em nodes de Vector Store (Simple Vector Store, Pinecone, etc). - LiteLLM — node de ação normal (entrada/saída
main), usa direto num fluxo comum sem precisar de Chain/Agent. Suporta Chat (mandar mensagens e receber o texto de resposta) e Moderation (checar texto contra políticas de conteúdo via/v1/moderations).
Nenhum modelo específico está "hardcoded" — funciona com qualquer modelo que o seu LiteLLM tenha configurado (Azure OpenAI, Anthropic, Google Gemini, Bedrock, etc.), já que o LiteLLM normaliza tudo pro formato da API da OpenAI antes de responder. O nome do provedor (ChatOpenAI/OpenAIEmbeddings) se refere só ao protocolo de comunicação usado, não a uma restrição de qual modelo real você pode chamar.
*Alguns node types de "Chat Model" de terceiros (fora do pacote oficial
@n8n/n8n-nodes-langchain) podem não aparecer na lista de conexões aceitas pelo node AI Agent dependendo da versão do n8n — isso é uma limitação conhecida do próprio n8n (não desse pacote). Com Basic LLM Chain e Summarization Chain funciona sem esse problema. Teste no seu n8n 2.1.4 antes de depender disso em produção.
O que ele resolve
Testar credenciais diferentes (OpenAI direto vs. LiteLLM) sem reconfigurar o node nativo, e não depender de peculiaridades do credential openAiApi nativo (campo Base URL, testes de conexão que esperam GET /models, etc.) — esse node conversa com o LiteLLM usando o SDK oficial @langchain/openai apontado para a Base URL do seu proxy.
Requisitos
- Node.js 18+ e npm/pnpm para compilar o pacote.
- Acesso ao servidor onde o n8n roda (para instalar o pacote compilado).
- n8n 1.x ou 2.x com suporte a community nodes (esse pacote foi desenvolvido e testado tendo como alvo n8n 2.1.4 /
n8n-workflow^2.16.0, mas opeerDependencyé aberto — deve funcionar em versões 1.x recentes também).
Build
cd n8n-litellm-connector
npm install
npm run buildIsso gera a pasta dist/ com o JS compilado e o ícone .svg copiado para o lugar certo.
Instalação no n8n
Escolha UMA das opções abaixo, dependendo de como seu n8n está hospedado.
Opção A — Instalar via UI do n8n (mais simples, exige publicar no npm)
- Publique o pacote no npm (
npm publish, precisa de conta npm) — ou publique em um registry privado, se sua empresa tiver um. - No n8n: Settings → Community Nodes → Install a community node → digite
n8n-nodes-litellm→ Install. - Reinicie o n8n se ele não recarregar os nodes automaticamente.
Opção B — Instalar manualmente sem publicar no npm (self-hosted)
- Depois do
npm run build, gere um tarball local:
Isso cria um arquivonpm packn8n-nodes-litellm-0.1.0.tgz. - Copie esse
.tgzpara o servidor onde o n8n roda. - Na pasta de extensões customizadas do n8n (normalmente
~/.n8n/nodes, ou o caminho definido emN8N_CUSTOM_EXTENSIONS), rode:mkdir -p ~/.n8n/nodes cd ~/.n8n/nodes npm install /caminho/para/n8n-nodes-litellm-0.1.0.tgz - Reinicie o serviço do n8n.
Opção C — Docker
Se o n8n roda em container, monte o pacote (a pasta dist + package.json) como volume dentro de /home/node/.n8n/nodes/node_modules/n8n-nodes-litellm/ (ou o caminho de custom extensions configurado), e reinicie o container.
Configuração
- Depois de instalado, crie uma credencial nova do tipo LiteLLM API:
- Base URL: a URL do seu proxy LiteLLM, com
/v1no final (ex:https://seu-litellm.exemplo.com/v1). - API Key: a virtual key gerada pelo LiteLLM (
sk-...).
- Base URL: a URL do seu proxy LiteLLM, com
- Use qualquer um dos três nodes:
- LiteLLM Chat Model: conecte a um Basic LLM Chain (ou outro node com entrada
ai_languageModel). Campo Model = alias configurado no LiteLLM (ex:gpt-5-mini). - LiteLLM Embeddings: conecte a um node de Vector Store (entrada
ai_embedding). Campo Model = alias do modelo de embeddings (ex:text-embedding-3-small). - LiteLLM (ação normal): escolha o Resource (Chat ou Moderation) e preencha os campos — funciona como qualquer node comum, sem precisar de Chain/Agent.
- LiteLLM Chat Model: conecte a um Basic LLM Chain (ou outro node com entrada
- Rode o workflow.
Estrutura do projeto
n8n-litellm-connector/
├── package.json
├── tsconfig.json
├── scripts/
│ └── copy-assets.js # copia os .svg pra dist/ no build
└── src/
├── index.ts
├── credentials/
│ └── LiteLlmApi.credentials.ts
└── nodes/
├── LmChatLiteLlm/
│ ├── LmChatLiteLlm.node.ts
│ └── liteLlm.svg
├── LmEmbeddingsLiteLlm/
│ ├── LmEmbeddingsLiteLlm.node.ts
│ └── liteLlm.svg
└── LiteLlm/
├── LiteLlm.node.ts
└── liteLlm.svgObservação importante
Esse conector resolve a camada n8n ↔ LiteLLM. Se o LiteLLM retornar erro ao chamar o provedor por trás dele (ex: Azure OpenAI com api_version desatualizada), o erro vai aparecer da mesma forma — esse pacote não contorna problemas de configuração do próprio LiteLLM ou do provedor de origem.
