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的性能。安全性方面也需要评估。

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

相关推荐
商汤万象开发者4 分钟前
懒懒笔记 | 课代表带你梳理【RAG课程 19:基于知识图谱的RAG】
llm
星星电灯猴7 分钟前
iOS 性能调试全流程:从 Demo 到产品化的小团队实战经验
后端
程序无bug16 分钟前
手写Spring框架
java·后端
JohnYan18 分钟前
模板+数据的文档生成技术方案设计和实现
javascript·后端·架构
全干engineer30 分钟前
Spring Boot 实现主表+明细表 Excel 导出(EasyPOI 实战)
java·spring boot·后端·excel·easypoi·excel导出
Da_秀33 分钟前
软件工程中耦合度
开发语言·后端·架构·软件工程
蓝易云1 小时前
Qt框架中connect()方法的ConnectionType参数使用说明 点击改变文章字体大小
linux·前端·后端
a_Dragon11 小时前
Spring Boot多环境开发-Profiles
java·spring boot·后端·intellij-idea
用户8324951417321 小时前
Maven 项目打包:实现业务代码与第三方依赖分离
后端
发仔1231 小时前
解析实时推荐系统的数据流向
后端