n8n搭建多阶段交互式工作流

n8n是一个工作流平台,因为深度支持对LLM的调用,可以用来快速构建基于LLM调用的逻辑,比如接收图片,调用LLM识别对应产品的品牌,生成推广文章并入库,最后推送邮箱。

但是,现实的需求是要多次调用LLM来构建完整的结果,而且有时候要求过程中用户能够介入,支持用户调整每一次LLM的输出结果,直到完成最终的构建。这种交互性的特点,似乎对工作流而言很有难度。

比如

我要模拟面试。首先设定一个主题,第一次调用LLM生成一份问答习题,返回来给我填写,我填写完成后提交,调用LLM评分,然后返回新的问卷继续作答。达到轮次之后,最后一次调用LLM返回评价与结果。

这个似乎不太容易用工作流实现。

前置知识

简单介绍一下n8n与我对工作流的思考(可以跳过)。文档:docs.n8n.io/

n8n作为一个工作流平台,方便模块化的流程管理,衔接了各端出口------数据库、google sheet、邮件、社群等等,还可以十分便捷地与LLM通讯,所以n8n成为了开源的工作流设计的首选。

  • 入口,也就是工作流启动的触发器,支持定时触发、事件触发、表单提交触发、微信消息触发、网络请求触发。

  • n8n的特点就是模块化,可以搭积木式构建一次逻辑处理------不管是请求调用还是数据保存。

    在逻辑处理中,可以控制分支、多数据容器、数据转化等等。核心就是将一批相同的行为封装为基础模块来支持复用,实现像拼乐高一样构建逻辑。

  • 子工作流。支持将固定的工作流封装形成子工作流,然后在另外一个工作流中调用。实现乐高拼接为单位,然后再组合其他流程。

  • AI支持。AI基本沿用了langChain的思想,就是以LLM调用为核心来构建程序。

  • 出口就比较简单,只是对接了各端,传输数据过去。比如传到email、google sheet、file等等。

是否需要工作流

  • 为什么需要工作流?

    实操一遍n8n工作流之后,发现工作流能做的东西,其实手动编码也可以很快实现。比如构造页面收集表单并通过LLM调用后响应回界面,这个过程用代码写起来也很快,定制化程度更高,而且相比使用工作流,速度还更快了。

    所以有必要使用工作流吗?有。因为工作流可以提效,将逻辑封装为基本的组件,以拼乐高的方式使用,以工作流的概念将重复操作归纳整理。只要能够提效,就有存在的意义。

  • 证明了存在有必要性之后,需要分割得到在某一个参考系下的特性 比如在用户使用这个层面,使用工作流与硬编码存在什么样的高低特点。

    目前来说,硬编码更加强大但是具有门槛,而工作流搭建则比较容易使用,利用有限的积木可以组合形成完整的服务。因为LLM的兴起与n8n对LLM调用的良好支持,可以十分快捷地搭建企业内部或者个人的服务,用于服务验证与设计。(工作流搭积木可以很方便让产品经理得到心中原型的demo,解决需求在心中而不在口中的局面)

    所以,易用性 + LLM深度支持 可以让工作流快速实现AI应用的Demo。

可多阶段交互的工作流

首先看到触发器中,有通过表单提交触发的组件:

可以设置表单组件,用户通过n8n的特定url进入这个表单,填写内容并提交来触发工作流。但是此时只有两个结果:要么表单异步提交,要么表单同步提交直到工作流结束。两种结果都没有办法接收到工作流的某一个过程中的反馈。

但是,存在另外一个触发器:on webhook call , 网络请求到达时,触发工作流。如果以网络请求为入口,启动工作流,然后响应html,就可以在界面上显示了。并且,在响应的html中,还可以通过按钮触发请求发送,重新回到工作流中。

过程

rust 复制代码
搭建工作流A:
(on webhook call A)入口收到web请求  --> 请求body整理 --> LLM调用 -
-> 调用结果拼接或者动态生成 html --> html响应web请求

搭建工作流B:
(on webhook call B)入口收到工作A的html中发送的请求  --> 请求body整理 --> LLM调用 -
-> 调用结果拼接或者动态生成 html --> html响应web请求
  • 首先写一个简单的html,构造一个表单接收用户原始需求 eg:

    html 复制代码
    <!DOCTYPE html>
    <html lang="en">
    
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>需求内容</title>
    </head>
    
    <body>
        <h1>请输入</h1>
        <form action="https://n8n-webhook(xxx->A)" method="POST">
            <label for="title">初始内容</label>
            <input type="text" id="title" name="title" required><br><br>
            <button type="submit">提交</button>
        </form>
    </body>
    
    </html>
  • 用户用浏览器打开这个页面,填写并提交表单,触发工作流A

  • 工作流A得到结果后,按照规则构建html,响应客户。客户在页面收到一个新的表单B(里面包含了LLM的结果,并且有多余的入框可以填写新内容)

  • 客户填写表单B并提交,触发工作流B,执行新的LLM调用,又响应新的表单与内容。

  • 循环直到流程结束。

  • 多段构建得到了最终的结果。

这样就可以完成多阶段交互的工作流,借助浏览器与网络请求,不断更新数据状态与触发工作流,得到最终对结果。以上只是MVP版本的demo,用于展示。

实际使用时,需要可以在入口设置多分支的逻辑,控制需求识别与prompt调整;通过动态html模板生成复杂的页面------甚至让LLM动态生成html模板完成动态表单;通过工作流逻辑循环来减少工作流数量等等。完成多阶段交互式工作流。

总结

工作流目前作为提效工具,可以快速构建LLM服务。利用webhook触发器结合html组件可以构建交互式的工作流,多阶段调用LLM。

但是,目前n8n搭建的工作流只适合企业内部调用或者个人小需求,to C方面,性能估计满足不了要求。需要使用hack的方式或者多种专业方式来提高n8n的性能。安全性方面也需要评估。

不过,足够用来帮助产品经理快速验证需求合理性了。

相关推荐
0wioiw05 分钟前
Python基础(Flask①)
后端·python·flask
智泊AI30 分钟前
5分钟带你搞懂AI大模型Agent(智能体)
llm
风象南33 分钟前
SpringBoot 自研运行时 SQL 调用树,3 分钟定位慢 SQL!
spring boot·后端
大模型教程34 分钟前
从零搭建 RAG 知识库:3 步搞定,小白也能学会
程序员·llm·agent
Jenny37 分钟前
第九篇:卷积神经网络(CNN)与图像处理
后端·面试
大志说编程39 分钟前
LangChain框架入门16:智能客服系统RAG应用实战
后端·langchain·aigc
用户849137175471639 分钟前
joyagent智能体学习(第2期)智能体核心设计模式
llm·agent
沸腾_罗强1 小时前
Redis内存爆了
后端
天天摸鱼的java工程师1 小时前
Snowflake 雪花算法优缺点(Java老司机实战总结)
java·后端·面试
聚客AI1 小时前
✅响应时间从8秒到3秒:AI知识库性能优化避坑指南
人工智能·llm·agent