Encontrei o modelo de IA mais barato para criar workflows
Autoria: n8n · Assistir no YouTube
Vídeo de autoria do canal indicado, não da IANIA; todos os direitos pertencem ao criador. Transcrição, resumo e tradução gerados automaticamente; o conteúdo no idioma original é preservado na versão em idioma original.
Idioma original: inglês
Vídeo original: I found the cheapest AI Model for building workflows · Canal: n8n · 29:44 · Assistir no YouTube
Tópicos: Agentes de IA, Automação de tarefas e workflows, Avaliação e benchmarks de IA, Modelos de IA
O vídeo compara seis modelos de IA na criação de workflows do n8n, usando MCP e o mesmo harness para todos. A primeira tarefa é montar um fluxo que coleta artigos de RSS e os salva em uma tabela; a segunda é criar um agente de notícias e um endpoint de API. O apresentador avalia custo, velocidade e qualidade, eliminando modelos que produzem soluções com problemas de projeto. Grok 4.7 vence no resultado geral, enquanto GLM 5.3 é o mais barato, mas não passa na segunda tarefa.
Pontos-chave
Seção intitulada “Pontos-chave”- Seis modelos são avaliados em duas tarefas de complexidade crescente, com o nível de esforço máximo disponível.
- Na tarefa de coleta de notícias, todos os modelos conseguem criar workflows funcionais.
- GLM 5.3 é o modelo mais barato na primeira tarefa, com custo de US$ 0,68.
- A segunda tarefa exige um agente acessível pelo chat do n8n e por um subworkflow, além de um endpoint de API.
- O apresentador desqualifica modelos que carregam todos os artigos sem controle ou deixam de tratar erros importantes.
- Grok 4.7 e Opus 5.5 são os únicos modelos que passam nos critérios definidos para a segunda tarefa.
- Grok 4.7 é o vencedor geral, com custo total de US$ 7,36 e cerca de meia hora para criar os dois workflows.
- Modelos mais baratos podem ser úteis para quem sabe revisar e corrigir os workflows gerados.
Capítulos
Seção intitulada “Capítulos”| Início | Capítulo | Resumo |
|---|---|---|
| 00:00 | Modelos e critérios do teste | O apresentador apresenta os seis modelos, o ambiente de teste e a comparação entre custo, velocidade e qualidade. |
| 01:09 | Tarefa 1: coletar notícias de RSS | É definido o workflow esperado para buscar artigos, eliminar duplicatas e armazená-los em uma tabela. |
| 02:46 | Resultados dos modelos proprietários na tarefa 1 | Opus 5.5, GPT-6 Astra e Grok 4.7 criam workflows funcionais, com Astra liderando em custo e velocidade. |
| 07:03 | Resultados dos modelos open source na tarefa 1 | GLM 5.3, Kimi K3 e Qwen 3.8 Max também completam a coleta de notícias, com GLM como opção mais barata. |
| 11:51 | Tarefa 2: agente de notícias e API | O apresentador explica os requisitos para um agente acessível pelo chat e por subworkflow, além de um endpoint de API. |
| 15:05 | Opus 5.5, Astra e Grok na tarefa 2 | Opus e Grok passam na avaliação, enquanto Astra é desqualificado por uma decisão inadequada no fluxo do agente. |
| 21:38 | Avaliação dos modelos open source na tarefa 2 | GLM, Kimi e Qwen são desqualificados por problemas como consultas sem limite e ausência de tratamento de erros. |
| 28:10 | Resultado geral e recomendações | Grok 4.7 vence no resultado geral, enquanto modelos mais baratos podem servir a quem consegue revisar e ajustar os workflows. |
Citações
Seção intitulada “Citações”O que eu realmente quero saber é: vai me custar um dólar ou 15 dólares para resolver meu problema? — 00:31
GLM fez um workflow funcional. Está ótimo e posicionou a nota adesiva melhor do que alguns modelos proprietários. — 08:05
Fez um trabalho ruim rapidamente, mas vamos continuar. — 23:54
Grok parece ser o melhor agora. — 28:40
Conceitos e entidades
Seção intitulada “Conceitos e entidades”- n8n (ferramenta): Plataforma usada para criar e executar os workflows avaliados no vídeo.
- MCP (conceito): Protocolo usado para conectar o harness à instância do n8n e fornecer contexto e ferramentas aos modelos.
- Claude Code (ferramenta): Exemplo de harness de IA mencionado como forma de executar os modelos.
- OpenCode (ferramenta): Harness usado para executar os modelos durante os testes.
- Opus 5.5 (modelo): Modelo avaliado nas duas tarefas e um dos dois que passam nos critérios da tarefa final.
- GPT-6 Astra (modelo): Modelo que se destaca pelo baixo custo na primeira tarefa, mas é desqualificado na segunda por uma decisão de projeto considerada inadequada.
- Grok 4.7 (modelo): Modelo que vence a comparação geral, concluindo as duas tarefas por US$ 7,36.
- GLM-5.3 (modelo): Modelo mais barato na primeira tarefa, mas desqualificado na segunda por problemas na ferramenta de busca e na resposta de erro da API.
- Kimi K3 (modelo): Modelo rápido e barato que é desqualificado por carregar todos os artigos e não incluir uma resposta de erro na API.
- Qwen3.8 Max (modelo): Modelo avaliado nas duas tarefas e desqualificado na segunda por buscar todos os artigos.
Tradução completa (pt-BR)
Seção intitulada “Tradução completa (pt-BR)”00:00 Neste vídeo, vou descobrir qual modelo de IA de ponta é o mais barato para gerar automaticamente workflows NEN confiáveis usando seu harness de IA favorito, como Claude Code ou Codeex, com MCP. Selecionei seis modelos de ponta promissores, incluindo Opus 5.5 e alguns concorrentes open source parrudos, para se enfrentarem em duas tarefas. A primeira tarefa é um fluxo de raspagem de dados dos principais artigos de notícias e uma tabela de dados para armazená-los. Na segunda tarefa, os modelos precisam criar um agent de IA que possa acessar essa tabela de dados e ser usado no chat nativo do Nitn
00:31 ou ser disponibilizado como endpoint de API. E estou procurando o modelo mais barato porque, sinceramente, todos os modelos de ponta são muito bons em criar coisas parecidas com código hoje em dia. E o recurso NAN MCP fornece aos modelos bastante contexto e ferramentas sobre como criar um workflow válido. Então, o que eu realmente quero saber é: resolver meu problema vai me custar um ou 15 dólares? Para executar o teste, estou usando o N versão 2.40.6 seis em uma instância auto-hospedada, com o MCP conectado ao meu harness. Uma série de modelos populares, uma mistura de modelos open source e proprietários, incluindo Opus 5.5, GPT6 Astra, Gro 4.7, GLM 5.3, Kimmy K3 e, por último, mas
01:09 não menos importante, Quen 3.8 Max. Para cada modelo, vamos definir o nível de esforço no máximo disponível, para que o teste seja justo. Também vou usar open code e um harness de IA open source, como Claude Code, para executar nossos modelos. Assim, nenhum modelo terá uma vantagem injusta. Certo, vamos descobrir qual modelo é o mais competente e acessível. Certo, vamos dar uma olhada rápida no prompt da tarefa um. Implemente o seguinte caso de uso na minha instância do N. A cada hora, busque todos os artigos de notícias novos disponíveis nos feeds RSS listados abaixo e adicione cada artigo a uma tabela de dados do N
01:41 chamada artigos de notícias. Adicione cada artigo único ao banco de dados apenas uma vez. A tabela de dados deve ter título, título, descrição, link para o artigo e o veículo de notícias. No futuro, devo conseguir adicionar facilmente novos feeds RSS para monitoramento, sem precisar modificar o workflow além disso. E aqui estão os feeds RSS. É um prompt imperfeito, mas realista. É o tipo de prompt que eu poderia usar quando precisasse criar um workflow rapidamente. Agora vamos dar uma olhada no que seria um bom resultado de workflow, para sabermos com o que comparar. Vou abrir um que já está criado. E aqui, basicamente, deveríamos ter um gatilho de agendamento, porque queremos que isso seja executado a cada hora. Precisamos de algum lugar para armazenar a lista desses URLs, porque preciso poder adicionar mais. Então, uma tabela de dados de onde possamos buscar isso, por exemplo, contagens.
02:15 E, a partir daí, se eu simplesmente executar o workflow, ele basicamente precisa conseguir acessar o URL e buscar todos os artigos de notícias disponíveis nele. Precisa conseguir normalizar os esquemas dos diferentes artigos de notícias. Então, está fazendo isso. Idealmente, também vai remover as duplicatas da execução, caso algumas venham dos feeds RSS. E depois garantir que não estamos salvando nada que já exista na tabela de dados. Para isso, há uma operação “se a linha não existir”. E então precisamos salvar o artigo na tabela de dados. E, claro, precisamos ter uma tabela de dados. Então, espero que uma
02:46 tabela de dados de artigos de notícias seja criada com estas colunas. Esse é o resultado esperado para a tarefa um. Vamos passar ao nosso primeiro modelo. Vamos começar com Opus 5.5. Acho que é um modelo que muitos de nós já usamos. Vamos abrir o open code. Coloquei o prompt da tarefa um lá. Está no modo máximo. Meu favorito. Vamos executar. Certo, ele pegou o SDK do Edit. Acho que agora é só deixar rolar. Certo, Opus terminou o trabalho. Vamos abrir o N e conferir o que ele fez.
03:19 Então, ele criou um workflow chamado artigos de notícias por hora dos feeds RSS. Um título bem sensato. Aprecio que não tenha travessões longos. Temos uma nota adesiva aqui. E alguns grupos. Na verdade, vamos executá-lo também. Recebemos os feeds RSS. Buscamos os feeds RSS. Saíram 96 itens de cada um. Certo, faz sentido. Encaminhamos isso para a formatação. Certo. Então, ao contrário do nosso exemplo, ele está usando um nó de definição em linha, mas isso está normalizando a saída. Parece bom. Sim. E depois estamos filtrando os artigos válidos.
03:54 Então, se não houver link, ele não adiciona o artigo. Ah, justo. Justo. Depois, removemos as duplicatas da entrada atual. Certo. Então, ele faz isso com qualquer item duplicado que tenha buscado dessa lista. E, sim, salvamos os artigos ignorados. A operação “se a linha não existir” e, então, carregamos os artigos na tabela de dados com todos esses valores para inserir. A última verificação é a tabela de dados. Vamos até artigos de notícias e vemos que eles foram carregados e que vieram de diferentes veículos. Certo, então passou
04:25 no teste. Ou seja, não vamos desqualificá-lo por não ter conseguido criar o workflow. Ele foi muito bem. Certo, olhando para o placar, ele fez isso por US$ 3,48 e levou 15 minutos. Isso é muito ou pouco? Vamos descobrir depois de testar mais alguns modelos, com Opus incluído. Vamos ver como Astra se sai nessa tarefa. Estou com o open code aberto. Astra está no máximo. Vamos executar. Não vamos ler isto; vamos conferir o workflow. Então, arquivo de notícias RSS por hora. Muito bom. Aprecio que não tenha travessões longos. Vamos
04:56 expandir isto aqui. Bem, acho que não é o ideal, mas não vou descontar pontos por isso. Também há três grupos. Vamos executar esse workflow. Certo. Também optou por uma tabela de dados. Não vou verificar a tabela, porque esses itens foram carregados. Então, está lá. A leitura do feed RSS importa os itens. Isso funciona. Também está usando a abordagem do nó de definição, com elementos em linha para apará-los. Há uma lógica bem pesada aí. Mas tudo isso está se transformando em saídas formatadas corretamente. Também estamos filtrando as coisas que não são válidas e as que têm um URL válido
05:26 Certo, isso é bem legal. Boa, Astra. Mandou bem, Sam. E também remove duplicatas, mantendo apenas artigos que ainda não foram salvos. Dá para ver que está funcionando porque entraram 91 artigos. Isso já tinha sido executado uma vez, certo? Então, desde a última execução, entrou apenas um artigo novo. Ótimo. Astra passou no teste. Concluiu a tarefa. Mas como foi o desempenho? GPT Astra fez isso por US$ 2,19. Está em primeiro lugar no momento. Muito mais barato. Muito mais rápido. Preferi o resultado dele ao do Opus. Certo,
05:57 vamos ver como Grock, nosso último modelo proprietário, se sai em comparação com Opus e GPT6 Astra, já que depois vamos passar aos modelos open source. Vamos abrir o open code. Grock 4.7. Está no X High, o que seria mais legal se se chamasse Max, mas não vou levar para o lado pessoal. Certo, vamos executar. Estou muito curioso para ver o desempenho, porque este é um modelo bem novo, lançado recentemente. Vamos conferir. [música] Certo, Grock terminou. De novo, não vamos ler nada disso. Vamos direto para a instância. Vamos executar tudo. Então,
06:30 já executamos uma vez. Vemos que a remoção de duplicatas está funcionando, porque chegaram 90 itens e dois saíram do nó de artigos já ignorados. Isso parece basicamente igual aos outros workflows. Sim, o mapeamento está acontecendo em linha. Está mapeando corretamente. E a remoção de duplicatas funciona. Sim, já vi o suficiente. Está bom. Certo, vamos conferir a tabela de dados, só para garantir. Nosso feed de avaliação. Lindo. E, sim, estão todos lá. Então, ele concluiu a tarefa. Não vamos reprová-lo. Mas por quanto e com que qualidade ele fez isso? Vamos conferir. Então, em comparação com Astra e
07:03 Opus, Grock fez isso por US$ 2,51, em cerca de 10 minutos. Astra foi muito mais rápido. Ele fica mais ou menos no meio. Então, está em segundo lugar por enquanto. Interessante. Certo, vamos ver como nossos modelos open source se comparam a esses modelos proprietários americanos com financiamento pesado. Vamos conferir. Certo, GLM 5.3, o primeiro dos nossos modelos open source em teste. Vamos abrir o open code e executar.
07:34 Vamos abrir o n8n e conferir o RSS de notícias por hora que temos aqui. Certo, primeiro: a nota adesiva não está sobrepondo essas coisas. Isso é bem legal. Está no tamanho errado, mas, sabe, pequenas vitórias. O nó de gatilho também foi para a tabela de dados. Vamos ver se isso puxa as coisas. Sim, temos aqueles três ali. Depois buscamos os artigos de fato e os preparamos novamente. Normalizamos os schemas e isso está funcionando bem. Removemos as duplicatas. Interessante. Havia algumas duplicatas e ele as removeu. Ótimo. Vamos executar de novo. Deve funcionar exatamente da mesma forma. Sim. E então manter apenas os novos
08:05 artigos. Funcionou muito bem. Certo. Vamos só fazer uma verificação rápida. Temos o feed RSS com os três. Aham. E os artigos de notícias estão, de fato, sendo carregados ali. Certo. O GLM criou um workflow funcional. Está ótimo e, na verdade, posicionou a nota adesiva um pouco melhor do que alguns dos modelos proprietários. Como foi no placar? Certo, o GLM fez isso por 68 centavos. E olhem o tempo também. A quantidade de tokens foi mais ou menos a mesma do GPT6. Então, de novo, nem todos os tokens são iguais, mas olhem o tempo. Isso levou cerca de 3 minutos, então
08:35 quase o dobro, mas olhem esse custo. Vamos em frente. Kimi K3, tarefa um. Vamos colar isso. Estamos no Kimi e no meu modo favorito, Max. Faça. Estou muito curioso para saber como esses modelos open source funcionam porque, por exemplo, nunca usei o Kimi antes. Esta vai ser a minha primeira vez. Vamos ver se ele sabe colocar uma nota adesiva no lugar certo. Vamos conferir o trabalho. Notícias RSS para tabela de dados. Estou gostando muito da ausência de travessões, para ser sincero. E sim, posicionamento do comentário a cada hora.
09:08 Interessante. O Kimi escolheu colocar isso em um nó de código. Não é tão fácil de usar. Eu teria que fazer isso. Esta é uma forma de inserir. E provavelmente eu poderia pedir a ele para tuitar isso, e estou confiante de que ele faria. Então, para mim, isso é uma desvantagem. Depois, vamos ver: ele cria um item que é um array dessas coisas e, em seguida, as divide. Então temos três itens e depois ele processa cada item no nó RSS. Ele entende N itens, o que significa que o n8n está passando isso pelo contexto. Isso é bem legal. Ele fez isso. Está executando outro nó de código para fazer a normalização. Ótimo. E sim, todos estão saindo iguais
09:39 ali. Está salvando o artigo. Interessante. Com um upsert. Se você não sabe o que é um upsert, é uma atualização ou uma inserção. Ele atualiza se o item existir e insere se não existir. Tecnicamente, isso não levaria a duplicatas. Muito bem. O Kimi fez isso com poucos nós, mas é totalmente válido, só porque verificamos todos os outros modelos até agora. Vamos conferir os artigos de notícias aqui, e eles estão chegando. Certo, Kimi, trabalho elegante. Mas como foi o custo do Kimi? Certo, olhando o placar, vamos ver se o Kimi tira do primeiro lugar o GLM 5.3. Não tirou. Mas, até agora, eles são mais baratos do que todos os modelos
10:13 proprietários. Faz sentido. Você não precisa pagar o Dario e o Sam. Uma coisa interessante são os tokens. Certo. Qwen 3.8 Max. O último dos nossos modelos na tarefa um. Um modelo que nunca usei antes. Estou muito curioso para ver como ele se sai. Vamos garantir que está no meu modo favorito, Max. E vamos executar. Vamos ver como ele se sai. Certo. Três minutos depois, o Qwen terminou. Estou até um pouco nervoso para olhar, porque, sei lá, por algum motivo, estou torcendo pelos modelos
10:45 open source. Não vamos ser tendenciosos ao avaliá-los, mas seria legal ter alguns modelos open source bons e baratos que vocês possam usar para criar seus workflows. Certo. É, o posicionamento da nota adesiva está péssimo. Certo, vamos fazer isso. Até aqui, tudo bem. Gatilho. É, vamos executar. Certo, ele também optou pela abordagem da tabela de dados para os feeds RSS, o que, sinceramente, eu gosto. Configurou os feeds RSS para continuar em caso de falha, porque assim podemos filtrá-los se o link não estiver vazio. Isso é bom. Normalizamos no nó Set. Parecido com o que alguns dos outros fizeram. Estamos removendo duplicatas de novo com um nó de remoção de duplicatas e usando o link como ID. Faz sentido. Ignorar
11:18 os artigos existentes. Está funcionando. E então, sim, ele não salvou os artigos novos porque tinha acabado de executar isso durante o teste. Então, não há artigos novos para adicionar. E, claro, para sermos justos, vamos conferir. Ele adicionou esta tabela para os feeds RSS. E também adicionou estes artigos. Certo. Então, não é desclassificado. Isso é bom. Mas, como é o último modelo, rufem os tambores: como ele se saiu em comparação com o GLM 5.3, que é o modelo a ser batido? Fez isso por 81. Certo, interessante. Então, na tarefa um, em termos de custo, acho que não é muito surpreendente.
11:51 Os modelos open source estão dominando aqui. E, em termos de tempo, temos algumas opções. Então, se você estiver criando workflows mais simples como este, o GLM é uma ótima escolha. Acho que, se você estiver realmente com pouco tempo ou fazendo algo em que talvez gere milhares de workflows ou os personalize, talvez o Qwen seja uma opção bem boa para você. Essa foi a tarefa um. Agora, vamos fazer a tarefa dois e depois somar o custo e outras coisas das tarefas um e dois, ver o resultado de todos os modelos e escolher o vencedor. Então, antes de descobrirmos quem vence a tarefa dois e irmos testar esses modelos,
12:23 vamos ver como seria uma boa conclusão da tarefa. Temos o prompt da tarefa dois. É implementar o seguinte caso de uso na minha instância do n8n. Um workflow de agent com IA pode acessar uma tabela de dados existente de artigos de notícias e responder a perguntas sobre manchetes recentes usando apenas a tabela de dados de artigos de notícias como fonte de verdade. O agent pode ser usado no recurso nativo de chat do n8n e como um subworkflow em outros workflows. E, segundo, um workflow de endpoint de API. O endpoint é /news. Quando chamado, ele usa o agent com IA acima para obter um resumo dos artigos mais recentes, usando 10 como padrão, a menos que um parâmetro count seja incluído
12:57 na chamada. Então, basicamente, estamos pedindo que ele crie dois workflows. O agent e um workflow de API wrapper que o consome. Separadamente, ele também precisa poder ser usado no chat do n8n. Como seria um bom resultado para a tarefa dois? Vamos olhar primeiro para o agent. Esperamos dois gatilhos porque queremos usá-lo com o recurso nativo de chat do n8n aqui e também como subworkflow pelo API wrapper. Então, temos estes dois. Precisamos de algum tipo de normalização da entrada, porque elas têm entradas diferentes. E então esperamos um agent com IA. Ele precisa ter um chat model. Esperamos que tenha memória de conversa, porque queremos que ele
13:29 funcione com chat. Então, precisa ter estado. E, idealmente, precisa ter pelo menos duas ferramentas, eu diria, para pesquisar artigos. Há a ferramenta para obter os mais recentes, que é para o caso de uso do endpoint de API. Ela vai precisar disso. Mas, se estivermos conversando, talvez precise poder pesquisar artigos. E essa parte é um pouco mais complicada porque, ao pesquisar, os filtros que ele define, digamos, para o título ou para a descrição, precisam ser palavras-chave e você precisa garantir que estejam configurados como “contém”, porque, se ele estiver procurando uma correspondência exata com uma frase, por exemplo, é muito improvável que a encontre nos resultados. Então, parece um caso de uso bem simples,
13:59 mas escolhi especificamente este porque envolve subworkflows interagindo com workflows pais. Temos vários gatilhos. Temos ferramentas com certas nuances. Então, embora talvez este não seja um caso de uso que você esteja tentando criar, escolhi casos de uso cujos blocos de construção representam a maioria dos casos de uso. Esse é o agent com IA, e depois temos a API que consome esse agent com IA. É um workflow bem simples, mas, de novo, estamos apenas verificando se ele consegue lidar com os conceitos de vários workflows. Esperamos que haja um gatilho. Ele precisa definir o caminho como /ne porque dissemos que seria um endpoint /news. E aqui ele extrai a contagem, porque nós
14:33 esperamos poder enviar um parâmetro count. E, se não enviarmos, ele define o valor como 10. Depois, precisamos chamar o próprio agent de IA. Em seguida, há um endpoint de API. Se der erro — e isso pode muito bem acontecer, já que estamos usando IA no subworkflow —, queremos uma resposta de erro adequada e uma resposta JSON adequada aqui. É um endpoint de API, então preciso receber JSON, não apenas uma resposta em texto ou algo assim. É assim que deve ser a tarefa dois. Vamos começar. Certo, vamos ver como o Opus 5.5 se sai na tarefa dois. No OpenCode, a instância do n8n ainda está no estado da tarefa um. Certo, vamos
15:05 executar. Certo, o Opus concluiu a tarefa dois. Fez um monte de coisas aqui. Fez o deploy delas. Vamos conferir. Primeiro, temos o agent. Vamos ver. Certo, temos uma nota adesiva. Temos um gatilho de chat. Legal. Ótimo. Ele até preencheu essas sugestões e coisas do tipo, o que é bom, porque, ao editar no
15:36 chat, se conversarmos com esse agent, veremos que elas estão lá. Certo, vamos voltar. Vamos ver. Temos um gatilho de subworkflow e ele definiu algumas entradas de workflow. Vamos ver. Certo, a entrada do chat e o ID da sessão. Faz sentido, porque talvez precisemos dele para manter o estado. Temos um nó de definição aqui que basicamente normaliza as entradas, porque recebemos estruturas diferentes de um e do outro. E depois, o próprio agent. Certo, vamos dar uma olhada aqui. Temos o Sonnet, temos a memória de conversa recebendo o ID da sessão do nó normalizado. Muito bom. E temos
16:10 três ferramentas. Certo, interessante. Temos “obter os artigos mais recentes”. Obter os artigos mais recentes. Temos uma descrição. Isso é bom. Temos um limite aqui. E ele mostra como usar esse limite. Legal. Temos “pesquisar artigos por palavra-chave”. Também tem uma descrição. Temos “deve corresponder a qualquer condição”. E temos uma condição “contém” para ambos. Muito bom, com descrições. Certo, muito bem feito. Mas vamos conferir o agent. Ver se ele se baseia na entrada do chat e se a normalizou. Então, isso funciona. Agora vamos conferir o prompt. “Você é um agent de notícias” e depois “ferramentas de fonte da verdade do assistant para usar”. Certo, eu diria que está bem
16:43 robusto. Vamos conferir o endpoint de API que deveria usar isso. Temos uma descrição. Ele organizou isso em grupos. Veja, é um pouco diferente do que tínhamos no exemplo. Vamos ver se está funcionando do mesmo jeito. Aqui, temos o caminho de notícias do gatilho de webhook. Estamos extraindo esse count e ele usa uma expressão bem parecida. Também valida os dados de count e mostra uma mensagem de erro se a validação falhar. Certo, chamamos o subworkflow e também temos sucesso e erro. Vamos conferir o sucesso. Legal. Estamos retornando uma resposta JSON válida. Certo, então passou no
17:17 teste. Conseguiu concluir a tarefa e temos $5,20 minutos. Para ser sincero, não foi o tempo mais curto. Provavelmente eu conseguiria ter feito isso nesse tempo. Certo, vamos ver como o GPT6 Astra se compara ao Opus na tarefa dois, porque, quer dizer, na tarefa um ele se saiu muito bem. Está definido como máximo. Certo, vamos executar. Certo, o Astra fez o trabalho dele na tarefa dois. Não vamos ler nada disso; vamos direto para a instância e conferir. Certo,
17:48 ele colocou essas coisas em algumas seções. Interessante. O que está acontecendo aqui? Temos um gatilho baseado em chat antes disso. Certo, parece legítimo. E temos o gatilho de subworkflow com três entradas. Vamos ver. Temos a entrada do chat. Certo, temos o count. Sim, faz sentido, porque isso é algo do subworkflow, por exemplo, a entrada da API que pedimos para ele fazer. E o ID da sessão, caso usemos isso de outra forma que não seja pela API. Precisamos normalizar essas entradas. Sim. É a mesma coisa que o outro estava fazendo. Interessante. Carregar os artigos mais recentes antes de chegarmos ao agent. Certo. Então, o que ele está fazendo aqui? Ele obtém o count. Isso é… Isso não está bom. No exemplo de chat, toda vez que eu conversasse com esse agent, ele buscaria esses artigos mais recentes em cada resposta. Esse é um design ruim e malfeito. Ele errou nisso. Sinceramente, nem me importo muito com o que vem depois. Isso simplesmente não é bom. É um design péssimo. E ele só tem a capacidade de pesquisar com ferramentas. Vamos ver se fez isso bem. Mas acho que talvez tenhamos que desclassificar este. “Contém”, sem diferenciar maiúsculas de minúsculas. Se você não for um usuário final especialista, talvez não entenda que isso é uma coisa muito idiota de fazer e que não deveria ser feita.
18:23 fazendo aqui? Ele obtém a contagem. Isso não é nada bom. No exemplo de chat, toda vez que converso com esse agent, ele busca os artigos mais recentes em cada resposta. É um projeto ruim e malfeito. Ele errou nisso. Sinceramente, nem me importo muito com o que vem a seguir. Isso simplesmente não é bom. É um projeto péssimo. E ele só tem a capacidade de pesquisar usando ferramentas. Vamos ver se fez isso direito. Mas estou pensando que talvez tenhamos que desclassificar este. Contém, sem diferenciar maiúsculas de minúsculas. Se você não for um usuário final especialista, talvez não entenda que isso é uma coisa muito idiota de fazer e que não é para fazer isso.
18:53 Então, para mim, o Astra… Vamos ver quanto custou, mas, na minha opinião, está desclassificado. Vamos ver. Certo, fez isso por $4,86. É mais rápido que o Opus. Então, é mais barato, é mais rápido, mas você teria que conhecer muito bem o assunto e teria que dar prompts para conseguir o resultado que quer, porque ele fez algumas coisas bem, mas regras são regras. Isto aqui é simplesmente malfeito. Design ruim, então está desclassificado. Digam o que quiserem nos comentários, mas este é o meu vídeo, então está fora. Certo, vamos ver como o Grock 4.7 está indo na tarefa dois. Definimos a instância no mesmo estado em que estava na tarefa um. Vamos executar. Ah,
19:27 isso está ficando interessante. Certo. E sim, ele encontrou as ferramentas e as outras coisas, e está em andamento. [música] Certo, o Grock acabou de concluir a tarefa dois. Demorou bastante. Quase 20 minutos. Vamos ver se fez um bom trabalho. Vamos conferir o agent de artigos de notícias. Certo, até agora o Grock é bem ruim para inserir e dimensionar notas adesivas, mas, de novo, isso não é tão importante. Certo, temos um gatilho de chat. As coisas já estão preenchidas. Isso é uma boa experiência de usuário. Legal. Neste
20:01 gatilho, temos apenas a pergunta a fazer para os subworkflows da API. E depois, um nó de definição para normalizar essas entradas, como os outros fizeram. Um agent de IA sem um monte de bobagem antes dele. Isso é bom. Modelo de chat, memória de chat com o ID da sessão basicamente normalizado, que viria de qualquer um desses ramos, e as ferramentas. Certo, obter os mais recentes. Ele não definiu uma descrição para a ferramenta, mas o título é “obter os artigos de notícias mais recentes”, então acho que basta. E tem um limite. Certo, “deve corresponder a qualquer condição”. Sim, encontrou. E depois, pesquisar artigos de notícias. Uma ferramenta
20:33 mais complicada. Não há descrição da ferramenta. Acho que, neste caso, não é necessariamente necessário. Eu gostaria de ver uma, mas temos “deve corresponder a qualquer condição”. Frase curta, sem diferenciar maiúsculas de minúsculas, para encontrar. Certo. Eu gostaria que dissesse “frase curta ou palavra”, mas isso está bem bom. Uhum. E depois, o próprio agent. Vamos ver a system message. “Você responde a perguntas sobre manchetes de notícias recentes.” Parece razoável. Talvez não esteja tão bom quanto o do Opus, mas tudo bem, esse é o agent. Por enquanto, digo que passou. Parece muito com o que esperávamos. E sim, está funcionando. Está em execução. Ótimo. Certo. Agora, a API que consome o agent. Vou
21:06 mover isto, porque está mal posicionado. Sim, eu tinha razão. E depois, ele faz um GET e um POST. GET para tudo, POST para tudo. Vamos ver. Normalizar o count. Certo. Então, se houver um count, faz isso. Caso contrário, define como 10. Chama o agent mais recente, com sucesso e erro. Legal. E o que está acontecendo aqui? Se der certo, certo, ele está montando a resposta antes de entrar ali. Aham. E depois envia, e, caso contrário, responde com um erro e um código de resposta. Sim. Certo. O Grock fez o trabalho. Não gosto muito disto aqui, mas está funcionando. O GET funcionaria. Então, concluiu a tarefa. Mas como se saiu?
21:38 Certo. Primeiro lugar até agora. Então, concluiu a tarefa. Mas foi o que mais demorou até agora, e por bastante. E custou $4,85. Estou muito curioso para ver como esses modelos open source vão se sair. Vamos conferir. Certo, vamos ver como o GLM se compara aos nossos modelos proprietários na tarefa dois. Já deixei tudo preparado aqui. Estamos no modo máximo, e a instância está no mesmo estado em que estava na tarefa um. Vamos executar. Já está indo bem rápido. Até agora, foi rápido. Vamos ver como se sai.
22:14 Certo, o GLM terminou. Mas ficou bom? Vamos abrir o agent. Certo, notas adesivas. Vamos parar de comentar como esses modelos lidam com notas adesivas. Usem modelos melhores. Certo, gatilho de chat. É, esse tipo de coisa preencheu o subworkflow. Quais parâmetros? Ótimo. Isso funciona. Estamos normalizando. Sim. Sim. Sim. E então temos o agent de notícias. Certo, só temos uma ferramenta, a ferramenta de artigos de notícias. Temos a memória de chat encaminhando corretamente a chave da sessão, dependendo de onde ela viria. Mas esta aqui nunca teria uma chave de sessão, o que significa que ficaria em branco; ou seja, se não houver chave
22:48 vamos ver, vamos ver: neste workflow, não vai definir uma chave, o que significa que aqui nós… ah, ah, ah, que legal! Caso contrário, usa o ID de execução. Isso é muito inteligente da parte do GLM. Então, o que acontece, basicamente, é que o gatilho de chat fornece um ID de sessão. Se houver um ID de sessão quando chegarmos a este nó, escolhemos esse ID. Se não houver ID de sessão, porque estamos usando o subworkflow, ele vai usar o ID de execução do workflow atual, que sempre existe. Você me surpreendeu, GLM, mas isso é elegante. Certo, use a ferramenta de artigos. Vamos dar uma olhada aqui. E então precisa corresponder a qualquer condição e retornar todos os… Certo, quero dizer, este
23:24 workflow deve ser executado a cada hora. Então, haverá milhares de artigos no banco de dados, e isso vai dar problema. Por que você acharia que isso é uma boa ideia? Estou muito decepcionado. GLM, você pode discordar de mim, mas esta ferramenta é malfeita. E, se você olhar para isso, esse é o ponto: se você não souber o que está fazendo no n8n, esse problema só vai aparecer depois de dias ou semanas, quando tudo acumular e começar a dar errado. Esse é o tipo de problema que eu realmente não gosto que essas IAs criem, porque você só vai perceber isso mais tarde, talvez em produção. Então, para mim, GLM, vamos conferir
23:54 a API, mas, mas sinto muito, você está fora. Temos uma API. Normalize. Chama o agent. Também não há uma resposta de erro. Ah, GLM, eu tinha grandes esperanças em você. Vamos olhar os números, porém. Mas ele não concluiu a tarefa. Então, fez isso por, ah, US$ 0,18. Teria sido o modelo mais barato até agora também para esta tarefa. É, mas foi rápido. Então, fez um trabalho ruim rapidamente, mas vamos continuar. Você pode discordar de mim, mas quero estabelecer um padrão relativamente alto para a compreensão da sua intenção com um prompt imperfeito. Porque esse é o ponto. Se você precisa dizer perfeitamente a essas coisas o que fazer, então é você quem está servindo a elas. Essas são ferramentas que
24:27 deveriam ajudar você. E acho que, para muitos usuários de n8n trabalhando em um workflow complexo, pode ser perigoso usá-las, a menos que você realmente saiba o que está fazendo. Então, neste momento, eu usaria o GLM com cautela. Depois do desempenho decepcionante do GLM, que foi desqualificado, restam o Kimi K3 e o Qwen 3.8 Max, do campo open source. Vamos ver como o Kimi se sai nesta segunda tarefa. Já carreguei tudo. Mesmo estado da tarefa um e modo máximo. Vamos executar e ver se o Kimi é o modelo mais barato até agora.
24:58 Certo, o Kimi foi muito rápido, mas vamos ver se isso resulta em um workflow realmente bom. Então, agent. Certo, não estamos normalizando os dados aqui, mas vamos ver. Vamos ver. Talvez tenha feito alguma coisa dentro do workflow, porque um desses modelos me enganou por um instante e depois ficou muito elegante. Certo, mas o gatilho de chat configurou um gatilho de execução de workflow. O que temos? Temos a consulta. Certo, e o ID de sessão. É algo bem simples. Certo, vamos verificar dentro do agent de notícias. Certo, legal. Então, este é
25:28 o motivo pelo qual não precisa normalizar a entrada agora: este é o prompt que vem de uma etapa anterior do workflow. Então, a entrada do chat é onde esse valor estaria no gatilho de chat, e doquery é o nome definido aqui. Isso é bem elegante. Certo, vamos verificar a memória da conversa. Ela pede o ID de sessão. Isso é automático e vem do nó de gatilho de chat conectado. Então, basicamente, certo, o interessante é que o gatilho de chat fornece isso. Mas aí, no gatilho de execução de workflow, deram a ele o mesmo nome. Então, tecnicamente, também funcionaria, embora não esteja necessariamente configurado do jeito que uma pessoa
26:02 poderia fazer, mas funciona. Só que tem uma única ferramenta. Vamos ver o que ela faz. A busca de linha precisa corresponder a qualquer condição. Ah, retornar tudo. Hã, quero dizer, o quê? Desqualificamos o GLM por esse motivo, certo? Porque, de novo, isso explodiria. Então, acho que não seria justo não desqualificar o Kimi, só para manter a consistência. Vamos verificar a API. Ah, também não tinha uma resposta de erro. Certo, Kimi, vamos ver como você se saiu em termos de custo e coisas do tipo. O Kimi custou US$ 1,76. Então, sim, também é barato, mas não tão barato quanto o GLM. Foi muito mais rápido, porém. Mas o desempenho foi bem abaixo do esperado, especialmente se você não souber o que
26:35 está fazendo. Quero dizer, não é que ele não tenha feito algumas anotações, mas é justamente nessa nuance que esses modelos são úteis. Porque, caso contrário, se você só estiver consertando workflows quebrados e precisar conhecer tudo sobre eles, isso não é muito útil. Então, infelizmente, Kimi, você está fora. E espero que haja um modelo barato e open source que não custe cinco dólares; basicamente, isso depende do Qwen 3.8 Max. Vamos ver como ele se sai. Uau, isso está ficando intenso. Hora do último modelo da nossa última tarefa: Qwen 3.8 Max. Ele pode levar o ouro ou ser desqualificado
27:06 e ficaríamos sem nenhum modelo open source na nossa lista. Vai abrir o código. Vamos executar. E, obviamente, vocês vão ver uma bela passagem de tempo acelerada e assistir a tudo isso em cerca de cinco segundos. Eu vou ter que esperar um pouco mais, mas vamos ver. Estou meio nervoso. É importante. Vamos abrir o agent de IA e torcer para que ele não faça nenhuma coisa absurda, porque eu adoraria que pelo menos um modelo open source não fosse desqualificado. Certo, obter artigos de notícias e, ah, está pegando todos os artigos. E dissemos que isso seria motivo para desqualificá-lo.
27:39 Esses modelos fizeram todo o resto. Então, uau. Quero dizer, vamos conferir a API aqui. Tem um GET e um POST conectados ali para a mesma coisa. Nenhuma resposta de erro. O Qwen fez isso por US$ 2,19, mas infelizmente foi desqualificado, o que significa que, tecnicamente, só restam o Grok e o Opus, de acordo com as regras que defini para este desafio. É, vamos ver o resultado geral. Temos o Grok em primeiro lugar, por
28:10 um total de US$ 7,36 e cerca de meia hora para criar esses dois workflows. O Opus custou US$ 8,68 e levou cerca de 32 minutos. Tokens. Acho que, de novo, isso não importa muito, porque tokens não são equivalentes entre si. E, olhando para alguns dos que foram desqualificados, mais uma vez, fui bem rigoroso quanto ao que deveria passar e ao que deveria ser eliminado. Eu poderia ter sido menos rígido. Talvez assim este vídeo fosse mais divertido. Mas, de novo, eu queria ser meio implacável, porque, se você vai usar um modelo que custa dólares para fazer algo por você, quero que saiba se precisa ser especialista naquilo em que está trabalhando para usá-lo, porque, se
28:40 você não faz ideia do que está fazendo e usa um modelo mais caro, provavelmente sete dólares é um negócio incrível para você, porque um engenheiro cobraria muito, muito, muito mais. Mas, se você sabe o que está fazendo e percebe a diferença de custo, podendo talvez fazer isso por US$ 1,76, e sabe que só vai precisar dizer um pouco mais ao modelo o que fazer, isso pode ser muito útil para você. Então, o modelo mais barato até agora foi o GLM 5.3, mas o Grok parece ser o melhor neste momento. E, entre os modelos open source, acho que o GLM é o melhor em termos de custo, mas, em termos de resultado, todos foram mais ou menos parecidos. Todos erraram mais ou menos as mesmas coisas. Com tudo isso em mente, o Grok é o vencedor. O Grok é o melhor modelo para usar, se você não souber
29:13 o que você está fazendo e quer que ele faça isso automaticamente e tenha todas as coisas complexas, se estiver disposto a trabalhar um pouco, pode optar pelo Qwen. Bom, nesse caso, provavelmente o Kimi, né? Porque o Kimi foi bem rápido ali e tinha um preço relativamente parecido. De qualquer forma, se quiser ver mais vídeos de comparação como este, a n8n me convidou para fazer este vídeo no canal deles. Então, um grande agradecimento à equipe da n8n por me deixar fazer isso. Foi muito divertido. Para ser sincero, fiquei um pouco arrasado com os modelos open source. Mas, se quiser uma continuação, talvez com uma análise mais detalhada dos modelos open source, me avise. Deixe um comentário. Isso vai mostrar à equipe da n8n que você quer que eu volte aqui
29:44 de novo. Então, obrigado pelo convite. Espero que você tenha aprendido alguma coisa com isso. Para mim, foi uma saga. E, como sempre, feliz programação de fluxos.
Transcrição original
[00:00] In this video, I’m going to find which Frontier AI model is the cheapest at automatically generating reliable NEN workflows from your favorite AI harness like Claude Code or Codeex using MCP. I’ve selected six promising Frontier models, including Opus 5.5 and some beefy open-source contestants to go head-to-head on two tasks. Task one is a data scraping flow for top news articles and a data table to store it in. And for task two, the models have to build an AI agent that can access this data table and be used inside the native Nitn chat
[00:31] or wrapped as an API endpoint. And I’m finding the cheapest model because honestly all the Frontier models are pretty good at building codelike things these days. And the NAN MCP feature provides a lot of context and tools to the models on how to build a valid workflow. So what I really want to know is is it going to cost me one or $15 to solve my problem? To run the test, I’m using N version 2.40.6 six on a self-hosted instance with MCP connected to my harness. A slew of hot models with a mix of open- source and proprietary ones, including Opus 5.5, GPT6 Astra, Gro 4.7, GLM 5.3, Kimmy K3, and last but
[01:09] not least, Quen 3.8 Max. For each model, we’ll set the effort level to a maximum available for a fair test. I’ll also use open code and open source AI harness like Claude Code to run our models. That way, no model gets an unfair advantage. All right, let’s find out which model is the most competent yet affordable. All right, let’s have a quick look at the prompt for task one. Implement the following use case on my end instance. Every hour, fetch all new news articles available on RSS feeds listed below and add each article to an end data table
[01:41] called news articles. Only add each unique article once to the database. Data table should have headline, title, description, link to article, and the news outlet. In future, I should be able to easily add new RSS feeds to be monitored without needing to modify the workflow beyond. And then we have the RSS feeds. It’s an imperfect prompt, but it’s a realistic prompt. The kinds I might run when I need a quick workflow done. And then let’s go take a look at what a good workflow result would look like so we know what to compare to. I’m going to go into one that’s already built. Um, and here basically we should have a schedule trigger cuz we want this to run every hour. We need somewhere to store the list of those URLs because I need to be able to add to it. So a data
[02:15] table where we can grab that, for example, counts. And then from there, if I just run the workflow, it basically needs to be able to fetch the URL and get all the news articles there. It needs to be able to normalize the schemas between these different news articles in there. So, it’s doing that. Ideally, it’s going to remove any duplicates in the run as well in case there’s some coming in from the RSS feeds. And then make sure that we’re not saving anything that already exists in data table. There’s an operation if row does not exist for that. And then we need to save the article in the data table. And then, of course, we need to have a data table. So I expect that a
[02:46] news articles, data tables created with these columns. So that’s what good looks like for task one. So let’s move on to our first model. We’re going to start off with Opus 5.5. I think a model a lot of us have used. Let’s go over to open code. I’ve got the task one prompt in there. We’ve got it in max mode. My favorite. And let’s run it. All right, it’s gotten the SDK from Edit. Guess it’s off to the races. All right, so Opus did its thing. Let’s go over into N and check out its work.
[03:19] So it’s created one workflow, hourly news articles from RSS feeds. That’s a pretty sensible title. I appreciate that there’s no EM dashes there. We’ve got a sticky note here. And we’ve got some groups. Actually, let’s just run it, too. We get the RSS feeds. We pull the RSS feeds. We got 96 items coming out for each one. Okay, that makes sense. We route that into formatting. Okay. So, unlike in our example, it’s using a set node in line, but that is normalizing to the output. That looks good. Yep. And then we’re filtering by valid articles.
[03:54] So, if there’s no link, it doesn’t add it in. Oh, fair. Fair. And then we’re doing remove duplicates within the current input. Okay. So, it’s doing that for anything that it’s pulled from this list that’s duplicated. And then, yep, saving skipped articles. if row does not exist operation and then loading it into the data table with all these different values to insert. Final check is the data table. Go to news articles here and we see those have all loaded in there and we see it’s coming from the different outlets. Okay, so it passed
[04:25] the test. That is we’re not going to disqualify it because it wasn’t able to do the workflow. It did great. All right, so looking at the leaderboard, it did it in $348 and it took 15 minutes. Is that long or not? We’ll see after we benchmark a couple more with Opus in. Let’s see how Astra does on this task. I got open code here. Astra set to max. Let’s run it. Let’s not read this and let’s go check out the workflow. So, hourly RSS news archive. Very nice. I appreciate there not being any EM dashes there. Let’s
[04:56] expand these here. I Well, I guess that’s not ideal, but I’m not going to count that against it. Also, three groups. Just run this workflow. Okay. Also went for a data table. I’m not going to go check the table because it loaded these. So, it’s there. RSS feed reads those in. That works. Also going for the set node approach with inline stuff to trim those. Doing some pretty heavy logic there. But that is all turning into correctly shaped outputs. We are also filtering out things that are not filthy and things that are valid
[05:26] URL. Okay, that’s pretty cool. Nice one, Astra. Good one, Sam. And then also ddup removing repeat items only articles already saved. And we can see that working because 91 articles went in. This already ran once, right? And so then only one new article since we ran it last time went in. Great. So Astra passed the test. It completed the task. But how did it do? So GPT Astra did it in $2.19. It’s currently in first place. Way cheaper. It’s way faster. I preferred its result compared to Opus. All right,
[05:57] let’s see how Grock, our last proprietary model, cuz then we get into the open- source one, stacks up with Opus and GPT6 Astra. So, let’s go into open code. Grock 4.7. We got it on X High, which would have been cooler if it was named Max, but I won’t take it personally. All right, let’s run it. I’m really curious how this does cuz this is a pretty new model that just came out recently. So, let’s see. [music] All right, Grock is finished. Again, we’re not going to read any of this. We’re just going to go in the instance. So, let’s just run this whole thing. So,
[06:30] we already ran it once. So, we see the dduplication is working because we got 90 items coming in there and two coming out of the skip articles already node. This looks basically the same as the other workflows. Yep, the mapping is happening in line. That’s mapping correctly. And the dduplication works. Yeah, this is I’ve seen enough. This is good. All right, let’s just check the data table for posterity. Our assess feed. Beautiful. And yeah, they’re all in there. So, it did the task. We’re not going to fail it. But how cheaply and how well did it do it? All right, let’s have a look. So, compared to Astra and
[07:03] Opus, Grock did it in $2.51, about 10 minutes. So, Astra was way faster. It’s about in the middle there. So, it’s in second place right now. Interesting stuff. All right, let’s see how our open-source models compare to these heavily funded American proprietary models here. All right, let’s check that out. Okay, GLM 5.3, first of our opensource models we’re testing here. So, let’s go into open code. Let’s run that.
[07:34] Let’s open up NN and let’s check out the hourly news RSS in store. Okay, so first off, the sticky note isn’t overlapping with this stuff. So, that’s pretty cool. It’s the wrong size, but you know, small wins. Trigger node also went for the data table. Let’s see if that pulls stuff in. Yep, we got those three right there. Then we fetch the actual articles and then we prepare them again. Normalizing the schemas and that’s working fine. Removing duplicates. Interesting. There were some duplicates and it removed them. Great. Let’s run that again. That should run exactly the same. Yep. And then keep only new
[08:05] articles. That works beautifully. All right. Then just sanity check. Got the RSS feed with the three. Uh-huh. And the news articles are in fact loading in there. All right. GLM did do a working workflow. Looks great and actually positioned the sticky a little better than some of the proprietary models. How did it do on the leaderboard? All right, GLM did it in 68 cents. And look at the time as well. So tokens about the same as GPT6. So again, not all tokens are created equal, but look at the time. So it’s like this was about 3 minutes, so
[08:35] it’s almost double, but look at that cost. Moving right along. Kimmy K3 task one. We’ll paste that in. We’re on Kimmy and we’re on my favorite mode, Max. Do it. really curious how these open source models work because I, for example, I’ve never used Kimmy before. This is going to be my first time. Let’s see if it knows how to put a sticky note in the right place. Let’s check its work. RSS news to data table. I’m really appreciating know dashes there to be honest. And yep, comment placement every hour.
[09:08] Interesting. Kimmy chose to put this in a code node. It’s not as usable. I would have to do this. This is a way to enter it. And I could probably prompt it to tweet that and I’m confident it will do that. So that for me is coin. It then let’s see it creates one item that’s an array of those things and then it splits those out. So then we have three items and then it processes for each item in the RSS node. So it understands N items which means that N’s piping in the context. That’s pretty cool. It’s done that. It’s running another code node to do the normalization. Great. And that’s Yep. They’re all coming out all the same
[09:39] there. It’s saving the article. Interesting. With an upsert. So an upsert, if you don’t know what that is, it’s an update or an insert. So it updates if it exists and it inserts if not. Technically, that wouldn’t lead to duplication. So nice one. Kimmy did it in not a lot of nodes, but this is fully valid just cuz we checked for all the other models so far. Check news articles here, and those are all coming in. All right, Kimmy, elegant job. But how did Kimmy do on cost? All right, looking at the leaderboard, let’s see if Kimmy unseats GLM 5.3. And it didn’t. But so far they’re cheaper than all of the
[10:13] proprietary models. It makes sense. You don’t got to go pay Dario and Sam. Interesting thing is that tokens. All right. Quen 3.8 Max. Last of our models on task one. A model I’ve never used before. I’m really curious to see how this one stacks up. Let’s make sure it’s in my favorite max mode. And let’s run that. Let’s see how this stacks up. Okay. 3 minutes later and Quen has output. I’m actually a little nervous to look at this cuz I don’t know, for some reason I’m rooting for the open source
[10:45] models. We’re not going to be biased when we review them, but would be cool to have some nice cheap open source models that you guys can use when you’re building your flows. All right. Yeah, sticky note placement’s garbage. All right, let’s do that. Okay, so far so good. Trigger. Yeah, let’s just run this. Okay, so it also went for the data table approach for the RSS feeds, which I like honestly. Doing the RSS feeds continue on fail because then we can filter them if link’s not empty. That’s nice. We normalize in the set node. Similar to what some of the other ones were doing. We’re dduping again with a dduplication node. Uh, and using the link as the ID. That makes sense. Skip
[11:18] existing articles. That’s working. And then, yeah, it didn’t save the new articles cuz I mean, it had just run this when it was testing. So, there’s no new articles to add. And of course, just to be fair, let’s check. It added this table for the RSS feeds. And it also added these articles as well. Okay. So, it doesn’t get disqualified. So, that’s nice. But given it’s the last model, drum rollah, how did it do compared to I guess GLM 5.3, that’s the one to beat. And it did it in 81. Okay, interesting. So for task one, for cost, I guess it’s kind of unsurprising.
[11:51] Open source is dominating here. And in terms of time, we got some options. So if you’re kind of building simpler workflows like this, GLM’s a great bet. I guess if you’re really crunched for time or doing some sort of something where you may be generating thousands of workflows or personalizing them, maybe um probably Quen seems like a pretty good option for you. So that’s task one. Next, let’s do task two and then we’re going to basically sum the cost and stuff between task one and task two and see the result for all the models and pick our winner. So before we find out who the winner is for task two and go test these models,
[12:23] let’s have a look at what a good task completion looks like. So we have the prompt for task two. It’s implement the following use case on my end instance. An AI agent workflow can access existing news articles data table and can answer questions about recent headlines using only news article data table as source of truth. Agent can be used inside the native edit end chat feature and as a subworkflow but other workflows. And then two an API endpoint workflow. Endpoint is / news. When invoked, it calls the AI agent above to get a summary of latest articles defaulting to 10 unless a count parameter is included
[12:57] in the call. So, we’re basically having it create two workflows. The agent an API wrapper workflow that consumes that and then separately it needs to be able to be used inside of Nen’s chat. What does good look like for task two? Let’s have a look at the agent first. We’re expecting there’s two triggers because we wanted to use it with NN’s native chat feature here and also as a subworkflow by the API wrapper. So, we’ve got these two. Um, we need some sort of normalization of input because these kind of have different inputs. And then we expect an AI agent. It’s got to have a chat model. We expect to have conversation memory because we want it
[13:29] to work with chat. So, it has to have statefulness. And then ideally, it needs to have at least two tools, I would say, to search for articles. There’s the get recent, which is from the API endpoint use case. It’s going to need that. But then, if we’re chatting, it might need to be able to search articles. And that one’s a bit more complicated because when you’re doing search, the filters that it defines, let’s say for the title or for the description, they need to be keywords and you need to make sure to set it to contains because if it’s looking for an exact match of a sentence, for example, it’s very unlikely to find itself in the results. So, looks like a pretty simple use case,
[13:59] but I specifically picked this because it has subworkflows interacting with parent workflows. We have multiple triggers. We’ve got tools with sort of nuance in those tools. So even though this might not be a use case that you’re trying to build, I picked use cases where the building blocks for most use cases are represented in it. So that’s the AI agent and then we have the API that consumes that AI agent. Pretty simple workflow, but again we’re just seeing if it can handle the concepts of multiple workflows. We expect to have a trigger. It’s got to set the path to /ne because we told it it’s going to be a / news endpoint. And then here it’s extracting the count of that because we
[14:33] expect that we can send in a count parameter. And if not, it’s setting that as 10. And then we got to call the AI agent itself. And then it’s an API endpoint. If it errors out, which we’re using AI in the sub workflow, that very well could happen. We want to have proper error response and a proper JSON response here. It’s an API endpoint, so I need JSON back, not just like a text response or something like that. That’s what good looks like for task two. Let’s get into it. All right, let’s see how Opus 5.5 does on task two. In open code, we’ve got the N instance still in the state from task one. All right, let’s
[15:05] run it. All right, Opus finished task two. It did a bunch of stuff here. Deployed them. Uh, let’s go check it out. We have the agent first. Let’s check that out. Okay, we got a sticky note. We’ve got a chat trigger. Nice. Cool. It even filled out these suggestions and whatnot, which is nice because then in the edit in
[15:36] chat, if we go ahead and chat with this agent, we can see that it’s got those in there. All right, let’s go back. Let’s see. So, we got a sub workflow trigger and it’s defined some workflow inputs. Let’s see. Okay, the chat input and the session ID. That makes sense because we might need it for statefulness. We have a set node here that’s basically normalizing the inputs cuz we get a different structure from one versus the other. And then the agent itself. Okay, let’s have a look in here. We have Sonnet, we have conversation memory that putting in that session ID from the normalized node. Very nice. And we got
[16:10] three tools. Okay, interesting. We got get latest articles. Get the most recent articles. We got a description. That’s nice. We’ve got a limit here. And it shows how to use that limit. Nice. We’ve got search articles by keyword. Also got a description. We’ve got must match any condition. And we’ve got a contains for both of these. Very nice with descriptions. Okay. Very well done here. Let’s check the agent though. See based on the chat input there and it normalized that. So that works. And then let’s check out the prompt. You’re a news agent and then assistant source of truth tools to use. Okay, that’s pretty
[16:43] robust, I would say. Let’s check the API endpoint that’s supposed to use that. We’ve got a description bucketed this out. See, it’s a little bit different from what we had in the example. Let’s see if it’s feeling the same. Here we’ve got the news path from the web hook trigger. We’re extracting that count and it’s got basically very similar expression here and it’s doing some data validation on the count and it gives an error message if not. Okay, we call the sub workflow and we’ve got a success and error as well. Just check the success. Nice. We’re returning a valid JSON response. All right, so it passed the
[17:17] test. It was able to complete the task and we have $5.20 minutes. Not the shortest time to be honest. Could have probably built it in that time. All right, let’s see how GPT6 Astra compares to Opus on task two cuz I mean in task one it did pretty good. We’ve got this set to max. All right, let’s run it. All right, Astra did its thing on task two. We’re going to not read any of this. We’re just going to go into the instance and check it out. All right,
[17:48] it’s put those in some sections. Interesting. What’s going on here? We uh got a chatbased trigger beforehand. Okay, looks legit. And we got the subworkflow trigger with three inputs. Let’s see. We’ve got the chat input. Okay, we’ve got the count. Yeah, that makes sense cuz that’s something that’s sub workflow, for example, the the API input we asked it to do. And the session ID if we be using this in in some other way that’s not the API. We got to normalize these. Yep. Same thing as the other one was doing. Interesting. Load the latest articles before we get to the agent. Okay. So, what’s it what’s it
[18:23] doing here? It gets the count. This is This is no good. In the chat example, every time I chat with this agent, it would pull this latest articles on every single response. That is a poor shoddy design. It got this wrong. I honestly kind of don’t care what’s happening next. Like, that’s just like no good. That’s a terrible design. Um, and it’s just got the ability to search tools. Let’s see if it did this well. But I’m thinking we may have to disqualify this one. Contains case insensitive. If you’re not an expert end user, you might not understand that that’s a really dumb thing to do and you’re not supposed to.
[18:53] So Astra for me, let’s see how it did on the cost, but it’s disqualified in my opinion. So let’s see. Okay, it did it in $4.86. It’s faster than Opus. So it’s cheaper, it’s faster, but you would have to be really knowledgeable in it and have to be prompting it to get the result that you want there cuz it did some stuff well, but rules of rules. This here, that’s just shoddy. Poor design, so it’s disqualified. Say what you like in the comments, but this is my video, so it’s out. All right, let’s see how Grock 4.7 is doing on task two. We’ve set the instance to the state that it was from task one. Let’s run it. Oh,
[19:27] this is getting interesting. Okay. And yep, it found the tools and the stuff and it’s off. [music] All right, Grock just finished task two. It took a long time. It’s almost 20 minutes. Let’s see if it did a good job. Let’s check out the news article agent. And okay, so so far Grock’s pretty terrible at putting sticky notes in and sizing them, but again, that’s not really that critical. Okay, we got a chat trigger. It’s got the things pre-filled. That’s nice UX. Cool. This
[20:01] trigger, we’ve just got the question to ask for subworkflows for the API. And then a set node to normalize those like the other ones. An AI agent without some BS in front of it. That’s nice. chat model, chat memory with the basically normalized session ID that would come from either one of these branches and the tools. Okay, get latest. It’s hasn’t set a tool description, but the title is get latest news articles, so I think that’s sufficient. And it’s got limit. Okay, must match any condition. Yep, found. And then search news articles. A
[20:33] more complicated tool. No tool description there. I don’t think necessarily needs in this case. I would have liked to see that, but must match any condition. Case insensitive short phrase to find. Okay. I would have liked to see short phrase or word, but this is pretty good there. Mhm. And then the agent itself. Let’s see the system message. You answer questions about recent news headlines. This looks decent. It’s maybe not as nice as Opus is, but all right, that’s the agent. I say right now it’s passing. It looks very much like the um what we expected there. And yeah, it’s working. It’s running. Gorgeous. All right. So, the API that consumes the agent. I’m going
[21:06] to move this cuz that’s going to be poorly placed. Yep, I was right. And then it’s doing a get and a post. Get all post. Let’s see. Normalize the count. Yeah. Okay. So, if there is a count, do that. Otherwise, set it to 10. Call the newest agent with success and error. That’s cool. And then what’s happening here? Um, if it’s success, okay, it’s building the response before it goes in there. Uh-huh. And then sending it and otherwise responding with error with a response code. Yep. Okay. Grock did its job. Don’t love this here, but this is working. The get would work. So, it completed the task. How did it do
[21:38] though? Okay. First place so far. So, I completed the task. It took the longest so far, though, by quite a bit. And it’s $4.85. I’m really curious how these open- source models are going to perform on this. So, let’s go check that out. Okay, let’s see how GLM is stacking up against our proprietary models in task two. I got it prepped in here. We’re in max mode, and the instance is in the same state as it was for task one. Let’s run it pretty quick already. Been a fast one so far. Let’s see how it does.
[22:14] All right, GLM’s done. But was it any good? Let’s open up the agent. Okay, sticky notes. We’re going to stop commenting on how these models do sticky notes. Get better models. Okay, chat trigger. Yeah, this kind of stuff populated sub workflow. What parameters? Good. That works. We’re normalizing. Yep. Yep. Yep. And then we have the news agent. Okay, we have only one tool, the news articles tool. We do have chat memory correctly piping the session key depending on which one it would come from. But this one would never have a session key which means it would be blank which means if there is no key
[22:48] let’s see let’s see in this workflow it’s not going to set a key which means in here we would ah ah ah nice otherwise execution ID that’s really smart from GM. So what’s happening basically the chat trigger provides a session ID. So if a session ID exists by the time we get to this node, we choose a session ID. If there isn’t a session ID cuz we’re using the sub workflow, it will use the execution ID of the current workflow which always exists. You stunt me glam, but that is elegant. Okay, use article tool. Let’s have a look in here. And then must match any condition and return all the Okay, I mean this
[23:24] workflow is supposed to run every hour. So there will be thousands of articles in the database and so this will break it. Why would you think that’s a good idea? I’m so disappointed. GLM, you may disagree with me, but this is a shoddy tool. And if you looked at this, that’s the thing. If you’re not knowing what you’re doing in edit, this problem is only going to surface itself after days or weeks where it really builds up and then it starts breaking. So that’s the kind of problem I really don’t like when these AIs do because you’re going to latently figure that out maybe in production. So for me, GLM, we’ll check
[23:54] out the API, but but I’m sorry, you’re out. We have an API. Normalize it. Calls the agent. There’s no error response either. Ah, GM, I had high hopes for you. Let’s look at the numbers, though. But it did not complete the task. So, it did it in ah $18. It would have been our cheapest model so far on this task as well. Um, it did it quickly though. So, it did a bad job quickly, but we’re going to keep going. So you might disagree with me, but I want to set a relatively high bar for its understanding of your intent with an imperfect prompt. Cuz that’s the whole point. If you have to like perfectly tell these things what to do, then you’re serving it. These are tools that
[24:27] are supposed to help you. And I think for a lot of NN users on a complex workflow, that could be dangerous to use that unless you really know what you’re doing. So I’d use GLM with caution at this point. So after an unfortunate performance from GLM being disqualified, it’s on Kimmy K3 and Quen 3.8 Max from the open source camp. So, let’s see how Kimmy does on this second task. I’ve got it loaded in. Same state as from task one and max mode. Let’s run this and let’s see if Kimmy’s the cheapest model so far.
[24:58] Okay, Kimmy was lightning fast, but let’s see if that translates to an actually good workflow. So, agent. Okay, we’re not normalizing data here, but let’s see. Let’s see. Maybe maybe it did something inside the workbook cuz we had we had one of these models tricking me for a bit and then it was very elegant. Okay, but the chat trigger set up execute workflow trigger. What do we have? We had the query. Okay, and the session ID. It’s got a pretty simple thing there. Okay, let’s check inside the news agent. Okay, nice. So, this is
[25:28] why it doesn’t have to normalize right now the input because this is the prompt coming from earlier in the workflow. So, chat input is where that value would be in the chat trigger here and doquery is the one that it’s set here. So that’s pretty elegant. Okay, let’s check conversation memory. It asks for session ID. This is automatic. And from the connected chat trigger node. So basically, okay, interesting thing is so the chat trigger will furnish this. Um, but then the execute workflow trigger, they set it to the same name. So it would also technically work even though this isn’t necessarily set the way a
[26:02] human might do it, but it works. But it’s only got one tool. See what this does. Row get must match any condition. Ah, return all. H I mean, what? We we failed GLM for that reason, right? Because again, this would explode. So, I feel like it’s not fair to not fail Kimmy just for posterity. Let’s check the API. Ah, didn’t have an error response either. All right, Kimmy, let’s see how you did in terms of cost and that kind of thing. Kimmy got $1.76. So, yeah, also cheap, but not as cheap as GLM. A lot faster, though. But pretty subpar performance, especially if you were someone that doesn’t know what
[26:35] you’re doing. I mean, it doesn’t mean that it didn’t put together some notes, but it’s in that nuance where these models are actually helpful because then otherwise if you’re just like fixing broken workflows and have to know everything about those workflows, then it’s not really that helpful. So, unfortunately, Kimmy, you’re out. And I hope for a cheap open-source model that’s not going to be five bucks, basically runs with Quen 3.8 Max. Let’s see how that does. Wow, this is getting crazy. Time for the last model of our last task, Quen 3.8 Max. It could take home gold or it could get disqualified
[27:06] and we would have zero opensource models in our list. It’s going to open code. Let’s run that. And you’ll obviously get a nice fancy time lapse and see this in about 5 seconds. I will have to wait a bit longer, but let’s see. I’m kind of stressed. It’s kind of a big deal. Let’s open up the AI agent and let’s hope it’s not doing some ridiculous stuff cuz I’d love for one open source model to not get disqualified. Okay. get news articles and ah it’s getting all getting all the articles and we said that would be a
[27:39] reason to disqualify it. These guys did everything else. So wow. I mean let’s let’s go check out the the API here. Uh it’s got a get and a post wired to there for the same thing. No error response. Quen did it in $2.19 but unfortunately got disqualified which means that only Grock and Opus remain technically based on on the rules that I set for this challenge. Yeah, let’s have a look overall what we got here. We got Grock in number one for
[28:10] a total of $7.36 and about half an hour to build those two workflows. Opus $8.68 took about 32 minutes. tokens. I guess again doesn’t really matter cuz tokens aren’t one for one. And then looking at some of the ones that were disqualified, which again I was pretty stringent in what should be in and should be out. I could have loosened that up. Maybe this would be a more fun video. But again, I wanted to be kind of brutal there because if you’re going to use a model that costs dollars to do something for you, I want you to know if you have to be an expert at the thing that you’re working on to use that because if you
[28:40] have no idea what you’re doing and use a more expensive model, probably seven bucks is like an amazing deal for you because like an engineer would be like way way way more. But if you do know what you’re doing and you see a cost difference where you can maybe do it for $1.76 and you know you’re just going to have to like tell it what to do a bit more, that could be really useful for you. So the cheapest model so far was GLM 5.3, but Srock seems to be the best right now. And then I think from the open- source models in terms of cost, GLM’s the best, but in terms of output, they were all kind of pretty similar. They all kind of got the same things a little bit off there. So with all that in mind, Grock’s our winner. Rock’s the best model to use. If you don’t know
[29:13] what you’re doing and you want it to do it automatically and had all complex stuff, if you’re willing to do a bit of work, you can go with Quen. Well, at that point, Kimmy probably, right, cuz Kimmyy’s was pretty fast there and and relative around the same price. In any case, if you want to see more comparison videos like this, NN actually invited me on their channel to give this video. So, big shout out to the Naden team for letting me do that. Uh, this was a ton of fun. I’m a little devastated, to be honest with the open source models. But if you want a follow-up to this, maybe we drill down open source models, let me know. Drop a comment. It’ll let the NEND end team know that you want me back here
[29:44] um again. So, thanks for having me. I hope you learned something from this. This was a saga for me. And as always, happy flow programming.