Como conectar "vllm gpt-oss-20b" em execução local do n8n?

Descreva o problema/erro/pergunta

Quero acessar meu LLM local (vllm gpt-oss-20b) com URL (http://localhost:8000/v1). Como posso conectar?

Qual é a mensagem de erro (se houver)?

Por favor, compartilhe seu fluxo de trabalho

(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 fluxo de trabalho.)

Compartilhe a saída retornada pelo último nó

Informações sobre sua configuração n8n

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

olá @doyoungim999

Depende de como seu n8n está instalado. Se for um contêiner Docker, você precisará mover o LLM para outro contêiner Docker e acessá-lo pelo nome do contêiner (mais simples), ou permitir acesso do contêiner Docker ao serviço de host

Bem-vindo @doyoungim999!

vLLM expõe uma API compatível com OpenAI, então você pode usar o nó OpenAI Chat Model no n8n para se conectar a ele. Na credencial OpenAI, defina a Base URL para http://localhost:8000/v1 (ou o IP do host real se o n8n estiver rodando em Docker - use http://host.docker.internal:8000/v1 no Mac/Windows, ou o IP LAN da sua máquina no Linux). Coloque qualquer string não vazia como chave de API, já que vLLM não requer autenticação por padrão. Depois, no nó OpenAI Chat Model, digite o nome do modelo manualmente - ele deve corresponder ao ID do modelo que o vLLM está servindo (verifique com curl http://localhost:8000/v1/models`).

@nguyenthieutoan acertou em cheio, Localhost é o que está te travando aqui. Mude para o seu endereço IP da LAN:8080

O vLLM já expõe uma API compatível com OpenAI, então você não precisa de um node especial — use o próprio node da OpenAI apontando para o seu servidor local.

Passo a passo:

  1. Crie uma credencial “OpenAI” no n8n.
  2. Em Base URL coloque o endereço do seu vLLM terminando em /v1 (no seu caso, localhost na porta 8000 seguido de /v1). O /v1 no final é essencial — é o path que o vLLM serve.
  3. No campo API Key o vLLM normalmente não exige chave, mas o n8n exige o campo preenchido: ponha qualquer valor, ex.: sk-local.
  4. No node, em Model, use exatamente o nome que o vLLM está servindo (o --served-model-name / --model, provavelmente gpt-oss-20b). Se o nome não bater, dá erro de model not found.

Pegadinha mais comum: se o n8n roda em Docker, o localhost aponta pro container e não pra sua máquina. Nesse caso troque localhost por host.docker.internal (Mac/Windows) ou pelo IP da sua máquina na LAN, mantendo a porta 8000 e o /v1. Pra confirmar que a URL está certa antes de plugar no n8n, faça um curl no endpoint /v1/models — se listar o gpt-oss-20b, é só replicar o mesmo endereço na credencial.

Então, olha: o problema provavelmente é que seu n8n está rodando dentro do Docker, e lá dentro “localhost” não é seu computador, é o contêiner em si. Então quando você diz para ele procurar vLLM em localhost:8000, ele está procurando dentro dele mesmo, onde obviamente não tem nada, e vai dar erro.

A solução é mudar a Base URL para isto:

http://host.docker.internal:8000/v1

Se você está no Linux também precisa iniciar o n8n com --add-host host.docker.internal:host-gateway, senão ele não vai reconhecer esse endereço (ou, mais simples, é só colocar o IP da sua máquina diretamente).

Depois duas coisas rápidas: certifique-se de que iniciou vLLM com --host 0.0.0.0 (senão ele só escuta a si mesmo), e no campo API Key é só digitar algo aleatório tipo dummy, porque n8n exige mesmo que vLLM não use.

O único caso em que localhost funcionaria é se n8n não estivesse em Docker e instalado diretamente na sua máquina — mas provavelmente não é seu caso, então vai com host.docker.internal e deve funcionar.

Fontes (documentação n8n — páginas do Ollama, mas o fix de Docker localhost se aplica igual ao vLLM já que ele usa a mesma API compatível com OpenAI):

@Michael_Frostbutter depois que alterei o ip ( http://x.x.x.x:8000/v1) consegui acessar com sucesso. Obrigado

obrigado, funcionou. Eu mudei para x.x.x.x em vez de localhost.

Fico feliz em ajudar, localhost nunca será resolvido dentro de um contêiner do docker.

@doyoungim999

Uma observação aqui. Se você estiver hospedando em um dispositivo que sai da sua LAN e se conecta a outra rede, seu endereço IP mudará. Além disso, se você não tiver uma reserva DHCP no seu roteador doméstico para esse dispositivo, também há uma chance de seu endereço IP mudar e quebrar tudo.

como mencionado anteriormente, tente host.docker.internal:PORT e se isso resolver, essa é a solução durável que corrige ambos os problemas com um IP estático acima