Cómo procesé 2,000 solicitudes concurrentes de OpenAI usando Node.js Streams (Zero Errores 429)
Hace poco construimos en Q2BSTUDIO un motor de backend para resolver un problema tedioso pero masivo en e commerce: el mapeo de taxonomías. El reto era claro: tomar un CSV desordenado de 20 000 productos y mapearlos a los identificadores oficiales de Google Taxonomy usando un modelo LLM. El problema técnico fue sencillo de describir y complejo de resolver: si intentas lanzar miles de peticiones concurrentes a OpenAI con Promise.all muchas cosas salen mal a la vez.
Primero el problema de memoria. Cargar un CSV grande en un array en memoria es un error de principiante; con un archivo de 15 MB o más el proceso Node puede explotar. La solución fue usar Streams con fs.createReadStream combinados con un parser CSV para procesar fila a fila y mantener el uso de RAM prácticamente constante incluso con archivos de cientos de megabytes.
Luego el límite de peticiones. Los límites de OpenAI en Requests Per Minute y Requests Per Day rompen cualquier estrategia naive. Implementamos un control de flujo temporal con la librería Bottleneck para imponer un Speed Limit consciente de la concurrencia. Objetivo conservador: alrededor de 450 RPM. Cálculo sencillo: 60 000 ms dividido entre 450 resulta en un intervalo aproximado de 133 ms entre lanzamientos, y a la vez permitimos 10 peticiones concurrentes para aprovechar la latencia de red sin pasarnos del límite.
También diferenciamos errores fatales de errores menores. Cuando procesas miles de filas no quieres que un registro mal codificado detenga todo el pipeline, pero sí quieres abortar si se agotan los créditos o si toca un límite diario duro. Para eso definimos códigos de error FATAL que, cuando aparecen, detienen la cola y destruyen el stream para no malgastar retries.
En la parte de prompting usamos técnicas de contexto y restricciones negativas. Los LLMs tienden a alucinar y a devolver texto donde se espera un entero, por ejemplo interpretar 100 por 100 en lugar de un ID válido. Aplicamos few shot prompting y validaciones estrictas que forzan la salida a un entero dentro del rango de la taxonomía 2024, evitando devoluciones textuales erróneas.
Resultados del stress test: input 2 000 SKUs desordenados en un CSV de 15 MB; throughput sostenido aproximadamente 450 RPM; cero errores por límite de tasa 429; tiempo total aproximado 4.5 minutos; precisión muy alta con IDs enteros válidos sin alucinaciones. Combinando Node.js Streams para la gestión de memoria y Bottleneck para el control de flujo transformamos un script que se caía a las 500 filas en un motor capaz de manejar 50 000 filas sin esfuerzo.
Este motor lo empaquetamos como API llamada CatMap y la lanzamos en Product Hunt con una demo pública para que cualquiera pueda probar su robustez con CSVs reales y desordenados.
En Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en soluciones que combinan inteligencia artificial y buenas prácticas de ingeniería. Ofrecemos servicios de software a medida y aplicaciones a medida pensados para escalar, junto a servicios de inteligencia artificial para empresas, agentes IA y estrategias de automatización. Si buscas potenciar tus proyectos con IA te invitamos a conocer nuestros servicios de inteligencia artificial y si necesitas desarrollar una plataforma a medida tenemos experiencia probada en desarrollo de aplicaciones y software a medida.
Además ofrecemos servicios complementarios que mejoran la fiabilidad y seguridad de tus soluciones: ciberseguridad y pentesting, servicios cloud aws y azure, y proyectos de inteligencia de negocio y power bi para convertir datos en decisiones. Palabras clave que describen nuestra oferta: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi.
Si te interesa que te ayudemos a diseñar pipelines robustos para trabajar con APIs de modelos LLM, optimizar procesos ETL con Streams, o desplegar soluciones en la nube segura y escalable, contacta con Q2BSTUDIO y conversemos cómo adaptar esta arquitectura a tus datos y tus límites de operación.
Comentarios