🧠 Visão Geral
Flow API é um microserviço backend Node.js + TypeScript projetado para processar prompts de IA de forma assíncrona, escalável e distribuída, integrando:
OpenAI / LangChain para geração de conteúdo;
Redis + BullMQ para gerenciamento de filas;
Docker para empacotamento e isolamento;
Jest para testes automatizados.
💡 Ideal para pipelines de IA, automação de fluxos de SDLC e processamento paralelo de prompts.
⚙️ Tecnologias Principais
Categoria Tecnologias
Linguagem Node.js + TypeScript Framework Web Express Mensageria / Filas BullMQ + Redis IA Generativa LangChain + OpenAI API Containerização Docker + Docker Compose Testes Jest CI/CD GitHub Actions Arquitetura Microserviços / Worker-based
🧠 Descrição Arquitetural
A arquitetura da Flow API segue o padrão “API → Queue → Worker”, garantindo escalabilidade e desacoplamento entre requisições HTTP e processamento pesado de IA.
Componentes principais
- API (Express)
Recebe requisições REST via endpoints /api/ai/generate, /status/:jobId e /result/:jobId.
Valida payloads e envia o prompt para a fila BullMQ.
Retorna imediatamente um jobId para consulta posterior.
- Worker
Consome mensagens da fila e executa o processamento usando LangChain e OpenAI.
Retorna a resposta do modelo e atualiza o status do job no Redis.
- Cache Layer
Utiliza Redis para armazenar:
Status dos jobs (waiting, completed, failed);
Resultados gerados (texto, JSON, etc.);
Logs e histórico de execução.
- Services
Contêm a lógica de integração com LangChain e OpenAI.
Implementam abstrações para troca futura de provedores de IA (ex: Azure OpenAI, Anthropic).
🔁 Fluxo de Dados (Passo a Passo)
- Usuário envia prompt
POST /api/ai/generate { "prompt": "Explique o conceito de microserviços", "options": { "temperature": 0.7 } }
- API cria um job
Gera um jobId.
Envia o job à fila Redis via BullMQ.
Retorna resposta imediata:
{ "jobId": "f42a8..." }
- Worker processa o job
Recupera o job da fila.
Executa o pipeline LangChain → OpenAI.
Armazena o resultado no Redis.
- Cliente consulta status
GET /api/ai/status/:jobId
Retorna waiting, completed ou failed.
- Cliente obtém resultado
GET /api/ai/result/:jobId
Retorna a resposta gerada pelo modelo.
🧪 Testes Automatizados
Executar todos os testes:
npm test
Configuração:
Jest como test runner.
Suporte a TypeScript via ts-jest.
Testes E2E recomendados com supertest.
🐳 Deploy com Docker
Ambiente de Produção
docker-compose up --build
A aplicação será exposta em http://localhost:3000
Ambiente de Desenvolvimento
docker-compose -f docker-compose.dev.yml up --build
Usa Dockerfile.dev para build rápido e hot reload.
📎 Endpoints Principais
Método Rota Descrição
POST /api/ai/generate Cria job e envia prompt à fila GET /api/ai/status/:jobId Consulta status do job GET /api/ai/result/:jobId Recupera resultado processado