Skip to content

Microserviço para processamento assíncrono de prompts com OpenAI

Notifications You must be signed in to change notification settings

oliveiransara/flow-api

Repository files navigation

Flow API - Microserviço de IA

Node.js Docker TypeScript

🧠 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

  1. 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.

  1. 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.

  1. Cache Layer

Utiliza Redis para armazenar:

Status dos jobs (waiting, completed, failed);

Resultados gerados (texto, JSON, etc.);

Logs e histórico de execução.

  1. 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)

  1. Usuário envia prompt

POST /api/ai/generate { "prompt": "Explique o conceito de microserviços", "options": { "temperature": 0.7 } }

  1. API cria um job

Gera um jobId.

Envia o job à fila Redis via BullMQ.

Retorna resposta imediata:

{ "jobId": "f42a8..." }

  1. Worker processa o job

Recupera o job da fila.

Executa o pipeline LangChain → OpenAI.

Armazena o resultado no Redis.

  1. Cliente consulta status

GET /api/ai/status/:jobId

Retorna waiting, completed ou failed.

  1. 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

About

Microserviço para processamento assíncrono de prompts com OpenAI

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published