Documentation

n8n-nodes-openwebui

Nós customizados do n8n para integração com OpenWebUI como provedor de LLM.

Funcionalidades

Este pacote fornece dois nós principais:

  1. OpenWebUI - Nó básico para interação com a API do OpenWebUI
  2. OpenWebUI LLM - Provedor de LLM específico para uso com o AI Agent do n8n

Instalação

Método 1: Via npm (Recomendado)

npm install n8n-nodes-openwebui

Método 2: Manual

  1. Clone este repositório
  2. Execute npm install para instalar as dependências
  3. Execute npm run build para compilar o código
  4. Copie a pasta dist para o diretório de nós customizados do seu n8n

Configuração

1. Credenciais do OpenWebUI

Antes de usar os nós, você precisa configurar as credenciais:

  1. No n8n, vá para Credentials
  2. Clique em Create New Credential
  3. Selecione OpenWebUI API
  4. Preencha:
    • Base URL: URL da sua instância OpenWebUI (ex: http://localhost:3000)
    • API Key: Sua chave de API do OpenWebUI

2. Obtendo a API Key do OpenWebUI

  1. Acesse sua instância do OpenWebUI
  2. Vá para Settings > Account
  3. Na seção API Keys, clique em Create API Key
  4. Copie a chave gerada

Uso

OpenWebUI (Nó Básico)

Este nó fornece funcionalidades básicas para interagir com o OpenWebUI:

  • Chat > Send Message: Enviar mensagens para um modelo
  • Model > Get All: Listar todos os modelos disponíveis

Exemplo de uso:

Input: { "prompt": "Explique machine learning" }
↓
OpenWebUI Node (Chat > Send Message)
↓
Output: { "response": "Machine learning é...", "model": "llama2:latest" }

OpenWebUI LLM (Para AI Agent)

Este nó é especificamente projetado para funcionar com o AI Agent do n8n:

  1. Adicione o nó AI Agent ao seu workflow
  2. Na configuração do AI Agent, em Language Model, selecione OpenWebUI LLM
  3. Configure:
    • Model: Nome do modelo (ex: llama2:latest, mistral:latest)
    • Messages: Mensagens do chat (sistema, usuário, assistente)
    • Additional Options: Temperature, max tokens, etc.

Parâmetros importantes:

  • Model: Nome do modelo no OpenWebUI
  • Temperature: 0-2 (0 = mais determinístico, 2 = mais criativo)
  • Max Tokens: Limite de tokens na resposta
  • Top P: Controle de diversidade (nucleus sampling)
  • Frequency/Presence Penalty: Controle de repetição

Estrutura de Resposta

OpenWebUI (Básico)

{
  "response": "Resposta do modelo",
  "model": "nome-do-modelo",
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 50,
    "total_tokens": 60
  }
}

OpenWebUI LLM (AI Agent)

{
  "message": {
    "role": "assistant",
    "content": "Resposta do modelo"
  },
  "model": "nome-do-modelo",
  "usage": {
    "prompt_tokens": 10,
    "completion_tokens": 50,
    "total_tokens": 60
  },
  "content": "Resposta do modelo",
  "response": "Resposta do modelo"
}

Modelos Suportados

O nó funciona com qualquer modelo disponível na sua instância OpenWebUI, incluindo:

  • Llama 2/3: llama2:latest, llama3:latest
  • Mistral: mistral:latest, mixtral:latest
  • CodeLlama: codellama:latest
  • Gemma: gemma:latest
  • Outros: Qualquer modelo compatível com Ollama/OpenWebUI

Troubleshooting

Erro de Conexão

  • Verifique se a URL base está correta
  • Certifique-se de que o OpenWebUI está rodando
  • Verifique se a API Key é válida

Modelo não encontrado

  • Liste os modelos disponíveis usando Model > Get All
  • Certifique-se de que o modelo está baixado no OpenWebUI
  • Use o nome exato do modelo

Timeout

  • Aumente o timeout nas configurações do n8n
  • Use um modelo menor ou reduza o max_tokens

Desenvolvimento

Para contribuir com o desenvolvimento:

# Clone o repositório
git clone <repo-url>
cd n8n-nodes-openwebui

# Instale dependências
npm install

# Desenvolvimento com watch
npm run dev

# Build para produção
npm run build

# Lint
npm run lint

API do OpenWebUI

Este nó usa os seguintes endpoints da API do OpenWebUI:

  • POST /api/chat/completions - Chat completion (compatível com OpenAI)
  • GET /api/models - Listar modelos
  • GET /api/v1/models - Teste de credenciais

Licença

MIT

Contribuição

Contribuições são bem-vindas! Por favor, abra uma issue ou pull request no repositório.

Suporte

Discussion