- CoRT (Chain of Recursive Thoughts) es un proyecto en el que el modelo de IA no fija una respuesta de una sola vez, sino que genera y evalúa por sí mismo varias alternativas antes de elegir la respuesta final
- El flujo de funcionamiento se compone de generar una respuesta inicial, determinar cuántas rondas de razonamiento son necesarias, crear 3 alternativas por ronda, evaluar todas las respuestas y seleccionar la mejor
- Al probarse con Mistral 3.1 24B, se indica que la calidad de las respuestas mejoró notablemente en modelos pequeños, especialmente en tareas de programación
- La Web UI aún está en una etapa inicial de desarrollo y, en Windows, se usa
start_recthink.bat; en Linux, el flujo de ejecución utiliza pip, npm y recthink_web.py
- Los componentes clave son la autoevaluación, la generación de alternativas competitivas, la mejora iterativa y la profundidad de razonamiento dinámica; el proyecto se publica bajo licencia MIT
Qué hace CoRT
- CoRT es un enfoque que hace que un modelo de IA revise recursivamente sus propias respuestas, genere alternativas y luego elija la mejor
- El objetivo es que la IA no use sin más la primera respuesta que produce, sino que repita el proceso de cuestionarse y volver a intentarlo por sí sola
- El README lo describe como un “AI battle royale”, donde la respuesta que sobrevive entre varios candidatos se usa como resultado final
Cómo genera respuestas
- El flujo de procesamiento se compone de las siguientes etapas
- La IA genera una respuesta inicial
- La IA determina el número de rondas de razonamiento necesarias
- En cada ronda genera 3 respuestas alternativas
- Evalúa todas las respuestas
- Selecciona la mejor respuesta
- La respuesta final es el resultado elegido tras un proceso repetitivo de generación y evaluación de alternativas
Pruebas y ejemplos
- Se hicieron pruebas aplicando CoRT a Mistral 3.1 24B
- El README indica que la versión con CoRT produjo mejores resultados que la versión sin CoRT, especialmente en tareas de programación
- Como ejemplo, se incluyen imágenes con los resultados de Mistral 3.1 24B + CoRT y Mistral 3.1 24B non CoRT
Cómo ejecutarlo
- La Web UI aún está en una etapa inicial de desarrollo
- En Windows, se indica abrir
start_recthink.bat y esperar a que termine la instalación de dependencias
- El procedimiento de ejecución en Linux es el siguiente
pip install -r requirements.txt
cd frontend && npm install
cd ..
python ./recthink_web.py
- En una nueva shell, se ejecuta el frontend
cd frontend
npm start
Ejecución directa y componentes
- Para ejecutarlo directamente, hay que instalar las dependencias, configurar
OPENROUTER_API_KEY y luego ejecutar el script de Python
pip install -r requirements.txt
export OPENROUTER_API_KEY="your-key-here"
python recursive-thinking-ai.py
- El proyecto destaca los siguientes cuatro elementos clave
-
Self-evaluation
- Competitive alternative generation
- Iterative refinement
- Dynamic thinking depth
- Se aceptan contribuciones por PR y la licencia es MIT
1 comentarios
Opiniones de Hacker News
Se ve mucho la tendencia de pensar que, si enfrentas varios modelos entre sí o los ejecutas en grupo, surgirá mágicamente una inteligencia colectiva, pero después de experimentar por mi cuenta y ver el trabajo de ASU/Microsoft Research, llegué a una conclusión más simple: los LLM son pésimos verificadores de otros LLM
En la charla “(How) Do LLMs Reason/Plan?” de Subbarao Kambhampati, GPT-4 genera con confianza una demostración de coloreo de grafos que es demostrablemente incorrecta, hasta que entra un solucionador SAT simbólico como juez https://www.youtube.com/watch?v=0u2hdSpNS2o
El paper de Stechly et al. cuantifica que, si se le pide a GPT-4 que critique su propia respuesta, la precisión en realidad baja, y que al agregar un verificador externo sound, el rendimiento mejora alrededor de 30 puntos porcentuales en tareas de planificación y puzzles https://arxiv.org/abs/2402.08115
Es decir, para los modelos autorregresivos actuales, verificar es más difícil que generar, y se necesitan comprobadores que realmente razonen sobre el mundo, como compiladores, linters, solucionadores SAT o datasets con respuestas correctas
Por eso, apilar varios LLM por lo general no ayuda mucho. El position paper “LLM-Modulo” también sostiene que los modelos autorregresivos no pueden hacer por sí mismos verificación propia ni planificación de largo plazo, y que hay que tratarlos como generadores de ideas de alto recall y envolverlos con un único verificador sound https://arxiv.org/abs/2402.01817
Al probarlo directamente, reemplazar un debate entre 5 modelos por un solo modelo fuerte más un verificador dio respuestas iguales o mejores, con mucha menos latencia y carga de orquestación
Los libros o las películas son buenos ejemplos: es fácil decir que un personaje es superficial, pero crear un personaje profundo e interesante es sorprendentemente difícil
En ingeniería de software pasa algo parecido: un LLM con un prompt para encontrar vulnerabilidades de seguridad puede señalar puntos potencialmente vulnerables en el código generado
Pero si esperas que otro LLM encuentre errores de razonamiento en una demostración matemática, en la práctica tiene que rehacer todo el razonamiento, así que es dudoso que haya una mejora significativa de rendimiento
También está profundamente integrado en frameworks como LangChain o LlamaIndex para evaluar pipelines RAG https://arxiv.org/abs/2411.15594
Me pregunto qué tal sería hacer que el LLM también genere pruebas unitarias para el código que produjo, y luego ejecutar además todas las pruebas unitarias existentes de la aplicación
Si se verifica si el código compila y si pasan las pruebas unitarias, se puede lograr cierto grado de validación fundamentada, y la IA puede leer los resultados de las pruebas y usarlos para corregir sus errores
Entrenar con datos de corpus puede producir saltos de un solo dígito, pero entrenar con datos de interacción que tienen un bucle OODA capaz de observar y adaptarse es mucho más potente
Si yo estuviera haciendo IA, creo que haría eso. Aunque en realidad estoy construyendo BrowserBox
Generate-and-test requiere un algoritmo de prueba confiable, relativamente rápido y eficiente en memoria, y es especialmente útil cuando un algoritmo de generación exacto que solo produce respuestas correctas es lento o consume mucha memoria
Aquí el generador sería el LLM, y el comprobador o “verificador” serían compiladores, linters, solucionadores SAT, datasets con respuestas correctas, etc.
Generate-and-test también está relacionado con el ensayo y error, y el ensayo y error probablemente existe desde el Paleolítico
Una forma que uso a veces es hacer que primero el modelo de chat de IA me dé la respuesta al problema y luego pedirle que escriba un informe explicando por qué esa respuesta es correcta, de manera que también pueda entenderlo una persona —o una IA— que no conoce el problema inicial ni el área técnica.
Después hago que un segundo modelo de IA, que no conoce el problema, califique el informe y escriba otro informe pidiendo explicaciones que el modelo original no dio, o señalando inconsistencias lógicas.
Le devuelvo ese informe al modelo original y le pido que reescriba la respuesta incorporando la información o correcciones necesarias; luego repito hasta que el segundo modelo quede convencido o hasta que el primero haya incorporado todos los cambios solicitados.
Es muy rudimentario, pero en los casos en que lo probé dio resultados bastante buenos.
El plan final suele quedar mucho más equilibrado y meditado.
Curiosamente, esta técnica también funciona bien aplicada a uno mismo. Buscar primero los defectos antes de volver a revisar un plan realmente ayuda.
Por ejemplo, uno centrado en lo técnico, otro en marketing y otro con contexto relacionado con objetivos personales.
Si pones la misma pregunta en chats con contextos diferentes, es parecido a ver el mismo problema desde varias perspectivas, y las conclusiones también pueden variar bastante según el contexto.
Parecía una idea bastante buena, pero creo que el uso de tokens aumentaría mucho.
También me preocupa que, si el LLM usado como juez no puede producir una respuesta suficientemente buena desde el principio, quizá también tenga dificultades para calificar con precisión.
Me gustaría probar algo así a mayor escala, en forma de un senado de debate siempre activo.
En vez de responder a prompts puntuales, le darías una lista de tareas —quizá con fechas límite— y el senado trabajaría en ellas, dividiéndose en grupos para subtareas, cuestionando resultados y haciendo propuestas.
Incluso se podría crear un árbol de analistas, donde un nodo padre solo eleve una propuesta cuando considere que el análisis inferior es especialmente perspicaz.
He visto claramente que indicarle al modelo que aborde un problema desde una perspectiva específica puede mejorar o empeorar los resultados. Crear varias perspectivas junto con un análisis crítico de sus resultados podría producir cosas impresionantes.
Este enfoque generaría una cantidad enorme de tokens, pero el costo por token va en una dirección que lo hace posible. También existe la posibilidad de crear un servidor IRC dedicado a IA, donde cualquiera pueda conectar su propio modelo y usarlo como una sala de debate compartida.
Cuando uno se toma el tiempo de probarlo, se atasca y vuelve, responde livianamente: “Sí, bien visto. ¡Ya casi está! Los siguientes pasos son X e Y”, y luego entrega el mismo tutorial detallado de antes, cambiando apenas la parte del flag que estaba mal.
Se siente como lidiar con un pasante demasiado entusiasta que entrega cosas sin verificarlas; poner un segundo bot frente al primero para que le pregunte “¿estás realmente seguro?” parece que mejoraría bastante la situación.
Lo modelé a partir del concepto de asesores de Civilization II, y funcionó bastante bien, aunque tenía cierta limitación por estar atado a un único LLM, Mistral.
Además, era tan pesado que casi incendiaba mi computadora.
Sería interesante ver qué podría producir si se le dieran suficiente tiempo y tokens.
Una estrategia mucho más simple y limitada que uso a menudo es agregar al final del mensaje: “Antes de responder, piensa una vez dentro de etiquetas, haz una autocrítica una vez dentro de etiquetas y, finalmente, redacta la respuesta final”.
Funciona bastante bien. De forma parecida, pedir simplemente “encuentra los 5 mayores problemas de la propuesta” también sirve, aunque al forzar 5 casi siempre encuentra algo, incluso si la mayoría no es muy relevante.
En el paso 1 hago que arme un plan; en el paso 2, que señale las fallas del plan; en el paso 3, que actualice el plan incorporando esas fallas.
Otras preguntas que hago con frecuencia son cosas como: “¿Qué se nos está escapando?”, “¿Qué consideraciones hay en términos de rendimiento, seguridad, legal y costos?”.
También se pueden repetir varias veces prompts de guía como “¿Hay algo más?”, y funciona especialmente bien si indicas los temas a considerar. Cada vez que termina, le pido que actualice el plan incorporando esas consideraciones.
Es un poco distinto de lo que esperaba por el título. Pensé que sería explícitamente un procedimiento adversarial
No lo probé directamente y no sé si funcionaría. Pero sí ayuda preguntarle a ChatGPT con prompts separados “XYZ es verdadero, explica por qué” y “XYZ es falso, explica por qué”, y ver cuál lado resulta más convincente
https://github.com/evalstate/fast-agent
No sé por qué alguien pensaría que esto es nuevo. También parece mostrar el estado de HN
El enfoque en sí parece bueno, pero nunca hay que insinuarle directamente “estás equivocado”. Por lo general, simplemente asume que estaba equivocado
Más bien, resulta impresionante cuando incluso así refuta y se defiende de verdad
Como este tipo de experimentos es bastante interesante, estoy creando un editor de grafos estilo blueprints de Unreal Engine para que la gente pueda diseñar estos workflows
La idea es que el prompt del usuario entre a un agente para crear un intento inicial; luego ese historial de conversación pase a un “agente” con otro prompt de sistema para que actúe como un crítico severo, dé una señal de aprobado/fallido, y el flujo entre en un loop hasta que el crítico determine que está aprobado, para después mostrar la salida al usuario
Lo ideal sería un sitio web pequeño que llame al endpoint LLM propio del usuario y permita guardar, cargar y compartir grafos de workflows
Mistral Small 3.1 y Gemma 3 se sienten como los primeros modelos medio competentes que se pueden correr localmente, pero esa competencia es apenas la semilla, y hace falta un framework que los mantenga encaminados
Si dentro del loop iterativo les das permiso para ejecutar Python y les pides explorar el mundo, empiezan a descargar y leer cosas como noticias
Por ejemplo, si le indicas a GPT que sea desagradable, hasta cierto punto puede imitar en GPT la capacidad de Gemini para señalar tonterías o razonamientos flojos. La cortesía parece filtrar muchas cosas valiosas
Pero el resultado se vuelve desagradable de leer. Gemini parece haber resuelto esto tratándolo en dos etapas durante el entrenamiento y convirtiendo la primera etapa en “pensamiento” privado
Así que creo que lo que hace falta es un enfoque de dos etapas que humanice un poco esa salida “mala onda”. Trabajar así se vuelve bastante cansador si lo haces más que por poco tiempo
También creo que tendría mucho valor una UI de chat grupal con distintas personalidades de LLM. El formato de los objetos de mensaje parece pensado para varios usuarios y varias IA, con nombres en cada mensaje, pero todavía no vi una UI así
Sería todavía mejor si soportara varios proveedores. Sus fortalezas son distintas, como pedir una segunda opinión
consortium envía el mismo prompt a varios modelos en paralelo y luego manda todas las respuestas a un modelo moderador para que las evalúe. El moderador decide si se necesitan más iteraciones
También puedes forzar más iteraciones hasta alcanzar un umbral de confianza o una cantidad mínima de repeticiones
Con el PR que hice para llm-openrouter, puedes guardar alias de modelos que incluyan varias opciones de modelo. Por ejemplo, puedes crear un experto en investigación online con
llm openrouter save -m qwen3 -o online -o temperature 0, system "research prompt" --name qwen-researcherA otros miembros puedes hacerlos extraer entidades en modo JSON, y a otro hacer que escriba un borrador a ciegas. El moderador aprovecha todo eso para sintetizar una buena respuesta
Hay que encontrar pronto una forma de hacer funcionar estas GPU con energía verde. Si no, las IA van a derretir el planeta debatiendo entre ellas la solución óptima del ta-te-ti
A veces es la forma más fácil de terminar una tarea muy pequeña, pero la diferencia de costo en el backend debe ser bastante grande. Al usuario al final no le importa en absoluto, porque no tiene sensación de realidad
Ya se da casi por hecho que la IA debe ejecutarse continuamente contra sí misma
Creo que esta es la forma de hacer que los modelos de machine learning generen ideas nuevas
Consiste en diagonalizar, mediante auto-debate, sobre todas las ideas que ya se probaron y descartaron, manteniendo ciertas restricciones de coherencia. Por supuesto, no es ni de lejos tan fácil como suena
Sería como el Game of Life de Conway, pero en vez de cuadrados de colores con reglas, son LLM con ciertos pesos hablándose sin parar entre sí, y en algún punto algo emerge como habla o acción
https://news.ycombinator.com/item?id=43835798
¿Hasta dónde llegará esto? ¿Aparecerá un equipo Scrum de agentes de IA que haga reuniones stand-up cada pocas horas?
¿Terminaremos replicando la burocracia gubernamental con agentes que debaten temas todo el día para encontrar la mejor postura?
Agentes de IA con distintos roles operaban un equipo Scrum, y el prompt de cada agente estaba configurado para oponerse a todos o presentar su propio punto de vista de forma muy crítica; la decisión final la tomaba un mediador
El ponente afirmó que a ellos les funcionó bien
Los humanos tenemos experiencias y perspectivas distintas, aunque en los LLM eso es menos marcado. Aun así, a veces basta con ponerse otro sombrero. Por ejemplo, como la diferencia entre un revisor de código y quien lo escribe
Algún día habrá un punto en el que el efecto se aplane, y seguramente también surgirá un comité de IA para determinar ese punto
Porque nadie querrá hervir el océano
Me gusta que lo hayan hecho fácil de bifurcar y experimentar
Acabo de empezar mi propia iteración, agregando Nash Equilibrium y replanteando la “ingeniería de prompts” como una negociación multiagente. Me da curiosidad saber qué opinan los demás
https://github.com/faramarz/NECoRT/
Mi evaluación es que los LLM empresariales no tendrán grandes problemas con el costo computacional adicional y preferirán ajustar finanzas complejas mediante varias optimizaciones de modelado
No estoy muy familiarizado con repositorios públicos ni contribuciones, así que agradecería que alguien me señale si estoy haciendo algo mal
La intención es bifurcar la base de código original para probar la teoría y, con el tiempo, enviarlo como PR