Evaluaciones con múltiples filas
Describe el problema/error/pregunta
Estoy intentando ejecutar evaluaciones en un flujo de trabajo, pero el flujo de trabajo de evaluación se ejecuta solo una vez para la primera fila a pesar de que tengo múltiples filas en la Hoja de cálculo de Google conectada. He seguido la documentación exactamente y aún no puedo lograr que haga un bucle para ejecutarse con múltiples filas. El flujo de trabajo a continuación es uno muy simple que configuré para probar esto.
¿Cuál es el mensaje de error (si lo hay)?
Por favor, comparte tu flujo de trabajo
Comparte el resultado devuelto por el último nodo
[
{
“content”: {
“parts”: [
{
“text”: “| output |\n| :— |\n| Hello John |”,
“thoughtSignature”: “EvAECu0EAQw51seqBldzgke32L2p2FSTP+LVobUg/nFzZql1BnD6iGqh9K4Q9rj3ZqYka+EN7xZy1Gyw7MgYL2aHsJfeJ/hlP8yjww+16mYvwlvB/uw5Im5CL6V7dRvGwNTp3BKXushluRrPeUVKZt6E+DN06xHETSKfmN/ICvt+1ae4WCjsmv1BkWhCvrI0tLrT4mVTQ/9wuFpFIX03fwJV2EIghSQcaTCk5ptNyo+LnH0VmKsbv7HpVc9WMOhUKK2Mnh9Oqon1w8Q4Pv95mpEvajvSCJ1PG9zaTFxKRFgHEM0hlC7oE60LlueKrjhrT4wvt4aIifXiBT9kP2A7EtPXGxlafSTIwejDldN6eV5gXKp8raW5o3gW5A/fBWFmVYiC0Rv6fre+vuDgziQdPFBVjm94Cd/LRYj1/BuX5fnSF9ydldwnVtQdrWjchvllCpVj5GJOMfp3ED/6b7tuNNvnGI09L3RhiqYVw4aZNidhBvDrdP+IXnN8sS7qUS0K1OSQaOQ9EmwEhwslRkU28oGItJQSQ315l1VV05UmEI6Sw3IivTPtHBh4oF4yz5JUPtxLrsVbe2KNujYpU+IWweOvZCrnaWhsyleqycRivzJIIx+9wsH5s14tBtbusp2fTq/TdhU3UJtJMPl5vgA6unEh1yCtMLPRZLJrRuV/nxX0jAwTLpRASnfOT4hDO0j6BnfF8QatVRsks6VdAdOWhixT2desPsZ2uEuuXYqpyQ9nCLV5WuCD08sMAfVLTFMeV45KGLDfT3nDwRRAy3tXziR4MgaWvXCzFSBuFnGUBZOUY9ZWeatvDdM9wiKLV4gtJdMn”
}
],
“role”: “model”
},
“finishReason”: “STOP”,
“index”: 0
}
]
Información sobre tu configuración de n8n
- Versión de n8n:
- Base de datos (por defecto: SQLite):
- Configuración EXECUTIONS_PROCESS de n8n (por defecto: own, main):
- Ejecutando n8n a través de (Docker, npm, n8n cloud, aplicación de escritorio):
- Sistema operativo:
Esta es la salida del disparador de evaluación inicial. Hay un campo “_rowsLeft”: 1 que significa que el disparador está reconociendo que hay varias filas en la hoja de Google de evaluación.
[
{
"row_number": 2,
"row_id": 1,
"first_name": "John",
"expected_output": "",
"actual_output": "Hello! How can I help you today?",
"_rowsLeft": 1
}
]
Gracias. Definitivamente estoy ejecutando la ejecución completa.
Intentí 1-4 y no hubo cambio.
También intenté 5 y sigue escribiendo solo 1 fila. Quizás hay un bug. Aquí está el flujo de trabajo simplificado:
Puedo reproducir lo que parece ser el mismo problema en n8n 2.20.9 autohospedado.
En mi caso, el Evaluation Trigger utiliza una Data Table, no Google Sheets. La primera fila del conjunto de datos se ejecuta correctamente, y la salida del Evaluation Trigger contiene _rowsLeft / rows_left > 0, pero no se inicia una segunda ejecución del flujo de trabajo.
Revisé la pestaña Red del navegador: después de hacer clic en el botón “Execute workflow” junto al Evaluation Trigger, solo hay una solicitud /run. Después de que finaliza la fila 1, no se desencadena una segunda solicitud /run.
Esto funcionaba para nosotros en n8n 2.17.5 y dejó de funcionar después de actualizar a 2.20.6 / 2.20.9. Se reproduce en múltiples flujos de trabajo y múltiples Data Tables con filtros deshabilitados.
Esto parece indicar que el Evaluation Trigger en sí detecta correctamente las filas restantes, pero el editor/evaluador no continúa el bucle de evaluación.
Aún no he encontrado una solución alternativa o corrección. Si alguien encuentra una solución, por favor háganmelo saber.
Actualización: Cambié a la versión n8n 2.18.7 y el Evaluation Trigger funciona nuevamente allí.
Hasta ahora, esta es la versión más reciente que he probado donde el Evaluation Trigger aún recorre todas las filas del conjunto de datos correctamente.
@superkyle
¿Estás haciendo clic en Run tests dentro de la pestaña Evaluations del workflow, o estás usando el botón de ejecución normal del editor? Tu typeversion se ve extraño… ¿Cuál es la versión de tu n8n? ¿Creaste este workflow manualmente o lo importaste de alguna plantilla?
Otro punto que vi, “outputValue” debe ser ={{ "Hello " + $json.first_name }} o solo texto fijo sin el =, el evaluation trigger espera que la evaluación final escriba el resultado de vuelta en la hoja de Google en la misma fila que fue leída (puede generar un error silencioso).
¿Estás haciendo clic en Run tests dentro de la pestaña Evaluations del flujo de trabajo, o estás usando el botón de ejecución normal del editor?
- Definitivamente estoy haciendo clic en Run tests.
¿Qué versión de n8n estás ejecutando?
- Estoy usando n8n cloud. Así que, la versión más reciente.
¿Creaste este flujo de trabajo manualmente o lo importaste de una plantilla?
- Lo creé manualmente basándome en la documentación de evaluaciones.
“outputValue” debería ser ={{ "Hello " + $json.first_name }} o solo texto plano sin el =
- Esto no parece ser el problema porque el flujo de trabajo de evaluación escribe correctamente en la hoja de cálculo de Google para la primera fila. El problema es que solo se ejecuta para la primera fila.
ok, pero ¿el flujo de trabajo de evaluación escribe exitosamente en la primera línea Y en la segunda línea y más?
@superkyle
Abre el nodo Evaluation después de ejecutar, ¿el campo actual_output está mostrando el valor correcto o está vacío/con error?
El problema es que el flujo de trabajo de evaluación escribe correctamente en la primera línea, pero no itera y continúa en las filas posteriores.
La actual_output sí muestra el valor correcto para la primera fila. No hay ningún error. Puedes verlo aquí n8n eval testing - Google Sheets
@superkyle
Revisando tu JSON, noté que el nodo Evaluation está sin salida conectada (“main”: []). Como el Evaluation Trigger necesita continuar el ciclo para procesar las próximas líneas, esto podría estar haciendo que el flujo se detenga después de la primera. Intenta conectar la salida del Evaluation de vuelta al When fetching a dataset row y ejecuta la prueba de nuevo. Si eso lo resuelve, confirma aquí para ayudar a validar el comportamiento.
No es posible conectar el resultado nuevamente a “When fetching a dataset row” (Cuando se obtiene una fila del conjunto de datos) porque “When fetching a dataset row” es un disparador de evaluación. Según la documentación, debería repetir todas las filas después de que se ejecute el nodo setOutputs.
ok, fallo mío, me confundí.
Entiendo que no estés de acuerdo en revisar la expresión, pero es esencial confirmar esto porque no estoy logrando reproducir tu error. Si Set outputs no se completa correctamente en la primera línea, eso podría explicar por qué el runner no avanza a las siguientes.
por favor, prueba con ={{ 'Hello ’ + $json.first_name }}
Gracias por investigar esto. He intentado eso y no cambia nada. Solo añade un = al principio del resultado. Ese no es el problema porque la salida establecida se completa correctamente en la primera línea.
Disculpa, cometí un error arriba.
si el setoutputs no se completa correctamente, podrá procesar la primera línea pero no podrá pasar a las siguientes.