litellm

n8n node para integração com LiteLLM com manipulação de headers

Package Information

Downloads: 23 weekly / 56 monthly
Latest Version: 1.0.4
Author: Your Name

Documentation

n8n-nodes-litellm

Um node personalizado para o n8n que permite integração com LiteLLM com manipulação avançada de headers, incluindo a capacidade de adicionar identificadores de usuário para tracking e rate limiting.

Características

  • ✅ Integração com LiteLLM API
  • ✅ Manipulação de headers customizados
  • ✅ Identificação de usuário para tracking
  • ✅ Suporte para chat completions
  • ✅ Configuração flexível de parâmetros (temperature, max_tokens, etc.)
  • ✅ Tratamento de erros robusto
  • ✅ Testes unitários incluídos

Instalação

Instalação via npm (recomendado)

npm install n8n-nodes-litellm

Instalação manual

  1. Clone este repositório
  2. Navegue até o diretório do projeto
  3. Instale as dependências:
    npm install
    
  4. Compile o projeto:
    npm run build
    
  5. Copie a pasta dist para o diretório de nodes customizados do n8n

Configuração

Credenciais

  1. No n8n, vá para Credentials
  2. Clique em Add Credential
  3. Selecione LiteLLM API
  4. Configure:

Uso do Node

  1. Adicione o node LiteLLM ao seu workflow
  2. Configure os parâmetros:
    • Model: O modelo a ser usado (ex: gpt-3.5-turbo, gpt-4)
    • Messages: Array de mensagens em formato JSON
    • Temperature: Temperatura para geração (0-2)
    • Max Tokens: Número máximo de tokens
    • User Identifier: Identificador do usuário (opcional)
    • Custom Headers: Headers adicionais em formato JSON (opcional)

Exemplos de Uso

Exemplo 1: Chat Básico

{
  "model": "gpt-3.5-turbo",
  "messages": [
    {"role": "system", "content": "Você é um assistente útil."},
    {"role": "user", "content": "Olá, como você está?"}
  ],
  "temperature": 0.7,
  "maxTokens": 150
}

Exemplo 2: Com Identificação de Usuário

{
  "model": "gpt-4",
  "messages": [
    {"role": "user", "content": "Explique a teoria da relatividade"}
  ],
  "temperature": 0.5,
  "maxTokens": 500,
  "userIdentifier": "usuario@empresa.com"
}

Exemplo 3: Com Headers Customizados

{
  "model": "gpt-3.5-turbo",
  "messages": [
    {"role": "user", "content": "Traduza para inglês: Olá mundo"}
  ],
  "temperature": 0.3,
  "maxTokens": 100,
  "userIdentifier": "tradutor@empresa.com",
  "customHeaders": {
    "X-Request-ID": "12345",
    "X-Client-Version": "1.0.0"
  }
}

Parâmetros Avançados

Additional Fields

O node suporta parâmetros adicionais através do campo Additional Fields:

  • Top P: Controla a diversidade da geração (0-1)
  • Frequency Penalty: Penaliza tokens frequentes (-2 a 2)
  • Presence Penalty: Penaliza tokens presentes (-2 a 2)
  • Stream: Habilita resposta em stream (true/false)

Headers Enviados

O node envia automaticamente os seguintes headers:

  • Content-Type: application/json
  • Authorization: Bearer {apiKey}
  • X-User-Identifier: {userIdentifier} (se fornecido)
  • Headers customizados (se fornecidos)

Tratamento de Erros

O node possui tratamento robusto de erros:

  • Validação de JSON para messages e customHeaders
  • Verificação de array válido para messages
  • Tratamento de erros da API com mensagens claras
  • Opção de continuar em caso de falha (continue on fail)

Desenvolvimento

Estrutura do Projeto

n8n-nodes-litellm/
├── nodes/
│   └── LiteLLM/
│       ├── LiteLLM.node.ts      # Lógica principal do node
│       └── litellm.svg          # Ícone do node
├── credentials/
│   └── LiteLLMApi.credentials.ts # Configuração de credenciais
├── test/
│   └── LiteLLM.node.test.ts    # Testes unitários
├── dist/                        # Arquivos compilados
├── package.json
├── tsconfig.json
└── README.md

Comandos de Desenvolvimento

# Instalar dependências
npm install

# Desenvolvimento com watch mode
npm run dev

# Build do projeto
npm run build

# Executar testes
npm test

# Executar testes com coverage
npm run test:coverage

# Lint
npm run lint

# Formatar código
npm run format

Testes

O projeto inclui testes unitários abrangentes que cobrem:

  • Validação de estrutura do node
  • Execução com parâmetros válidos
  • Tratamento de erros
  • Validação de JSON
  • Headers customizados
  • Identificação de usuário

Execute os testes com:

npm test

Contribuindo

  1. Fork o projeto
  2. Crie uma branch para sua feature (git checkout -b feature/AmazingFeature)
  3. Commit suas mudanças (git commit -m 'Add some AmazingFeature')
  4. Push para a branch (git push origin feature/AmazingFeature)
  5. Abra um Pull Request

Suporte

Para reportar bugs ou solicitar features, por favor abra uma issue no GitHub.

Licença

Este projeto está licenciado sob a licença MIT - veja o arquivo LICENSE para detalhes.

Agradecimentos

  • n8n pela plataforma de automação incrível
  • LiteLLM pelo serviço de LLM unificado

Discussion