Transcription
你是否觉得AI工作流复杂难懂,花费数小时仍无法掌握?想要客制化提示词,却怎么都无法让AI运作?工作流的token怎么每次都消耗巨大?为什么我的AI就是上不了网?别担心,这支影片将带你深入浅出地了解n8n,让你轻松打造个人AI助手。
这里是HC,让我们一起让AI说人话!你现在收看的是我们n8n入门系列第一集,今天就让我们来讲讲初学者接触n8n必须学会的基础知识。首先,我将带领大家熟悉n8n的核心概念,协助大家建立第一套工作流,一起把大语言模型融入工作流当中,最后打造AI agent帮你自动做研究,让AI成为你生活中的得力助手。如果影片中的内容对你有所帮助,别忘了按赞并订阅我的频道!那就让我们赶紧开始吧!
如果你是第一次接触n8n的话,我们这边简短地介绍一下n8n是什么。一句话总结n8n:n8n是一个开源、低程式代码开发自动化的一个平台。那怎么开发自动化呢?它是用工作流的方式去做一个开发,这样工作流可以提高我们的效率,节省时间跟成本,改进我们的资料处理,因为它可以很简单地去串联各个不同地方的资料,这样可以提升我们的客户体验:一、我们可以快速回应客户;二、我们可以更高的客制化。n8n是一个开源,所以它可扩充性非常高,比其他平台可扩性更高。下面是一个其他的n8n的例子,像我们这次会做到,就是像客户在网站上填,网站上填写表达,我们自动发送客制化的信件给他们,我不是只是一个制式的信件,而是客制化的信件,然后将他们资料加入资料库里面。
为什么要学n8n呢?首先最重要就是非专业的开发人员,现在也能建立AI的自动化流。你不需要会写程式,当然会写程式的话,你会有更大的优势,但是你不需要会写程式,你也可以为自己开发自动化。你就想象你凭空多出好几只手,这样的感觉,跟多好几只脚也可以!它有现成1000多种,而且极高速的正在增加内建的整合组件。你想得到的常用的应用程式,它都有做内建;你想不到的,它有API跟Webhooks,还有自订程式码可以进行扩充。现在学n8n,一、它成本低;二、它无限的可能;而且它你可以第一线的结束到AI的自动化。那它有没有其他的平台跟它做一样是有?比较有名的像Zapier跟Make.com。我相信很多看到这支影片的人,你大概都有看到,看过其他,尤其是Make.com的这样的影片。首先,Zapier它的成本很高,但是它的连接器就是,它里面的Node种类很多,这是它算满成熟的平台;Make.com也是很成熟的平台,但我相信有用的人都知道,这1000个任务,就算个人使用可能都不够,但是如果个人使用1万个任务9块钱美金一个月,如果你不常用的话,你会觉得好像有点浪费,它的定价策略是有这样的一个缺点。我们来到我们的这次n8n,一、如果你部署在云端的服务上面,有5块钱到6块钱,或是背地应该是5块钱,5块钱,所以它的成本是很低,甚至你就可以架在自己的电脑里面。它现在有1000多种连接器,那还有很多客制化的连接器,因为它是开源的。它这里的难易度,n8n是四颗星,确实,n8n在之前,它的资料是比较少的,但我相信你看完这支影片,你的n8n任督二脉就会直接被打通!这支影片就是为了把这个难易度降到1颗星、2颗星,才为大家出这样的一个影片,所以希望你们想学n8n,可以把这支影片认真地看完。
n8n要从哪里开始?我们先介绍一下n8n的基础:第一、架设。你要想你要架设在哪里,你可以自行架设或是利用云端的服务。这边的自行架设也包含你自己用云端服务去架设,它的可控自信跟弹性是比较高的;资料的拥有权,如果你在架设在本地端,当然你的资料拥有权就在你自己身上,你不会担心你的资料在云端上面,有可能会被云端供应商拿去做任何的资料训练等等的。相较,它成本也比较低,可是你就要懂怎么安装跟维护,但是它客制化也比较高。云端的像n8n自己的平台,就有提供n8n的服务,我下面的连结也是他们授权的连结,你可以去做使用,可以帮助我继续做更多的影片;云端也包含了其他第三方的云端,他们也有提供一键安装,像我的前一支影片Railway可以做一介的安装,所以它易用性非常高,你只要一介安装完以后,你只要登入帐号密码,你就可以做使用,你不用担心可靠性跟可用性的问题,你就是付钱请他们去做这样的一个维护。像你在加在自己的本地端,你可能电脑当机或什么的,这个是有可能会碰到的;安全性,网路安全性,在云端上面基本上没什么问题;成本就是你要每个月会付出这样的一个成本;资料就是你要可以接受资料放在云端上面。我是蛮希望这一支影片出来的时候,我的Mac跟Windows如何架设本地端的影片,因为很多人碰到应该就是你加在本地端,但是你的n8n上不了网,这个大概是很多人碰到的问题,或是你上网了,然后他一直爆说有网路安全问题,那我接下来要跟大家介绍的安装方式是没有这样的问题的,然后就是完整的去供大家做这样的一个选择。你如何选择呢?第一,如果你要完全控制自己的资料跟基础架构,那你要选择自己架设;二,你希望n8n可以深入到你的电脑的其他的内部系统当中,意思就是你如果n8n,他可以控制你,就是这种自动化的流程,他可以控制内部,你电脑内部的其他的东西,可以,但是你要架在自己的本地端,那你想要自行处理服务器的这些事情,那你可以架在本地端;云端呢,就是一般大众如果你不想去搞这些东西,你可以用云端,那你就是付出可能每个月多一点的成本,那可控性跟可靠性你就不用去担心,那当然还有,如果是有机密文件或什么的话,那当然自行架设应该是你的首选。
我们简单介绍一下核心概念:n8n核心概念的工作流节点跟工作流执行,我们可以做一个比喻,工作流就像菜谱,每个节点就像菜谱里面的步骤跟成分,执行就像订单来的时候,执行菜谱这个事实。那更大的一个范围呢,有点像说我们要做一桌菜,我们可以很多菜谱,那每个菜谱里面可能有同样的步骤,可能有同样的成分,那当我们接到订单,然后要把这一桌菜做出来,这个就是执行这件事情,然后大家就可以想象把它想成在做菜这样。n8n里面大概基本上就是四种节点:一、触发型节点;二、命令执行节点;三、资料传输节点;四、逻辑节点。触发型节点就是我们要如何,什么样的情况下,去触发执行我们的工作流,这叫做触发节点的最大的用处;命令执行节点呢,就是我们接到任务以后,那些帮我们执行命令,不管是AI agent、大语言模型、任何去执行我们命令、跑这个程式的,叫做命令执行节点;资料传输节点呢,如果提取资料、更改资料、汇总等等的,我们去处理资料的这种节点,叫做资料型节点;然后再来是逻辑节点,如果像if true,如果是真,如果是真,这二项是嘛,一个是如果真往上走,如果是假往下走,或是switch,你可以有可能一百种不同的情境,然后同一个工作流里面,你可以这样去接,但我相信应该不会有人这样做,但他可以这样做,ok,这样这叫做逻辑节点。好,那我们讲完简单介绍以后,我们直接进入介面来体验n8n。
那如果你有看我之前的影片,你应该就已经部署好你的n8n,进到n8n里面,你会先进到登入画面跟setting画面,然后你会进到一些勾选选项,那这个应该在上部影片里面有介绍到。我觉得我们进到n8n里面了,那如果你没有,你还没有设定好那个寄信像我这样,还没有设定好的话,你可以这样unlock,然后请他把这个信寄过来;你如果有license还没有,还没有去验证,你就去验证一下,因为他会,你有验证的话,你会开启有三个,三个还蛮重要的功能。放大一下,你可以看到我们在24小时里面的这个工作流的这些记录,我们工作流里面如果有出错的话,可以显现你在哪里出错;还有如果每次的这个执行的工作流执行,你可以去做一个搜寻,去看你之前执行的状况。这三个都是蛮重要的功能,没有验证的话就没有这样的功能,所以可以验证一下,它是一个,验证完就是free,它是免费的执着你要验证,然后它才给你这个选项。在我们的进来的这个记录程式,我们可以看到的是这里我们有三个,主要就是三个不同的视窗:workflow就是我们到时候,你会有不同的工作流,就是会在这边;我们的credentials就是如果你有像认证Google,你的Google帐户等等的,它的一些认证码或什么会存在这边;这里execution就是到时候有了工作的以后,你的工作流执行的这个记录会在这边;这边的template就是进去以后这里,进来以后这里就是我们的template,就是n8n它的官网的一个工作流的分享的地方。那我们先,我们既然我们都来了,我们直接就简单的介绍一下如何去使用别人已经建构好的工作流。我看一下,这个像这里有个AI agent chat嘛,代表说它是可以跟AI agent去做一个简单的沟通的,那我们看一下,进来以后我们点选explore,它就会把这个AI agent的使用方式,它说工作流就贴在这边,通常这些workflow都是free的,所以在这边,它下面应该都会有一些纪录,它跟你讲说怎么使用这些workflow。那既然是free的话,它这里会给你几个选项,有连到template这个地方的一些部署,像我就不同的部署,那我们也可以就直接copy template to clipboard,就copy这个JSON file,JSON我们在技巧里面会去做讲解。像这里呢,我们就示范两种,这里render我们直接点选render,它就会直接复制到我的render的后台里面去,这里就是我刚刚说的credential。好,那我们这样就复制好啰,就是我们设定一下我们的认证,这个Open AI的认证,或是你要用其他的AI认证,你就可以直接使用这个工作流。那我们再示范另外一种工作流的复制方式,同一个工作流呢,我们可以直接复制JSON,我们回到我们的页面去做一个复制贴上,我们工作流就会进来了,所以有两种不同的这个工作的复制方式。我们这里按储存,再回到我们的menu,我们就可以看到这个工作流进到了这个,进到我们工作流的选单里面去了。工作流介绍完呢,我们来介绍一下下面这边的有用的选项:第一个是n8n的Documentation,我们进到这边呢,它有关于n8n所有的节点,或是它的你怎么去载啊,或是融入到哪些服务啊,你都可以在这边去做一个部署,那我们会,我们之后的影片呢,会慢慢的做一些比较关键的介绍;这边呢,还有一个是Forum,就是我们的n8n的官方的Community,它的一个社群,在这边如果你有相关的问题呢,建议大家就是把你的工作流复制成一个图片,然后在这边,把你的工作的复制好以后,贴到这边来,然后简单的介绍一下你发生了什么事情,下面就会有人帮你做回应,对。那我们n8n介面的简单介绍就介绍到这边,那我们接下来呢,要进入的是n8n的小技巧,然后我们就会用这20个小技巧去做我们的一个工作流出来。那第一个呢,我们要新增一个工作流,一个新增工作流就会进到这个工作流的这个工作画面。好,我们第一个小技巧呢,就是要确实地命名我们的n8n的工作流,这样,这小技巧虽然看起来很普通,但是它会节省你之后非常多在搜寻你工作流或整理你工作流的时间,因为毕竟我们的工作就是一直重复的用,或是不同的工作流都在一起这样用,所以确实的命名也工作的非常的重要。我们这个工作流呢,就是从Google Sheet去整理,或是去分析我们Google Sheet里面的,一些任务资料,然后这里有一个Tag,我们这里可以像是OK n8n Course,我们在这边你可以Add Course,我们是n8n,你可以Add Add这个一个标签,几个标签都可以,那我们的用意呢,就是回到这里,你就可以看到你的工作流名称,那它的右下角这边会有一个小标签,然后它的那个创建日期,这小标签,你就可以在这边做一个搜寻,搜寻,所以我刚刚英文删掉了,所以就没有,那我们可以用中文就可以搜寻到你的工作流,这样我们就可以很好去管控我们哪一个工作在哪一个任务什么需要,或哪一个这个专案项目去用。那第二点呢,我们来介绍一下这个工作区的一些应用方式。首先,我们这里可以看到两个不同的视窗,第一个就是我们的编辑视窗,第二个的Execution这边呢,可以看到我们这个工作流单一,就我们在Menu那边,可以看到所有工作流的执行状况,那我们到了单一工作流里面,也可以看到它这个工作流之前的执行状况,然后它会有所记录,在这边可以用按这个加号,这些就是我们的节点,或是你可以按你键盘上的Tab才会跑出来,OK。那我们这边呢,按了这个触发,触发用的这个节点以后呢,这里会有一个Save,我们可以按Save,或是你按Ctrl S或Command S,Mac的话是Command S,你也可以直接Save。那我们这边也可以设定,我们这边到这里面呢,它可以,你可以单一工作流的一些存取时间,但是它呢,我们的那个Community版,它的存取时间就是一天之内可以存取,所以如果你有特定版本的工作流要做存取的话,记得手动让它下载到你的电脑里面去。到这边呢,我们可以看到有没有,这里我们可以我介绍一下,我点了这三个点以后,进来这边会有几个Settings,这些其实,第一个就建议你就点这个建议就好;第二个呢,以后如果你有需要的话,蛮重要的就是假设我们的工作流出现了状况之后,它会执行某一个工作,你可能可能可以设定一个工作流说我的M8里面有哪一个项目很重要哦,然后它出错了,然后去寄信给我等等,你可以在这边选择出现Error,那你把这个Error寄信给我,或是怎么通知我这样。这里有几个存取,存取的选项,我们就维持它原本的选项就可以了。我们设定完以后,我们来介绍一下触发点,我们永远都需要一个触发的节点来触发我们的工作流。第一个就是我们的手动触发节点,那任何一个接在后面的这个执行节点都会变成是我们第一个执行的任务,然后这个触发节点呢,不管我们按这个Test workFlow,它就会触发下面这个后面这个第一个节点,然后那第二个呢,是不同的这个触发节点哦,就是不同程式的触发节点,这里有Google Drive、Google Sheets,像我们Google Sheets的话,你看,如果没有任何一个这个这个的意思就是如果没有任何的这个新的行列,它就会触发这个节点;那这里呢,可以设定每分钟叫一次,每小时叫一次,每天每周或是每个月好去叫一次;那同样的这里要做你的这个Google认证,后面会讲到;那第二个呢,就是时间节点,那这个就是设定你的这个循环的时间,然后去触发这个工作流;第三个呢,webhook就是如果你要从其他的有webhook服务的这个那程式呢,去呼叫,或是去呼叫这个HTTP的这个request,那这个我们后面会讲到,然后你可以去从那边呼叫资料,或是你可以去传输资料,通常这里是节点,所以这应该是呼叫资料,这个这个的这个用法呢,其实比较像是说我今天如果Google Sheets没有内建的这个节点啊,去呼叫,那我可以说,我可以Google Sheets那边可以说,如果我更新了,那我就传资料到这个,到这个工作流来,所以是Google Sheets那边去做一个运算,然后去主动传输资料到,传输资料到这个webhook,那webhook被触发了,他就会去触发这个工作流;那这个很好用,如果你的工作流是放在云端上面,然后你每支行一次都有成本的话,而吃到饱就没关系,但如果你每是那种每支行一次都要付出成本的话,那你可以把成本转交到Google Sheets那边,由Google Sheets那边做运算,然后等到真的有触发了才执行这个工作流;第三个是on form,那n8n里面呢,他提供了一个表单的填写的触发,如果有人填写的这个表单呢,这边他会显示你的表单,这边他会出现这个表单,那填写完了呢,他就会触发这个节点,那这边就会触发节点,他资料就会传进来,所以这个也是一个快速的使用表单的一个方式;那我们通常会建议用像Google表单啊,或其他的表单,他有关联的服务的节点,那我们可以把它串连进来;第三个呢,第三个就是我们所说的由别的工作流来呼叫我们的这个工作流的这样一个节点;onchat,onchat就onchat其实就很很明显吧,他就是你可以跟他对话,然后当你有对话的时候,哦这里当你可以,当你下面这里有对话的时候,那你触发这个节点;那最后还有其他很多不同的节点,像我们刚刚说的,如果你要air啊的话,可以有这个air啊 trigger啊等等,然后他就会去呼叫;再来是我们的执行节点,n8n呢,里面已经有内含很多程式相关的执行节点,像Google Sheets,我们常用Google Sheets啊,那email啊,如果你有自己的公司的email啊,webhook,um air table啊,啊 github啊,等等哦,这边有很多,像我们常用notion啊等等的,他都已经预设好那一,预设好相关的这些节点,所以也是,是很强大的一个,基本上你,基本上我们一般商业上或是个人上要用的功能基本上都有。那我们回到n8n的介面,这边呢,我们有了这个做法点之后呢,我们可以看到接下来这些就是有不同的执行节点,ai节点的话,可以呼叫你的ai去叫其他执行命令;那第二个就是不同程式的这些节点,进去呢,就可以看到我们刚刚的不同节点;那举例,刚刚Google Sheets是触发节点嘛,那这边呢,那这边的选项就不要,然后这边是,哦去执行说我去新增一个表单啊,或是哦去清除这个表单啊,或我新增一个行列等等的,这些在这个节点里面都是可以做到的,哦;上面这两是我们的那个执行节点,那下面这边是我们的资料传输节点,那这边呢,像我们可以用,如果你会写程式,我们可以用程式来去过滤你的资料时间,像email里面呢,我们几天前的email啊,或是几天前的email啊,就可以去过滤;那我们常用的set,就是我们可以新增,新增资料,或是去做资料的一些处理等等,在这边,我们merge啊,我们有讲到的等等,全部都在这边;那,那接下来是flow,接下来是我们的逻辑节点,像if啊,如果loop啊,merge啊,像if就是我们如果,如果成立,我们就往上走啊,如果不成立,我们就往下走啊,或是直接飞了嘛;那loop的话就会是,哦我们可以去循环,哦去一个去循环我们的这个触发以后,我们去循环,直到我们满意的内容出来,维持这样的一个loop;那core核心节点呢,就是上面这些的,我们常用的节点,它会放在core这里面,然后我们也可以加入一些,这边我们可以加入一些我们人类的回馈啊,在这里面。那我们今天呢,要用google sheet来做一个资料汇整,对了我们要,我们用了这个google sheet的节点,那我们要去认证这个google,我们应该说我们要登入我们的google,他跟一般我们要登入的google帐号是不一样的,所以在进到这边的这个,我们要输入我们的client id,client跟secret。那首先我们要先把这个,这个这一串点下去它就复制完成了,就我们到google cloud,你可以搜寻google cloud,到这边,哦进到我们google cloud以后,我们来到这个控制台,哦如果你没有建立专案的话,你在这边建立专案,会碰到的是我google会想要请你开启这专案的济费功能,那我们这边呢,可以直接按取消就可以,不用理这个,不用理这个东西,就可以到这个,这个页面来了。到这个页面以后呢,你可以点选两种方式进到apf,一个是点API这边,快速撷取这边进到API里面,或是点选资讯主页,然后点选这个前往API都可以,然后进入这个OAuth同意画面,我们要开始,这边点选开始要去去其中一个应用程式,那我们的应用程式我们就要n8n,然后我们的使用者呢,就点选我们的email,下一步,这里点选外部联络的联络方式呢,你就可以把你要接收这个资讯的email呢,把它填进去,点选用原本的email就可以了,可以按同一继续,奖励。这边建立完后,我们要建立一个OAuth用户端,这里呢,我们就点选网页程式,这边我们选择n8n,然后这边呢,我们刚刚不是有复制一串这个连结吗,url,我们就把它贴进来,按选择建立,那这样我们就完成我们google api的一个认证设定,我们把这个密码,那贴进来,好,这个帐号贴进来,然后密码贴进来,那这边呢,我还不能登入,我们回到我们的Google云端这边,我们在目标对象里面去新增我们的密码,好做完这个动作呢,我们还要再去把google sheet对API开启,这边我们点选启用,确定启用以后呢,我们就可以回到我们的n8n后台,点选登入,这边就会来到我们的登入画面,选择帐户,你刚刚都设定好了,应该这边会出现一个继续,如果没有的话,就代表说刚刚的步骤你有落下一个步骤,好,选择继续后我们选择全选,选择继续,这边呢,我们就会connection successful,那你就连接成功回到这边,然后会自动储存。好这边呢,如果你连接成功呢,在这边应该就,这边应该是可以看到一个list,好那不用担心,因为其实我们呢,没有,我们只有开启google sheet,这边呢是用document,所以我们要把google drive也一起开起来,好,那现在我们把这个google drive开起来以后呢,我们回到这边,这里呢,你,就应该就可以看到,我们就可以从document这边看到我们的google drive跟google sheet相关的档案,我们点选以后,他就会读取到google sheet里面的这些表单,那我们只有一个表在工作表一,他设定好了,然后这里我们按test,他就会把我们的google表单全部读取进来。好,我在这边贴上,呃左边呢,这是我们的google sheet设定google sheet有我们的人员名称,他的任务,还有我们的状态,那我们这边按test,他就会把这,一列一列的资料,变成一个JSON档案,JSON的这个显示形态,过来这边,JSON的显示形态过来这边,那每一列呢,他就会是一个JSON物件,我们输出这边,只有我们的触发节点,所以并没有任何档案进来,那这边一样有三种不同的资料显示方式,好那我们把档案输入进来以后,我们进到下一个节点,然后我们再解释这三个资料显示方式的不同。好那我们要去读取我们资料,或是去做更改,我们很常用的是这个set,edit,edit build,这个,这个,呃这个节点,我们说的是他是资料处理节点,那这边呢,我们可以看到输入的地方就有了这个三种不同的显示方式,那schema是schema会显示的是每个,一个简单的大纲,就是你的资料里面包含了哪些两位名称跟他的资料结构会在这边做显示,那他会是每一个,每一笔,呃你后面,前面每一个节点所输出的资料,他会慢慢的一个一个列在这边;那tables呢,就会,就会让我们很直觉的去读取我们的数据,然后就会像我们的Google Sheet呈现方式一样;JSON呢是我们会非常常用到,尤其是要做资料处理跟我们之后要做自动化的时候,你要从这边要学会读懂JSON,那其实很简单,我们现在来介绍一下怎么去读JSON这个资料。什么是JSON呢?JSON的全名叫做JobbyScript Object Notation,是分拔或是任何网路上的资料传输的一个交换格式,它具有轻量级,意读,好,意读性,所以在工作流,或我刚刚说的网路上,很常用的一个资料传输格式。那工作流节点之间呢,每一个地方都会产生一个JSON格式去表示它的工作流的这个输入跟输出值;那如果我们从网路上,或是任何其他节点,或外部收到资料,也都会是以JSON格式的方式去做一个显现;那从外部网路呢,我们收到的这些资料呢,通常也会以JSON的格式去做显现,所以JSON格式在我们做自动化目前呢是非常重要的一个资料格式,那我们要去读懂它,我们用n8n刚刚,我们实际的Google Sheet的案例来解释什么叫JSON物件。第一,JSON物件呢,以大括号,里面一个key,一个value,去做一个,它里面包含了一个键值对(key:value),用大括号包含了一个键值对(key:value),那为什么会有双,双,双引号去把这个值给框起来?因为电脑里面呢,我们通常键值对(key:value),像人物的名称啊,或是我们项目的名称啊,都是一个字句,就是电脑里面呢,要去读这个字句,我们要用双引号把它刮好起来,我记得这件事就可以,之后就会变成一个习惯,ok。那我们也可以用物件列表示,我们可以把很多的JSON物件变成一列,那它是以中括弧去做表示,然后以豆号去做拆分;那下面呢就是一个,我们一个键,对应一个物件,物件列,JSON物件列;那我们把红色的这个中括弧拆开,你就会看到呃括弧里面有JSON1,JSON2,那我们要加JSON3的时候,要记得在后面再加一个豆号,当然出错的时候,程式都会做一个提醒,就可以这样去做判断,那通常就是忘了加一个逗号。那我们回到我们的google sheet里面呢,就可以看到我们工作列表1会是一个大的JSON物件,那通常在n8n里面呢,它是不会把工作列表1这样的一个物件显现出来了,它会直接显示这个中括弧,中括弧还会把这个列表1拿掉,那这里面呢,我们就可以看到它是一个JSON物件,一个JSON物件的一个列表,JSON物件列表,好,我们物件列表里面包含了人物名称,他的任务,跟他的任务状况,那我们,那这边呢,我们可以看到第二个,呃第二个显示方式有数字,电脑里面数字呢,就不需要用(双引号),那这个后面我们会,我们遇到这个资料的呃格式的冲突的时候,我们会再做进一步的讲解;那回到n8n呢,我们可以看到JSON,像我刚刚说的绿色的,就是中括弧的JSON,20个JSON物件,因为我们有20个人嘛,我们的这个模拟里面有20个人,那每列每个人的名字,任务跟状态就是一个JSON物件,那JSON物件的这个键,通常都会是以呃,栏位名称去做表述,也就是我第二列有三个键值对(key:value),那每个键值对(key:value)呢,如果你有好几个键值对(key:value),后面也会以豆号的方式去做拆分,那这里就20个JSON物件,ok,所以可以记住,就是记住就是你不管是用microsoft excel,或是google sheet,或是任何其他的这个表,表列有栏有列的,哦他进入,他把转换到JSON的表示,表格式呢就会长这样。好,那我们有第二个显示方式就是table,他就是以很直白的这个table的方式,让我们可以很快的知道我们的资料是没有错,或是可以很快的去找资料,ok,我们看到schema,schema呢,在JSON里面他是一个说明书的概念,schema模式呢是一种资料结构的规范,他是这个格式类型或约束关系,其实我们只要,你只要记住说JSON有点像我们的包裹,他里面包含了各种各种的资料嘛,哦每个资料都有他的这个对应的名称,那schema比较像是一个,哦这个包裹里面的说明书,像左边这是我们的JSON列,然后右边呢,这是就是我们的schema,他会把这个每一个,在英文里面叫field,就是每个key的名称把它给显示出来,所以我们20个JSON物件,每一个他都有一个roll number,姓名,任务跟状态,哦这样你就可以很快的去撷取你要的这个key的名称,或是英文讲的field的名称。我们回到我们这里,那schema呢,我们就可以看到JSON,然后schema,所以他会有roll number,name,任务,那这里面呢,他就有20个,这里有写是20个item,也就是说每个item里面,他具有一项说明书嘛,每个item里面有这四个,这四项东西。好,那我们进入我们资料处理的一些示范跟技巧。好那我们现在开始介绍怎么处理我们的data,那我建议大家就是习惯去用JSON这个格式,去习惯去看他,因为JSON呢,可以很明确的知道你的这个资料里面有哪些东西,那如果你有大范围的资料搜索的话,我们再用schema table的话,基本上会非常的,就比较不会去用到这样,先做一个另外的示范,这边你可以看到我们有一个name,这边我们打说,这边我们打test,那这边我们打testing,我们按test,试用这个节点,那你可以看到,大家可以看到我们的这边呢有20个,一样是20个item,任何我们上一动的这个,我们Google系里面的资料呢,都没有传输过来,这边的field变成是我新增了这个test的一个,你可以把它当作一个栏位,test的一个key,然后这key对应的值叫testing,那n8n里面每个节点呢,它是以物件的数量去做运算的,所以这里有20个物件,那我们这个节点就会跑20次,它就会把,然后输出一个相对应的物件列,那如果我不想要有20个物件,我只想要,我只想要第一个,我只想试试看而已,然后我们到setting这边,让它只运行一次,execute once,只运行一次,再一次,它这次就快一点了,那它就只会出现一个物件,那因为我们前面是物件列吧,所以它这边也会物件列的方式去做呈现,那我们现在要把全部的这个资料传输过来,所以我们把那个一次性的这个关掉,那我们要如何将所有的这个上一次,我们的Google Sheet的资料传输过来,我们这边有一个include other input fields,就是你可以去包括所有的这些我们的件的内容,我们按下去,喔那这边呢,大家就可以看到说,我们可以看到这边呢,我们可以看到说,我们原本的物件内容,加上test跟testing,就进到这个新的物件里面,新的物件列里面,这个方式就是我们可以增加一个新的物件内容,用set这个节点,最大的这个用意呢,有点像是我们要筛选我们所要的物件内容,那我这边呢,我想要的是name跟任务,那我们接下来要介绍如何动态解取资料,因为我们通常收到API,或是任何你要解取的资料,它可能都是动态,就是会变动的,不像会,不像这样直接它是一个固定的资料,然后你可以直接做一个传输,我们通常会需要呼叫它的名字,然后它的数值会跟着变,像我们用这个自动化才有意义嘛,然后我们来,有两种方式呢可以做这个动态的呼叫,一种,直接,我们把这个关掉,我们直接拖移name,我们接下来这边呢,我们要输出的也是name,所以我们就不改它这个键的这个名称,那我们要件的这个值呢,我们也一样把它拖移过,好,那这边就可以看到我们JSON的一个物件表述的方式,它会直接转换成我们的expression模式,然后就会出现这一行,你拖移进来就会出现这一行,我们按test,换一下,它就会把相关这个物件呢,它就会把这个键值对,每一个JSON物件的键值对传输到我们的输出值这边来,那我们来解释一下这个中刮号,然后JSON.name是什么意思?第二种方式就是我们直接打,我们要假设我们要把name改成中文名称,ok,那我们这边呢,JSON的表述方式就记得是两个大刮号,它就会n8n就会跳出一个选单,好,那这边呢,我们双,双刮号完呢,我们就focus在第一个$.JSON,那我们要怎么呼叫这个值呢?$.JSON,那这边我们就可以看到我们的JSON每个上一个,上一个节点的这些物件呢,都会在这边,你可以去选,可以看这个,每个物件都会被呼叫进来,那我们要怎么叫name这个值呢?我们 just 点,然后点了以后,它就会把每一个键的名称放在这边,然后它这里有键是代表一个这个是字算,这个是数字,数字,我觉得我们刚刚有介绍到的JSON它的支援的格式,那我们要的是name,点进来,我们就是alice,那同样的这样,这边呢我们可以,这边还有一个小视窗,如果你JSON,你也知道它这边复杂的话,这边JSON可以打开,然后它这边你可以去浏览说你只进到的这个数值是哪一些,那或者是你可以直接在这边打,如果你的那个字算很多的话,ok,test,好,那这边呢,你可以看到我们的这个键名就改成名称,然后所有的名字就跑进来了,好,这就是两种不同的JSON的指定方式。好,这边补充一点,我去帮我们的google sheet改了一个键的名称,改了一个key的名称,这边我们把name改成了first name,那这个会造成一个问题,就是我们这个据点name这个格式呢是无法读到这个name的,那我们把它推过来,看看它格式会发生什么事情,ok,这个就是如果当我们的名称中有一个空格的时候,JSON的书写方式会变成是中括号中括号,然后中间一个string的表示方式,一个字,呃字串的表示方式,就是我们把空格呢一起包含到这个字串里面,ok,这是当我们名称里面有空格的时候是这样做一个表述,所以呢,我们尽量让我们的如果我们要做这个资料传输的时候啊,尽量不要让我们的键(Key)的名称以有空格的形式来输来书写,如果first name像这种,呃有,有空格的,我们就把它并在一起,或是用camel case,骆驼的那个,你用camel case,camel case就是camel case的意思就是第一个小写,哦后面一个大写,哦那中文的话呢,我们就尽量不要用有空格的表述方式,或是我们用under score(_)有一个底线,啊有一个底线去做表述,就是不要用空格。动态资料,动态节取资料2,动态节取资料2里面呢,我们一样是用这样的一个JSON书写方式,但是万一我们今天呢,要在中间再加一个,或是我们,我们一个工作流已经建立完成了,但我们中间想要再加一个节点,那会造成什么事情呢?我们跑跑看,然后我们原本的这个node,这边会造成说我们原本节点的书写方式是读取不到资料的,因为我们这边的资料已经变动过了,那$.JSON的这个呼叫的意思呢是,他去指,他指向的是前一个节点的这些JSON物件,所以他读不到,这样的一个书写方式是读不到前,在之前的这个JSON的啊物件的,ok,这边就带到我们每个节点的命名就非常重要,我们命名要把它命名成Google Sheet,确实的命名,这样我们再指定要哪一个node,哪一个节点的资料之后,可以很清楚的快速的找到我们要哪里的资料,这边有命名,我们这边先命名middle,中间节点,好,这边呢,我们,我们现在要的是这个name,name和task,我们要确实的命名name和task filter,好,我们有这个节点之后,怎么去读到之前我们Google Sheet这里,这个的节点,叫做这个节点这个的节点的方式的JSON物件的方式呢,有两种方法,第一种是我们到schema这边,我们直接拖曳这个first name这个key,这个键过来,好,那我们可以看到他的JSON的表述方式是不一样的,我们这里有一个$sign,我们这里有一个dollar sign,然后Google Sheet task data这个字串,然后小刮号,他里面的一个item,然后才点JSON物件,然后我们要first name,这样的,这样的一个表述方式呢,才能去指定我们之前的一个节点,不管任何节点都可以,之前的一个节点叫Google Sheet task data这个节点,这样的表述方式呢,就是说我可以去指定,那这个好处就是我今天,不管我这个name task filter他中间接了多少个节点,对,今天不管接了多少个节点,好,那这个好处呢,就是我今天不管多少接了多少个节点,我接了两个新节点,他这边呢,他都会去指定到我要Google Sheet task data the first name这个JSON物件内容,然后大家可以看到,我这里有名称,又改成名称嘛,Alice,这样的一个键值对,这样一个物件,然后有20个,所以他可以从后面都要指定到这边,所以但我们有很重要的资料要撷取,而且我们之后再
或Superbase这几个是目前有免费的功能,大家通常用Pinecone或Superbase比较多。那我们今天这里的示范,我们用Simple Vector这个,存在我们自己的这个电脑里面。
好,这边我们要去准备我们的document,就是我们要有一个data loader。我们刚刚说的话就是我们要把这一整串字做一个切片,然后这边我们全部default,然后主要是切片这边,我们需要一个recursive character text splitter,OK,它的意思它就是会按照这个、这个size去做切片切片切片切片,帮我们的答案切成一块一块一块。
那这边我们需要的模型不一样,我们需要的是一个embedding模型,对不对?跟大语言模型不一样。那我们这边我们会用Google的这个embedding模型。那这边的认证呢,好不太一样,我们需要去、我们需要再用Google的另外一项免费的服务,OK。那如果你看到看到这边呢,它Google这个这项服务如果不是免费的话,那你就用当时的一些免费的embedding model,或是你用付费的Open-Ai model都可以。
好,我们到了这个Google Studio这边,Google Studio它一进来呢,它就会有这个Get API key或是Try to Gemini,那我们用的是这个Get API key,OK。好,这个可以不用打go,OK。好,那我们这边就生成一个新的API key来给我们的档案做使用。我们这边copy到这边,OK,我们去做一个、做一个新的认证safe,然后这边我们就连上我们的Google的这个embedding的服务。
我们要选哪一个model?我们要选这个embedding-004这个,它可以支援到中文,就是说它的准度呢,可能没有Open-Ai那么高,目前测试下来的话。那Google之后会出新的这个model来做服务,但是目前这里面这几个model里面呢,它是最准度跟使用率应该是最高的。
好,我们直接test我们的workflow,它现在在download这个data,把data变成一个0101,这里就可以看到,它把我们的整个资料切成了14块,然后这里输出了19个item,OK。它可以说,这里原本是一篇文章,然后最后切成了不同、不同块。
这边跟大家修正一下,我们的Google资料在这里,它的抬头这边有很多不需要的一个资讯,跟我们公司服务相关的内容在这个text等里面,OK。我们这里有很多不需要的资讯,我只需要下面这个text的部分,它这里是包含了所有我们公司服务内容的内容。所以呢,我们这边要把load data改成specific data,把text拉进去,这样我们跑一次,这个workflow,大家就可以看到说,从我们的19个item变成6个item,就代表说,这里面可能有13个、13行,那每一行呢,它就把它拆成一个、一个item,这会造成我们之后可能要读取这些资讯的时候,它有可能会跑到这上面去,那就会造成一些读取上的错乱。
好,那我们直接在这页去做资料的验证。我们要有一个AI Agent,我们AI agent呢,给他一个trigger,on chat,这边同样给他一个模型,我们就一样用Open Router的模型。那AI agent本身呢,不是每个模型都有支援,它用这些工具,找适用于工具的模型。那Google的话,就是我们原本用的这个模型0205,这个免费,它是有支援tool的,所以我们可以直接使用这个模型是没问题的。
这边我们要做一个vector,这边vector question answers and tools,然后这个、这个,那我们给它一个名字,我们要给这个档案一个名称,那我们就叫它,然后它只能用英文,所以那我们就、就company services,就是我们公司的服务内容。我们要给它一个形容这个档案要做什么,比如说用data name company services,然后用此资料来回答公司相关内容。
然后在我们命名以后,我们要把它连到我们这个database。这边我们一样要给它一个model,我们可以直接把它放到这边来,还是吃语文模型。这边我们用Simple Vector Store,这边要确定的是,我们要用同一个model,它才能一个是加密,一个是解密,所以加密跟解密我们用同一个钥匙都要作为同一个,那我们就可以啰。
我们这边我们来打开这个chat,然后我们问他说,可以使用哪一些工具?它这里就写,我可以使用这个default API中的这个company service policy这个工具。好,那我们要、我们就说相关服务,我们想要列出我们文章内的公司所有的相关服务,OK。在回答之前,它、它有,这里就有回答出的这个所有的问题。
好,那如果你碰到这样的一个节点的错误呢,我们到AI agent这里面呢,给它一个system message,就是我们用提示工程来强制它一定要用company services这个database来回答所有公司相关的问题。OK,我在猜是大语言模型,它自己也想回答这个问题,可是它自己有很多资料,但它不知道我们形容是哪一间公司,它有时候会想叫这里,然后又有时候会想自己回答,主要是因为我们、我提供的这个资料里面是没有任何一间公司的名称,所以它读取公司这两个字的时候,它在想说,这是哪一家公司。
我们这边重新跟它沟通,可以使用哪一些工具。如果你是跟我一样使用注音平音的话,会碰到一个问题就是,它这个对话方块是优化于英文的,所以按一次enter,它就会送出。那我们注音打完,也要按enter,注音打完它就会把原本已经打完了字,然后送出,所以变成是我们每次要改字的话,就变成要送两次,这是一个它们的bug。
这边呢,列出公司所有项目,我们这里,你可以看到它强制去到这个vector data项量的database里面去找寻我们已经做好的这些资料,所以它这一次就很认真的把我们有相关的服务全部列出来。我们再问一个问题,这家公司主要的服务内容是什么?你看它每一次跟公司相关的问题,它,我们这个提示石这边强制它一定要用这个工具去回答问题,它就会去强制提取这些资讯,OK。
那以上是RAG,RAG的一个实际使用案例。那我们接下来就进入我们Level 3 AI agent的工作流建构。接下来,我们终于要进入了我们的第三个level,就是把AI agent放入、融入到我们的workflow里面。这边我们,首先我们先命名,OK,form sheet AI agent到,这边呢,我们也一样把它改成AI agent,就不再是大原模型的LM AI agent,AI agent写信,这边我们先留着,因为我们等一下会用到里面的这个信件内容,把这个删掉。这边我们就直接把AI agent第一个拖曳过来,我们先做上面这颗、这个flow,因为我们最后是走上面,OK。那我们先走上面这个flow,为了之后的一个稳定、稳定性,就是整个vector这个、这个像量database稳定性,我们这一次要使用Pinecone这个database,它有2GB的空间让我们免费的做使用。
那我们先把我们的vector-based的资料传输先做一个建立,那一起带大家去注册并建立这样一个database。这边呢,我们一样用一个trigger,那这个,因为database它是远,就是它是一个remote的database,好处、好处就是我们可以、好处就是我们可以做一次,然后基本上我们就,你的data就会存在里面,就不用再去做一个更新,OK。那我们步骤一样,到我们的Google Drive,然后download file,我们要中文的这个,然后这里,然后extract,OK,去PDF,然后这边呢,我们要用我们的Pinecone,OK,Pinecone vector store这个,好,一样是,我们是add,好,在这边,这边下面的,除了这个不一样之外,下面的我们几乎都是、我们都是一样的,OK,这些都default选项,不用理它。好,这边我们用Google,然后记得选取004这个embedding,如果你没有跳过刚刚那个RAG的这个教学步骤的话,你这些应该都是设定好了,除了Pinecone之外。
那我们现在要去Pinecone,OK,进到Pinecone以后,我们用Google,一样用Google帐号去做一个登入,OK,然后这边选I don't code,这里改personal,这边呢,我们就用AI agent,然后less then 100K,我们选第二个。我们进到这边以后呢,这边要马上复制,你可以把它保存起来,这个就是我们要做认证的。回到我们的Pinecone这里,我们create一个credential,我们create this Pinecone,然后unsafe,连接成功的话就成功进去了。
那现在呢,我们要回到Pinecone去create我们的database。那首先呢,我们先回到这边,我们用的是这个embedding,Google的embedding-004 model,所以它的有一个值,我们是要设定,因为它每个embedding model,它的embedding大小的值是不一样的,所以你用其他embedding model的话,要去查一下Pinecone这边close,然后跟大家讲说embedding models它的差别在哪里。我们这边呢,我们要建立我们第一个embedding models的database,再create index,然后我们这边写n8n test,好,这边就是我们这个vector type,这个dimension,dimension每个model都不一样,像这边呢,这边是Llama的dimension,它有这几个不同的dimension,那这边呢,如果你是用OpenAI的这个three small,它有两个dimension,通常default会是1536这个dimension,Pinecone sparse,它每一个这个dimension会不一样,像如果你是用multi language 15 this large这个,这个目前呢,我看网路上的测试是在中文里面准度很高一个embedding model,如果有机会可以用用看。那我们这一次用的是免费的Google,所以我们是做客制的这个,然后这边呢,请帮我选768,这边选cosine,其他的都不需要,我们按create。
好,这边建立了以后,这里等它亮了绿灯,我们就可以回到我们的n8n,到这边呢,我们可以去选择,这边就可以读到了n8n test,在资讯先我们先把答案设定好,这两个先跑完以后,我们到这边,然后把我们这个text跟那个我们在RAG一样把text,这有text,我们只需要text,所以我们就把它放进来,我们全部一起执行。好,这边看到,一样是六个item,那就跟上一动一样,没错。那我们现在的这个、我们的data就到Pinecone的向量的database里面去了。
那我们回到Pinecone,好,这边我们就可以看到我们的Pinecone这个后台呢,我们就可以看到我们这些data一个一个,还有这个id编号都在这里面,OK。看到id编号的,它每一个都有id编号。我们回到我们的n8n,那这个呢,我们按D,然后基本上接下来就不会再去用到了。
好,我们来做我们的AI agent,那AI agent的这个接法呢,就跟刚刚其实非常的相似,几乎一模一样。首先我们先把AI agent叫出来,我们叫出来以后,把它接上,我们先把它接完,然后再做提示词的工程。我这是control或command D,可以直接扶植接过来,接过来。试过几次呢,我发现我把它拉出来,这样才比较好看到。
那我们来选择我们的语言模型,我们一样用free的,但这一次我们要用不同的模型。试过几次之后呢,目前如果你是在影片刚出的这个当下,看到这个影片的话,免费的这个大语言模型呢,只有Google比较支援工具的使用,像R1等等的那些模型,他们有一些是免费版是不支援工具的使用的。那Google我们一开始都用0205这个,那它在它支援工具的使用,可是它的使用工具的稳定性没有上面这个高Flash exp-free。那我们之前不用这个原因是因为它的给的扣达,就是免费的扣达是比较少的,所以如果我们从一开始就开始用这个Model的话,这个模型的话,可能到后面它的扣达就用完了,那我们可能就要换一个Model,比较重要的是后面我们要执行我们的工具,所以我们后面改成用Flash-exp-free这个Model。那如果你是之后才看到这个影片的话,那你就测试看看哪一个Model用工具是比较稳定的。
这边我们就接过来,然后这边我们也把它接过来。这边的Tool,我们一样是接我们的那个像量Database,我们打Vector,然后到这边Answer这边,这边Answer我们一样跟RAG的时候一样,Company,用此资料库回答所有公司相关问题,这样就设定完了。那我们这边Model一样是用Google的,这边的Model是跟它一样,我们可以直接用它,然后下面这边,我们把这个拉下来一点点,下面这边Vector Store我们一样是要用,那我们一样是用Pinecone,我们现在用Pinecone,然后Pinecone这边跟刚刚登入都一样,我们这边就选择n8n Test这样就可以了。下面这边的Embedding我们是用Google的Embedding,然后一样是我们选择004。
好,然后接下来我们要确实的命名,所以我们就在后面这边,我们做一个RAG,打一个Rack,做一个记号,这样之后如果有需要维护的话,就可以很好的去做区块的判断,接这些节点的这个概念,我们会喜欢就会觉得很简单。接下来的比较AI Agent里面比较难的是提示词的工程。这边我们一样是用Define Below,然后我们要做提示词,AI Agent比较不一样,基本上就是它只有一个System Message,所以我们很多之前要用的,我们很多之前在LLM这边,我们有分层,那我们很多之前要用的东西,它会包含在一起,那到了AI,好,不是错了,先复制,然后我们先把东西复制过来,我们再讲的提示工程。
我这边再提供大家一个好用的工具,但是我们首先我们要先到Gemini这边,然后请他帮我们去掉内容,留这个模板。请Gemini把这个内容去掉,然后帮我们留下模板就好。这里跟大家介绍一个工具,我们可以Compress HTML,当然也可以用大型模型做,但既然有这个工具,我们就不需要去特别打这个字。好,这里按Compress,这样就会像我们刚刚的Jason一样,它就会变成是压缩过,这样我们在使用大型模型的时候,我们就可以减少我们token的使用料。记得可以帮我把这个title这边,我改成你的project的名字,或是任何你现在使用的信件的名称。
好,我们到回到n8n里面,我们把这一段直接复制掉,然后直接盖掉,然后这样我们就把大型模型那边的提示词复制过来了。首先我们在AI agent里面,我们要先定义我们的AI agent,我们提示词可以维持原样,我们等一下再去做修改。那这里我们要先打这个tool,一样是,好,警示好,然后这边写说用Company,刚刚我们的Company Service的tools,提取公司相关资料,我们这样,请它用提取公司相关资料,然后选写规则这边,我们把信件的选写规则放在下面这边。我们这边扼要的用公司相关555资料回答他的要求,OK,回到他的需求,然后我们这里,因为字数变多,我们就提升250字这样,OK,这个可以,我们这边空一个,这边也可以用Company Service,然后提取公司资料把它放到这边,不过我来跟大家介绍一个提示词的写法,为什么现在才要讲这个提示词的写法?因为我相信可能蛮多人就跳过前面那一段,然后直接来看AI agent这段,所以我们这一段就补充提示词的写法。
这边可以看到我们提示词的写法,就是以刚刚这个为例的话,第一个我们要写的是总缆,一个总缆,或是我们的角色定义,这个AI agent的角色定义,整体的一个角色定义。那接下来是我们每个tool的个别定义,跟AI agent解释每个工具它的功用是什么,这样它才知道要怎么去用。那接下来我们要有 一个流程的SOP,就是AI agent它要按照这个流程去执行这一次的上面这个总缆的任务,然后再接,在第四点是,你可以再加其他的细节,不一定要加,上面这个三个一定要,那下面这个细节就是一个加分的选项,如果你要做更细的话,就可以做下面这个其他细节的定义。
那我们这里呢,习惯是用markdown格式,对,也不知道什么是markdown格式,我这边讲解一下,跟你们介绍一下markdown格式。markdown格式它的来源就是把HTTP,就写网页的这个格式简化成一个笔记格式。那我们这边只会用到这个#号,字号就是定义说,这个变成是标题或是不是标题,字号就代表标题,然后字号越多,代表它是大标变小标,再变更小标这样。那这边呢,它这边是,我们这边是用剪,这样dash的这个号服号,然后它这边是用这个星号,它们都会代表的是这个list要点这样一个表示方式,所以我们大概只会用到这样,它是一个笔记软体里面的一个写法。
那我们再看另外一个,我们这次要用的,在AI agent里面要用的这个概念呢,这是我在做AI agent的时候,把它设定好的。我们这里可以看到我们的一个总览,然后我们的tools的定义,因为我们只有一个tool,如果你有很多个tool的话,那我们就要个别全部都去定义,然后接下来是其他细节,把它放在这边。其他细节呢,这边是变成信件的选写规则,我们这个信件最重要就是它的选写规则,然后再接下来是流程的SOP的定义,OK。前面这些定义完后,然后可以SOP定义,你SOP也可以放在上面,也可以放在下面,那我是放在下面。
然后我们回到n8n这边呢,我们就直接贴上,那这些都会附在资料里面,然后这边我们就直接贴上,我准备好的资料,这个都会附在资料里面,然后我们稍微细读一下。我们这边是超过一千美元的客户,那我们这边的目标就是写一个包含行事例的电子邮件,然后客户的预算超过一千美元,所以我们将其视为一个优先的客户,然后选一封具有说服力的简短邮件。那永远使用company services这个工具去提取公司资讯,好,因为我们永远,这里永远使用就是强制AI一定要使用这个工具去取用,这样我们用AI agent才有这个意义。
然后这边选写的规则呢,我们首先我们简短的回应,用公司资讯回应需求,然后让客户在阅读的时候,可以产生共鸣,然后提出三个简短问题,厘清这些需求中比较模糊的陈述,触使他点选行事例并跟我们联系,因为他想要厘清这个问题的话,他就会很快的跟我们去做联系,然后最后做一个结尾,然后永远用专业的语气,保持电子邮件要简短,然后切中要点,然后问题需要有一些范例,就是让客户或是让填表单的人比较好回答这些问题,然后使用语言内容相同的语言去选写,至少250字。下面这个SOP就是,我们请AI的一个步骤,让他每次才不会太随机的给我们内容,OK。第一个就是叫他先阅读客户的需求内容,必须用Company Service工去提取我们公司与客户需求相关的服务资料来回应他的需求,然后最后用信件选写规则,OK。我提到这边,信件选写规则,产出一封具有说服力的简短电子邮件,然后用JSON格式做输出。好,JSON格式这个我们剪下来,后面会带到,我们要做JSON格式输出,然后再变成HTML,因为这样我们可以很灵活的去运用HTML,我们当然也可以像LLM一样把HTML放在这边,我们这次两个都做介绍,那你就知道说,如果弄成JSON然后再变成HTML,它有什么样的一个优势。那这样我们先跑一次,然后带大家做一次我的开发流程,OK。它这边没有去使用,我们debug一下,这边要删掉,我们就留下客户资讯,然后让它完全按照这个System系统的提示词去做。刚刚的状况是,我们上面这个提示词跟下面的提示词,它没有冲突,所以我们这边只要提供关键资讯,那我们要请它照下面这些去做,当然还有很多提示词的这些撰写方式,因为这边,我觉得它的字数相对的有一点少,所以我们这边把字数调高一点,然后让它重跑一次,在我们后面的示范会比较好,好,示范一点。如果你在试的时候,你觉得信件内容是OK的,没问题,这样我们字比较多,以后我们来做,我们来做接下来的开发流程。我们这一串,我们就拿到Gemini,我直接跟他说,给我一个JSON file,把上述内容变成JSON格式。
这边可以看到JSON就把每一段的内容都有做一个定义,Greetings就是开头,然后初步介绍,然后我们提供哪一些服务,然后一些例子,然后它把我们的服务内容的这个例子给条列出来了。基本上这个是我们,我们就直接用这个来继续做执行,中英文没关系,因为我们到时候变成HTML是看不到这些key的,所以没有问题。接下来我们要请它把这一段,也是一样叫它去掉,去掉内容给我template,然后叫它去掉内容变成template给我,叫它去掉所有内容好了,它又留了一些,又留了一些内容给我们。好,这样所有内容以后,它每次都可以做一个发挥。这边我们就要用JSON format,我强制它用这样的一个format,我再维持第一个就可以,然后再用JSON format,这个JSON format它的字数没有很多,所以我们可以去,可以去压缩也可以不用压缩,所以看个人喜好,那这边我们就接成时间,然后我就不压缩,然后我们把,让它试跑一次看看。好,它有去做一个资料的提取,这是我们要的,然后希望它有做JSON的输出,没问题,它有做到JSON的输出,PIN这个data。
接下来呢,这里我们要让电脑帮我们写程式,所以我们可以靠一个、靠程式来帮我们直接做一个转换,不用再靠大语言模型。好,这边我们用这个code,当然要用大圆,要用圆模型也可以,就是如果我们要接成我们的token的话,就可以这样做。那我们可以两个都,我们可以两个都做,我们下面用这个,我们下面用圆模型去做,那上面呢,我们就用code,我们就两个都示范好不好?第一个呢,我们这里有javascript跟python,接下来呢,我们要复制的是这一串,这一整个内容,然后我们到Gimmini去,Gimmini要到这个程式伙伴这边,那我们直接复制。那这里的第一个重点呢,就是我们要给它一个参考图,就是可以去找一张你比较喜欢的这个UI设计,那我这边呢,我就先用一个简单的,哦,制式的UI设计。好,然后接下来呢,我们要贴上这三段:第一,参考图中的email UI设计;第二,帮我们生成n8n code这个节点用的javascript,OK,因为要有这样的一个呃,注记是因为n8n的里面它需要的是Json的格式,所以有了这样的一个注记呢,它javascript通常就会出Jsum的这个格式出来,如果没有的话它就会报错。那这里呢,你就可以,这里就会提醒大家说,如果它报错,那就回来这边,应该就是一个是没有注记,不然就是我们在下面再注记说,叫它用json格式来反缓。第三个,第三个就是把上出这样的一个Jsum信件内容呢,转换成email的html加CSS,那我们就直接说,输出内容放到这里,好,就叫它把输出内容放到Jsum里,然后让它,好,直接跑一次,然后这边我们看到,我们是output,所以它这个答案是正确的,然后接下来就是它帮我们参考这个设计呢,设计出来的这个可能有一点问题,不过没关系,我们直接复制来用,然后这边我们就把它全部删掉,然后把这个拉进来,我们直接跑跑看,然后这边,这边有一个报错,它这个爆错是说,后面这个也有错,后面这个,这个就是node exists,就是有一个node不存在,那不存在的原因就是它报错了,那我们把这个先、先关掉,我们再跑一次。它这边呢,就是Greetings,它没有吃第四行,把这个删掉,这里有output,然后下面这个整个,OK。这边呢,我把它删掉的话,它就、它就回到正确的一个格式输出。这里可以看到说,它read,它反环的是一个Json格式的一个物件,它这个就是我们要的内容,所以如果没有这一行的话,要记得叫它输出的是这一行。好,这边,然后这边呢,没有吃到,不过没关系,我们就直接拖一进来,在我们的内容就出现了。那我们再去按这个信件寄送,到这边呢,确定是HTML,OK。
回到这边,我来跟大家讲一下,这个HTML呢,你看,这里,就是HTML,HTML,OK,它的意思就是,它有一个HTML,然后这边,它的意思就是这个key是HTML,然后这里呢,它把上面这个内容做好,然后输出HTML在这边,然后这里整个是一个Json,我们寄送,然后到我们的信件。好,这次呢,它给的内容就有做一个编排,我觉得还可以再更好,但OK,这个编排,下面,尤其下面这里,下面这里可以在做一个优化。如果我们要做优化的话,那我们就把这个、这个截图,然后直接到HTML来,然后跟大家讲说,图中为上述程式成果,帮我做上述程式的、上述程式的这个优化,然后它没有吃到这个JavaScript,那帮我做,我们直接,我们直接复制这个,然后把复制过来,然后按确定。这个就是一个迭代的过程,然后秀给大家看,然后这次做完,我们就直接换下一个,然后这边Return也是正确的,那我们没问题,我们就到这里。好,然后这里呢,我们要拖一进来,然后把这个删掉,不好意思,然后这边也直接寄信,我们到我们的信件内容,各,它有把这个空间给拉出来,但它还是没有优化我们的按键,所以可能是我们要再去跟它沟通说,我们要优化我们的按键,那给给大家看一下,我之前有试过的,其中它按键可以做到不同的这个点,所以它的你的提示词呢,会,你可能要多试几次,它就会有不同的版面出来。那、那你喜欢版面确定好了以后,这个好处就是,这个这样的接法的好处就是,你喜欢版面固定以后,我们试完以后,它这个版面就固定了,你信件的版面就固定了,就不会再做一个太大的变动。
那我们做下,现在开始做下面这个。好,这边已经把这个提示词呢,已经更改好了。这边跟大家解释一下,这里变成是追踪信件,跟上次跟我们LLM一样,变成追踪信件,然后客户没有到1000元的门槛,那时候到200到1000元,所以我们是其为潜在客户,然后叫他,请AI利用相关的这个公司服务资讯跟它做一个联系。那这边呢,问题的这个、问题的陈述呢,会变成是导向1000预算,而不是一个积极的去确认模糊的地方,会比较、会比较有一点目的性的去导向1000元的预算。一样是用JSON格式输出,所以我们这里呢,还没有接,我们要把它拉过来这里,然后我们把这个接过来,这样大家可以很清楚看到说,这些全部都接到这边来。那记得我们要把回去呢,把我们的data改成不是200到1000,那你之前怎么打的格式就要维持,这样它才会读到。好,我们让它,我们这边先、先让它跑一次,然后我们就像上面这样pin一下。好,这边呢,可以看到它,我觉得我们提示使确实可以去使导它去提取,那这边呢,我们确定有这个内容以后,看起来是都没问题,然后我们pin。好,这边我们就用大语的模型去做,我们直接用大语的模型,那我们这边接过来,然后这个要先不用接。
好,接下来这里呢,我们要怎么做呢?第一个我们要define below,那这里我们要把信件内容放进来,OK,我们这里就写信,写,我们指定信件内容,我这里,因为它这整个是一个JSON file,所以如果我们把它放进来的话,那这里是不会出现我们的文字的。好,这要特别注意,那我们要怎么做呢?我们要回到外面,它里面没有复制,复制只有在这边,比较麻烦是我们要把一个一个去复制进来,然后双引号里面这个呢,一个一个换成这个,这样我们才能是一个动态的资料,这样我们之后生成呢,它才会每次都用生成时候的资料,因为每次都是才能读到信的内容,OK。我们很快的做这件事情。好,这样我们就,这样我们就设定完成了。可以收到这个动态资料以后,我们到system prompt这边,再到expression,然后直接复制进去就这样。把我们的这个总览,我们叫它是一个JSON转HTML CSS的一个专家,然后请它读懂我们的JSON信件内容,把JSON信件内容转成Email,然后用HTML加CSS。这边呢,我要独立HTML独立输出一个JSON物件,这样我们之后呢,才能去再下一个物件直接拖一然后去用。那这一次啊,我们不需要去呼叫我们的工具,所以我们可以随意选择大模型,让我想用刚刚Google现在最新的模型,听说它效果很好,那我们用0325这个最新的模型。那这边呢,要记得要给它一个这个、这个要打开,会给它一个parser,为什么呢?因为它有时候会把所有东西就集在一起,那我们不要这样,我们就是要有一个html,那我们这边呢,可以就叫指定html,然后下一个这个离控格,下面删掉。那这边会报一个错,因为它只有一个的时候,它不需要这个动好,那我们这样做一个示范,请它试跑看看。好,现在跑完,我们来看一下,嗯,html,然后它里面都有放,不过它这个有点多,我们来看看它生成了什么样的这个内容,确定html output html,ok。那我们寄送,它生成的有点多,有点小期待,但我觉得可能会很奇怪,欸,我整体还不错,我知道,大家可以看到,这个是蛮多的,就是就没有这个必要是,哦,它把所有,看起来它是把每一行的CSS都加进去了,那可能,好,它不需要写这么多,但就帮Google耗一下token,哦,没问题,但目前看到它的这个输出呢,是还蛮优的,哦,所以可以用这样的方式,不过它,你刚刚看到它这个跑的过程其实有一点久。那我们来回去看一下我们的信件,第一个,哦,长这样,就是我们调调整过的,其实还不错,那我们可能还需要继续调整。第二个是这样的一个信件内容,去交错完一下,我们生成这样以后啊,然后我们可以再叫Google把它写成JavaScript,这样我们就每次,我们就不用去跑这个流程,它每次都会直接生成,直接一件就生成这样。如果你喜欢这个格式的话,然后它你就把它变成一个Code,然后它就会每次都把JSON发有直接就变成一个这样的一个信件格式。那当然还可以做一些优化,不过它这个按钮是正确的,所以叫它直接生成Code,它这个按钮是不正确的,可是它没有读懂这个信件内容,我觉得,所以我们在那个Prompt那边的时候,应该是要叫它读懂信件内容,然后才能叫它生成这样一个比较好的这个按钮。那我们回到n8n,然后这个就可以删掉了,这个我们都不用测试,这后面都是已经测上、上一栋就已经测试过了。那我们,对,我们做一个记号,然后是h html转换,html转换,那这样我们第三个Level你就基本上学会了,而且这个Level你还学到了如何用AI写Code,然后转换成Email,甚至是你还知道了怎么设定JSON格式,然后再让它去读懂这个JSON格式去转换成一些,然后这个好多不同的应用方式。然后这一次你也学会了如何用Pinecone然后一个Vector-based Data去储存你的这个、这个资料,所以这后面这里看是同一个workflow,但用到的这些技术呢,或是用到新的东西完全不一样,而且都是你可以在其他地方自由发挥的东西。
然后接下来呢,我们要做我们最后一个工作了,这会是一个额外的一个workflow,我考虑很久还是想说把它放到同一个教程里面,就完整的跟大家介绍。接下来呢,我们要用的是我们前面有讲到的Webhook HttpRequest网路呼叫协议,然后呢,我们要让我们大原模型可以上网,这个我相信很多人都很期待做到这件事情。那我们最后,然后只有留到最后的人才有这样的一个、才能学到这样,但你如果跳到最后的话也是可以了。废话不多说,赶快进入下一个。在此之前,如果你还没订阅我的频道,赶快订阅我的频道吧!
我们来到最后一个环节,我们前面同一个流程,我们经过了三层的叠带,三个level,基础的三个level我们现在都学会了。那我们现在要进入进阶的level,我们要赋予AI网路的功能,网路查询的功能,帮我们做研究报告。然后我们要第一次使用Webhook,就是如果让我们有一些网站,它没有内建到n8n里面的话,我们可以使用Webhook去跟这些网站的服务做沟通,如果这网站有Webhook的功能的话,通常都有,我们可以用Webhook去做一个data transfer资料的传输,然后还有相应的开发。首先我们有做会议通知,只是做一个团队通知而已。那我们这边我们要再使用者点选会预约的当下,我们就要产出一个会前的报告,会前的准备报告。那我们可以使用者在预约会的那一刹那,我们就直接产出了一个可使用的会选报告,这样我们就直接省下了去查询这些资讯等等这些有起步的时间。我们是在使用者点选会议的那一刹那,我们就已经准备好要上战场了。这边会获取会议的通知,就是他在点选会议的那一刹那,我们这个workflow就会接受到他点选会议的讯息,AI的助理就会帮我们取得、取回使用者的需求,然后去做一个初期报告的研究,然后传输到我们的HTML格式的修正,然后再寄送一个会议会前、会议前通知给我们的email。那这会议前通知,因为会包含使用者的痛点,我们要在会议中问使用者什么样的问题,我们才会获取更多资料,因为我们只有30分钟,我们设定的会议是30分钟,那我们在30分钟里面怎么去安排会议内容呢?这份报告都会跟我们说,然后我们的会议的前情提要,都会帮我们产出这样的一个成果。
这边我们要再带大家一起做一个其他的workflow,变成我们AI agent使用的工具的这样一个workflow的设计技巧,让我们可以重复使用其他的我们已经做好的workflow,让我们就可以变成一个很庞大的专案。上面这是这边的主流程,下面这个我们要在另外一个流程里面去开发,然后在主流程里面去做呼叫,所以这个流程不会在这个流程里面。首先我们要做我们的会议通知的这样的一个读取webhook。第一点,我们是用cal.com,那cal.com其实它有内建到我们的n8n里面,那我们验证过account,在一个booking,就是人家有预约会议的当下,cal.com这个节点应该会读取到这样的一个讯息,看测试。那这边可能它这个节点,我的n8n里面的这个,可能安装方式或什么,它有出现一个bug,就是我现在示范给大家看,我在预约会议的时候,cal.com这边这个节点,它读取不到我们的、读取不到我的会议连结的讯息,这已经会议通过了,就是预约通过了,但是这边它读取不到,这个是可能我程式里面有bug,那如果你是用Railway或是其他的云端的连结,因为我现在是用本地端,那它云端的,我测试过是没问题的。那我们现在就带大家做一次,如何去解决这样的bug,我们可以去重新安装等等的。那我们为了节省我们的时间,我们就直接用webhook,因为cal.com它是有webhook,有提过webhook的这样一个服务。这边是webhook的内容,它有连结,有test and production,所以如果你在进入production,就是稳定阶段的时候,你可以用production这个url,那test的话,我们用test这个url。那接下来它会有http method,这个就是在接收讯息的不同method,它有delete、get、head、patch、host、put这几个method,那等一下我们再做网路应用的时候,会介绍到http request的这样的不同的method的每个不同的效果。那这边我们就先介绍一下什么是webhook,这边有一张图,直接跟你讲说webhook是什么,webhook其实就是一个单向的,基本上是一个单向的资料传输的节点,其他的server要传资料进到我们n8n app里面的连结,所以我们等一下要把这个连结注册到cal.com的后台里面去,这样cal.com才知道说,人家预约会议了以后,它需要把资料、把这个通知传给哪一个连结,OK。所以我们等一下会把这个连结注册到cal.com里面,一般我们在跟其他像Notion或是是有来回的这种凡数方式,我们就要做API,那等一下我们再讲API的时候,我们再继续做补充。那可以知道是API,它是比较,它是可以做双向沟通的,那webhook通常就是我们做单项沟通的。
好,我们要怎么用这个webhook?这边我们要复制我们的get,我们直接复制这个那个连结,我们到cal.com这边,然后到我们的账号,然后这边我们到我们的developer,我们之前都是用API key,那这边有一个webhook,我们这边按新增,那将我们的连结贴在上面。那这边它有很多不同的功能,我们这个之前那个节点里面只有四个功能,那这边有很多不同的功能,这一次开发主要要用到的就是这个,当会议连结被点选的时候,当一个booking被created的时候,我们要让它通知我们,那我们就只要这个就好了,那其他的不用管它,我们create,然后我们就完成了我们webhook的设定。那我们来测试一下,这个webhook是不是可以读取到这个讯息,好,我们,所以点取一个连结,点取一个会议。好,大家回到这里,欸,它没有听到,这时候呢,我们要去理解网路里面呢,它