超級(jí)干貨:0基礎(chǔ)也可以學(xué)會(huì)的AI agent搭建!你的第一個(gè)bot教程
自從大模型開(kāi)啟智能化之后,各大廠家都開(kāi)始做自己的AI Agent,畢竟這好像是一個(gè)比較不錯(cuò)的應(yīng)用方向和變現(xiàn)模式。這篇文章,我們就來(lái)和組綜合學(xué)習(xí)一下,如何從0到1打造一款自己的bot。
本節(jié)開(kāi)始,我們創(chuàng)建一個(gè)實(shí)戰(zhàn)案例:圖書(shū)管理工作流。
溫馨提示:本文內(nèi)容很多,涉及貫穿了搭建扣子應(yīng)用的很多知識(shí)。如果學(xué)懂本文,你可以完全掌握了扣子搭建的原理,話不多說(shuō),上干貨。??
一、流程分析設(shè)計(jì)
圖書(shū)管理工作流的作用是:通過(guò)判斷圖書(shū)管理員的自然語(yǔ)言指令的意圖,來(lái)執(zhí)行對(duì)應(yīng)的操作。
例如:分析管理員指令,其目的是向數(shù)據(jù)庫(kù)增加一本書(shū)、或是刪除一本書(shū),還是檢索當(dāng)前數(shù)據(jù)庫(kù)中所有的圖書(shū)。
我們期望的效果是:當(dāng)圖書(shū)管理員輸入類似“請(qǐng)幫我查詢有哪些書(shū)籍”的時(shí)候,工作流就返回當(dāng)前數(shù)據(jù)庫(kù)所有的圖書(shū)。
當(dāng)輸入類似“向數(shù)據(jù)庫(kù)錄入XXX(書(shū)名)”的時(shí)候,就向數(shù)據(jù)庫(kù)添加一本書(shū)。當(dāng)輸入刪除指令的時(shí)候,就刪除一本書(shū)。
通過(guò)分析,得出結(jié)論
- 如果要分析用戶的意圖,我們需要有一個(gè)理解用戶語(yǔ)義的功能節(jié)點(diǎn),這時(shí)候就需要我們的 大模型節(jié)點(diǎn) 出場(chǎng)了。(工作流中使用的節(jié)點(diǎn)在教程中也都有詳細(xì)示例+講解)
- 判斷完管理員意圖后,我們具體要執(zhí)行哪個(gè)操作,是查詢、添加,還是刪除,這里有一個(gè)選擇判斷的過(guò)程,那當(dāng)然得用 選擇器節(jié)點(diǎn) 去做這個(gè)工作。
- 因?yàn)槲覀冃枰脭?shù)據(jù)庫(kù)來(lái)存儲(chǔ)書(shū)籍列表,數(shù)據(jù)庫(kù)節(jié)點(diǎn) 肯定是必不可少的了。
經(jīng)過(guò)分析,我們需要用到三個(gè)類型的節(jié)點(diǎn): 大模型節(jié)點(diǎn) 、選擇器節(jié)點(diǎn)、選擇器節(jié)點(diǎn)。
接下來(lái)我們就來(lái)使用這些節(jié)點(diǎn)來(lái)正式開(kāi)始創(chuàng)建。
二、創(chuàng)建Bot
1. 初始化Bot
通過(guò)之前課程的學(xué)習(xí),我們知道,如果要在工作流中使用數(shù)據(jù)庫(kù)節(jié)點(diǎn),一定要先在Bot中創(chuàng)建一個(gè)對(duì)應(yīng)的數(shù)據(jù)庫(kù)。
所以首先,我們要?jiǎng)?chuàng)建一個(gè)Bot,然后在Bot中建立一個(gè)數(shù)據(jù)庫(kù)。
2. 創(chuàng)建數(shù)據(jù)表
點(diǎn)擊 + 按鈕,創(chuàng)建一個(gè)數(shù)據(jù)表。
3. 自定義數(shù)據(jù)表
4. 添加字段
到此步驟,數(shù)據(jù)表就創(chuàng)建完成了,接下來(lái)開(kāi)始創(chuàng)建工作流。
三、創(chuàng)建工作流
1. 初始化工作流
創(chuàng)建完Bot之后,我們來(lái)進(jìn)入工作流管理頁(yè)面,創(chuàng)建工作流。
點(diǎn)擊 創(chuàng)建工作流 按鈕。
2. 填寫(xiě)工作流信息
3. 確定工作流所用節(jié)點(diǎn)
這里很關(guān)鍵:我們先把需要用到的節(jié)點(diǎn)先加到視圖里,然后再分別對(duì)節(jié)點(diǎn)進(jìn)行具體的設(shè)置。
從上文得知,需要用到:大模型節(jié)點(diǎn) 、選擇器節(jié)點(diǎn)、選擇器節(jié)點(diǎn)。
為了方便接下來(lái)大家的操作,做到心中有數(shù),我們先把搭建好的結(jié)構(gòu)到放這里,讓大家對(duì)結(jié)構(gòu)有一個(gè)大體的了解,這樣之后搭建起來(lái)會(huì)更容易操作。
現(xiàn)在正式開(kāi)始向工作流中加入節(jié)點(diǎn)。
4. 添加大模型節(jié)點(diǎn)
大模型節(jié)點(diǎn)主要有兩個(gè)作用:
- 一個(gè)是分析用戶語(yǔ)義,判斷用戶是希望添加、刪除還是查詢書(shū)籍。
- 另一個(gè)作用是提取出書(shū)籍名稱。
例如當(dāng)圖書(shū)管理員給的指令是:“添加一本《三國(guó)演義》”,那這時(shí)候大模型需要提取兩個(gè)關(guān)鍵信息。一個(gè)是 添加,一個(gè)是《三國(guó)演義》的書(shū)籍名稱。
那么接下來(lái)我們先添加兩個(gè)大模型節(jié)點(diǎn),分別用來(lái)返回 圖書(shū)名稱 和 操作類型。(正常情況下,一個(gè)大模型節(jié)點(diǎn)也是可以搞定的,返回一個(gè)數(shù)據(jù)對(duì)象即可,這里大家知道就可以了。為了更直觀的演示流程,這里還是用兩個(gè)大模型節(jié)點(diǎn)來(lái)演示。)
節(jié)點(diǎn)結(jié)構(gòu)如下:
第一個(gè)是提取書(shū)名的大模型節(jié)點(diǎn),它的前置節(jié)點(diǎn)是 開(kāi)始節(jié)點(diǎn),直接引用開(kāi)始節(jié)點(diǎn)中query參數(shù),用來(lái)獲取用戶的自然語(yǔ)言指令。
因?yàn)橐崛?shū)名,所以提示詞這里我們直接寫(xiě):提取query中的書(shū)名 即可。這里注意,query對(duì)應(yīng)的就是輸入?yún)?shù)名。
詳細(xì)配置:
第二個(gè)大模型節(jié)點(diǎn)用來(lái)分析用戶意圖,所以輸入?yún)?shù)這里還是獲取用戶的query。
如果用戶的意圖和添加有關(guān):則返回1 ;
如果和刪除有關(guān),則返回2;
否則返回3。
所以提示詞可以這樣寫(xiě)
詳細(xì)配置:
最后輸出一個(gè)type變量,值為1,2或3。
5. 添加選擇器節(jié)點(diǎn)
選擇器節(jié)點(diǎn)的前置節(jié)點(diǎn)是 大模型-操作類型 節(jié)點(diǎn)。選擇器節(jié)點(diǎn)通過(guò)獲取type的值來(lái)判斷具體執(zhí)行哪個(gè)操作。
這里注意要用到兩個(gè)選擇器節(jié)點(diǎn)才能做到type的3個(gè)值的判斷,因?yàn)橐粋€(gè)選擇器節(jié)點(diǎn)只能判斷是和否,所以我們要再借助一個(gè)選擇器節(jié)點(diǎn)。
整體結(jié)構(gòu)如下:
選擇器-1 配置:
選擇器-2配置:
6. 添加數(shù)據(jù)庫(kù)節(jié)點(diǎn)
如之前的教程所講,數(shù)據(jù)庫(kù)節(jié)點(diǎn)是用來(lái)操作數(shù)據(jù)庫(kù)的。
通過(guò)之前type的三個(gè)值,我們知道,對(duì)數(shù)據(jù)庫(kù)要有三個(gè)操作:查詢,添加和刪除。
所以我們要添加三個(gè)數(shù)據(jù)庫(kù)節(jié)點(diǎn),分別用來(lái)查詢,添加和刪除。
對(duì)數(shù)據(jù)庫(kù)的設(shè)置我們之前也講過(guò),如果想學(xué)習(xí),關(guān)注即可獲取免費(fèi)教程學(xué)習(xí)。
設(shè)置數(shù)據(jù)庫(kù)添加節(jié)點(diǎn)參數(shù):
使用自動(dòng)生成SQL功能生成
使用SQL后,我們還需要修改一下SQL的變量,要把‘新添加的書(shū)換成’輸入?yún)?shù)名
替換后正確的配置是這樣的:
同樣的方法修改 數(shù)據(jù)庫(kù)刪除節(jié)點(diǎn) 參數(shù)配置。
同樣的方法修改 數(shù)據(jù)庫(kù)查詢節(jié)點(diǎn) 參數(shù)配置,注意圖中所示,兩個(gè)查詢的name字段要對(duì)應(yīng)。
7. 結(jié)束節(jié)點(diǎn)設(shè)置
結(jié)束節(jié)點(diǎn) 的前置節(jié)點(diǎn)是 數(shù)據(jù)庫(kù)查詢節(jié)點(diǎn)。我們最后希望的是:不管用戶的意思圖是查詢,添加還是刪除,最后我們都把當(dāng)前數(shù)據(jù)庫(kù)中的所有圖書(shū)檢索出來(lái)。
所以結(jié)束節(jié)點(diǎn)輸出變量這里,要引用前置節(jié)點(diǎn)中outputList這個(gè)變量,這個(gè)變量一個(gè)是數(shù)組對(duì)象,簡(jiǎn)單說(shuō)就是一個(gè)圖片列表。
到這里為止,我們就把所有的節(jié)點(diǎn)都設(shè)置完成了,接來(lái)我們來(lái)調(diào)試一下,看看是否符合我們的預(yù)期要求。
8. 調(diào)試工作流
1)測(cè)試添加一本書(shū)
在工作流中點(diǎn)擊試運(yùn)行,輸入:增加一本三國(guó)演義。然后選擇我們之前創(chuàng)建好的Bot:圖書(shū)管理助手。點(diǎn)擊 運(yùn)行 按鈕。
可以看到,是按照預(yù)期走的 添加 的流程:
最終結(jié)果,可以看到《三國(guó)演義》被加到數(shù)據(jù)庫(kù)中了。
再增加一本《圍城》
查看結(jié)果:
可以看到《圍城》已經(jīng)被成功添加了,并顯示了當(dāng)前圖片列表。
2)測(cè)試刪除一本書(shū)
我們把之前的添加的《三國(guó)演義》刪除。點(diǎn)擊 運(yùn)行 按鈕。
可以看到,按照預(yù)期,《三國(guó)演義》被刪除了,并顯示了當(dāng)前圖片列表,只有一本之前添加《三國(guó)演義》,結(jié)果沒(méi)有問(wèn)題。
那么,到此為止,我們的圖書(shū)管理工作流就調(diào)試完成了。接下來(lái),我們把這個(gè)工作流引入到Bot中。??
四、發(fā)布工作流
在使用工作流之前,我要發(fā)布一下。
五、引入工作流
接下來(lái)把工作流引入到Bot中進(jìn)行使用
找到我們已經(jīng)創(chuàng)建好的圖書(shū)管理助手Bot。
點(diǎn)擊 + 引入工作流
選擇 WorkFlow_Books 工作流
編排 人設(shè)與回復(fù)邏輯
六、調(diào)試BOT
添加一本書(shū):
提示圖書(shū)已經(jīng)成功被添加了。
那么接下來(lái)測(cè)試一下,圖書(shū)是否確實(shí)加入成功了。
可以看到,《三國(guó)演義》圖書(shū)確實(shí)成功加放到了數(shù)據(jù)庫(kù)中,說(shuō)明我們的工作流正確無(wú)誤。
七、發(fā)布BOT
調(diào)試好以后,我們接下來(lái)就可以把BOT出布出去,讓大家來(lái)使用了。
自動(dòng)生成開(kāi)場(chǎng)白,點(diǎn)擊 確認(rèn) 按鈕。
選擇一下想發(fā)布的平臺(tái),我這里選擇的是發(fā)布到扣子商店,然后點(diǎn)擊 發(fā)布 按鈕。
提示審核中,然后點(diǎn)擊 完成 按鈕,一分鐘左右就審核完成了。
好了,到這里,我們終于把Bot和工作流的全部流程學(xué)習(xí)完了,希望大家在本文中能有所收獲。??
本文由 @jyc 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載
題圖來(lái)自Unsplash,基于CC0協(xié)議
該文觀點(diǎn)僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺(tái)僅提供信息存儲(chǔ)空間服務(wù)
- 目前還沒(méi)評(píng)論,等你發(fā)揮!