Avaliações Com Múltiplas Linhas

Avaliações Com Múltiplas Linhas

Descreva o problema/erro/pergunta

Estou tentando executar avaliações em um fluxo de trabalho, mas o fluxo de trabalho de avaliação é executado apenas uma vez para a primeira linha, mesmo que eu tenha múltiplas linhas na Planilha Google conectada. Segui a documentação exatamente e ainda não consigo fazer com que ele execute em loop para múltiplas linhas. O fluxo de trabalho abaixo é um muito simples que configurei para testar isso.

Qual é a mensagem de erro (se houver)?

Por favor, compartilhe seu fluxo de trabalho

Compartilhe a saída retornada pelo último nó

[
{
“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
}
]

Informações sobre sua configuração n8n

  • Versão n8n:
  • Banco de dados (padrão: SQLite):
  • Configuração n8n EXECUTIONS_PROCESS (padrão: own, main):
  • Executando n8n via (Docker, npm, n8n cloud, desktop app):
  • Sistema operacional:

Esta é a saída do gatilho de avaliação inicial. Há um campo “_rowsLeft”: 1 que significa que o gatilho está reconhecendo que há várias linhas na planilha Google de avaliação.

[

{

"row_number": 2,


"row_id": 1,


"first_name": "John",


"expected_output": "",


"actual_output": "Hello! How can I help you today?",


"_rowsLeft": 1

}

]

Obrigado. Estou definitivamente executando a execução completa.

Tentei 1-4 e não houve alteração.

Também tentei 5 e ainda assim escreve apenas 1 linha. Talvez haja um bug. Aqui está o fluxo de trabalho simplificado:

Consigo reproduzir o que parece ser o mesmo problema no n8n 2.20.9 auto-hospedado.

No meu caso, o Evaluation Trigger usa uma Data Table, não Google Sheets. A primeira linha do conjunto de dados é executada com sucesso, e a saída do Evaluation Trigger contém _rowsLeft / rows_left > 0, mas nenhuma segunda execução de workflow é iniciada.

Verifiquei a aba Network do navegador: após clicar no botão “Execute workflow” ao lado do Evaluation Trigger, há apenas uma solicitação /run. Após a linha 1 terminar, nenhuma segunda solicitação /run é acionada.

Isso costumava funcionar para nós no n8n 2.17.5 e parou de funcionar após atualizar para 2.20.6 / 2.20.9. Reproduz em vários workflows e várias Data Tables com filtros desabilitados.

Isso sugere que o Evaluation Trigger em si detecta corretamente as linhas restantes, mas o editor/evaluation runner não continua o loop de avaliação.

Ainda não encontrei uma solução alternativa ou correção. Se alguém encontrar uma solução, por favor me informe.

Atualização: Fiz downgrade para o n8n 2.18.7 e o Evaluation Trigger funciona novamente lá.

Até o momento, esta é a versão mais recente que testei onde o Evaluation Trigger ainda faz loops por todas as linhas do dataset corretamente.

@superkyle
Você está clicando em Run tests dentro da aba Evaluations do workflow, ou está usando o botão de execução normal do editor? Seu typeversion está esquisito… Qual a versão do seu n8n? Você criou esse workflow manualmente ou importou de algum template?
outro ponto que vi, “outputValue” deve ser ={{ "Hello " + $json.first_name }} ou só texto fixo sem o =, o evaluation trigger espera que o evaluation final escreva o resultado de volta no google sheet na mesma linha que foi lida (pode gerar erro silencioso).

Você está clicando em Run tests dentro da aba Evaluations do workflow, ou está usando o botão de execução normal do editor?

  • Definitivamente estou clicando em Run tests.

Qual versão do seu n8n você está executando?

  • Estou usando n8n cloud. Então, a versão mais recente.

Você criou este workflow manualmente ou o importou de um template?

  • Criei manualmente com base na documentação de avaliação.

“outputValue” deveria ser ={{ "Hello " + $json.first_name }} ou apenas texto simples sem o =

  • Isso não parece ser o problema porque o workflow de avaliação escreve com sucesso na planilha do Google para a primeira linha. O problema é que ele só executa para a primeira linha.

ok, mas o workflow de avaliação escreve com sucesso na primeira linha E na segunda linha e demais?

@superkyle
Abre o node Evaluation depois de executar, o campo actual_output está mostrando o valor correto ou está vazio/com erro?

O problema é que o fluxo de trabalho de avaliação escreve com sucesso na primeira linha, mas não faz loop e continua nas linhas subsequentes.

O actual_output mostra o valor correto para a primeira linha. Não há erro. Você pode ver aqui n8n eval testing - Google Sheets

@superkyle

Revisando seu JSON, reparei que o node Evaluation está sem saída conectada (“main”: []). Como o Evaluation Trigger precisa continuar o ciclo para processar as próximas linhas, isso pode estar fazendo o fluxo parar depois da primeira. Tenta conectar a saída do Evaluation de volta ao When fetching a dataset row e rodar o teste novamente. Se isso resolver, confirma aqui para ajudar a validar o comportamento.

Não é possível conectar a saída de volta a “When fetching a dataset row” porque “When fetching a dataset row” é um gatilho de avaliação. De acordo com a documentação, ele deve fazer um loop através de todas as linhas após o nó setOutputs ser executado.

ok, falha minha, me confundi.
eu entendo que vc não concorde em rever a expressão, mas é essencial confirmar isso pq eu não estou conseguindo reproduzir o seu erro. Se o Set outputs não concluir corretamente na primeira linha, isso pode explicar por que o runner não avança para as próximas.
por favor, teste com ={{ 'Hello ’ + $json.first_name }}

Obrigado por investigar isso. Já tentei isso e não muda nada. Só adiciona um = na frente da saída. Esse não é o problema porque a saída do set é completada corretamente na primeira linha.

me desculpa, eu errei acima.
se o setoutputs não concluir corretamente, ele vai conseguir processar a primeira linha mas não vai conseguir ir para as próximas.