對(duì)吳恩達(dá) workflow 概念產(chǎn)品化的思考!
共 12254字,需瀏覽 25分鐘
·
2024-06-17 22:24
Datawhale干貨
作者:魯力,Datawhale成員
本文針對(duì)當(dāng)前 workflow 類型產(chǎn)品所存在的問(wèn)題,思考了產(chǎn)品設(shè)計(jì)的方法論,主要內(nèi)容包括:將任務(wù)進(jìn)行形式化表達(dá),提出 workflow 的系統(tǒng)設(shè)計(jì)可以形式化地表達(dá)為 DFA 的構(gòu)造,以及流程節(jié)點(diǎn)設(shè)計(jì)是給定約束條件下的 DFA 狀態(tài)數(shù)量最小化問(wèn)題。
具體章節(jié)如下:
1 引言
1.1 背景
大模型發(fā)展到今天,大家基本已經(jīng)達(dá)成了一個(gè)共識(shí):復(fù)雜的工作任務(wù)不可能通過(guò)單次 LLM 調(diào)用來(lái)解決。所以吳恩達(dá)、Itamar Friedman、Harrison Chase等人一直在提倡 workflow、flow engineering 之類的概念,意在通過(guò)多次、分階段的 LLM 調(diào)用、迭代來(lái)實(shí)現(xiàn)更好的應(yīng)用效果。
目前,國(guó)內(nèi)外 coze、百度千帆/靈境/客悅、Dify、FastGPT、flowise、langflow 等諸多平臺(tái)也推出了自己的 workflow 產(chǎn)品,實(shí)現(xiàn)了對(duì)執(zhí)行流程進(jìn)行可視化的低代碼編排,以下我們討論的 workflow 產(chǎn)品化是指這一類型的產(chǎn)品。
1.2 當(dāng)前 workflow 類型產(chǎn)品存在的問(wèn)題
目前業(yè)界對(duì)于 workflow 形態(tài)產(chǎn)品的設(shè)計(jì)理念并未有明確的共識(shí),或者說(shuō)正在互相借鑒。從實(shí)際效果看,目前市面上的 workflow 產(chǎn)品存在 2 點(diǎn)問(wèn)題:
(1)能力存在明顯邊界:現(xiàn)實(shí)中還有很多工作任務(wù)不能夠在 workflow 中被復(fù)現(xiàn)。
我們以保險(xiǎn)行業(yè)的一個(gè)AI客服場(chǎng)景業(yè)務(wù)流程為例,目前市面上所看到的所有 workflow 類產(chǎn)品,都無(wú)法復(fù)現(xiàn)下述場(chǎng)景應(yīng)用:
AI 客服詢問(wèn)用戶的年齡、性別、學(xué)歷等多項(xiàng)基本信息。
信息確認(rèn)環(huán)節(jié):AI 客服判斷用戶回答信息是否完整——如果完整,才可以進(jìn)入下一步驟;如果回答不完整,則繼續(xù)追問(wèn)缺失信息,如果回答始終不完整,那么應(yīng)該始終進(jìn)行追問(wèn)。
多輪對(duì)話環(huán)節(jié):根據(jù)用戶信息,基于保險(xiǎn)產(chǎn)品資料介紹,向用戶推薦合適的保險(xiǎn)產(chǎn)品,并回答用戶的疑問(wèn)(本質(zhì)上是基于 RAG 的多輪對(duì)話)。
一旦識(shí)別到用戶購(gòu)買意愿,發(fā)送對(duì)應(yīng)產(chǎn)品的下單鏈接等后續(xù)步驟……
(2)受眾群體有限:目前 workflow 類產(chǎn)品相比GPTs 類產(chǎn)品而言有更高的技術(shù)門檻,受眾群體數(shù)量小了若干個(gè)數(shù)量級(jí)。
-
A :我相信我所看到的東西 -
B:原來(lái)你看不到你不相信的東西
1.3 本文主要工作
本文針對(duì)目前 workflow 產(chǎn)品能力存在明顯邊界的問(wèn)題(我們認(rèn)為主要原因是缺少產(chǎn)品設(shè)計(jì)方法論)進(jìn)行討論。為了解決這個(gè)問(wèn)題,筆者認(rèn)為需要厘清以下 3 點(diǎn):
(1)明確 workflow 產(chǎn)品的設(shè)計(jì)目標(biāo)
理論上,整個(gè) workflow 在系統(tǒng)設(shè)計(jì)時(shí)應(yīng)該是能夠處理通用任務(wù)的,也就是說(shuō)它是一個(gè)通用圖靈機(jī),可以執(zhí)行任意一個(gè)特定的工作任務(wù)——無(wú)論是人機(jī)多輪對(duì)話,還是根據(jù)人類修改意見(jiàn)不斷迭代信貸盡調(diào)報(bào)告,抑或是一個(gè) AI 保險(xiǎn)銷售去向客戶推銷保險(xiǎn)產(chǎn)品,都應(yīng)該能放在一個(gè)通用框架下去實(shí)現(xiàn)。
現(xiàn)在市面上有些產(chǎn)品細(xì)分出了工作流和聊天流等多個(gè)類型,筆者認(rèn)為沒(méi)有必要。現(xiàn)實(shí)世界的真實(shí)任務(wù)本不存在工作流、聊天流如此涇渭分明的劃分,硬生生地強(qiáng)行分類并不合理,也提高了用戶學(xué)習(xí)和使用門檻。
(2)明確“你的”workflow 產(chǎn)品”要解決哪些業(yè)務(wù)場(chǎng)景下的工作任務(wù)。
盡管 workflow 體系在設(shè)計(jì)時(shí)能夠處理任意特定任務(wù),是個(gè)通用圖靈機(jī),但在具體產(chǎn)品落地的時(shí)候,workflow 應(yīng)該包含哪些流程節(jié)點(diǎn),取決于“你的”workflow 產(chǎn)品”要復(fù)現(xiàn)哪些現(xiàn)實(shí)世界的工作任務(wù)(以下簡(jiǎn)稱“任務(wù)”)。
以下兩種產(chǎn)品設(shè)計(jì)思路的方向是截然相反的,我們認(rèn)為應(yīng)該采取第一種:
現(xiàn)有任務(wù)的集合,再?zèng)Q定設(shè)計(jì)出哪些節(jié)點(diǎn)(node)。
先設(shè)計(jì)出節(jié)點(diǎn)(node),再思考我設(shè)計(jì)出的節(jié)點(diǎn)能夠完成哪些現(xiàn)實(shí)世界的任務(wù)。
(3)對(duì)“任務(wù)”進(jìn)行形式化定義
每一個(gè)設(shè)計(jì) workflow 產(chǎn)品的產(chǎn)品經(jīng)理,或多或少應(yīng)該都會(huì)遇到這樣的思索——現(xiàn)實(shí)世界中的任務(wù)千變?nèi)f化、數(shù)量繁多,到底應(yīng)該有哪些流程節(jié)點(diǎn)(node)?這些節(jié)點(diǎn)應(yīng)該發(fā)揮哪些功能?
歌詩(shī)合為事而作,設(shè)計(jì)流程節(jié)點(diǎn)固然要先明確整個(gè)產(chǎn)品要解決哪些任務(wù)。但是這還不夠,我們還需要對(duì)任務(wù)進(jìn)行形式化的表達(dá)。
當(dāng)我們能夠?qū)θ蝿?wù)進(jìn)行形式化表達(dá)的時(shí)候,就能夠思考對(duì)各種任務(wù)的中間過(guò)程狀態(tài)的拆解以及合并歸類的方法和策略,進(jìn)而設(shè)計(jì)出合理的流程節(jié)點(diǎn)。
如果沒(méi)有方法和策略作為指引,產(chǎn)品經(jīng)理很容易自然而然地從技術(shù)實(shí)現(xiàn)角度出發(fā),去思考目前能夠做出哪些流程節(jié)點(diǎn)。
經(jīng)過(guò)思考,我們得出了兩點(diǎn)結(jié)論,這兩點(diǎn)結(jié)論指引我們對(duì)于 workflow 產(chǎn)品的設(shè)計(jì):
workflow 的系統(tǒng)設(shè)計(jì)可以形式化地表達(dá)為 DFA 的構(gòu)造。
workflow 的流程節(jié)點(diǎn)設(shè)計(jì)是給定約束條件下的 DFA 狀態(tài)數(shù)量最小化問(wèn)題。
2 正文
2.1 現(xiàn)實(shí)世界的任務(wù)天然具有狀態(tài)屬性
我們先給出一些基本定義,然后結(jié)合具體例子來(lái)解釋這些定義:
-
現(xiàn)實(shí)世界的任何一個(gè)任務(wù),都天然具有狀態(tài)屬性。 -
任何一個(gè)任務(wù)至少包含 2 個(gè)以上的狀態(tài):初始狀態(tài)和結(jié)束狀態(tài),此外還可以擁有中間若干過(guò)程狀態(tài)。 -
當(dāng)任務(wù)處于結(jié)束狀態(tài)時(shí),我們認(rèn)為任務(wù)已完成。
假設(shè)我們面對(duì)一個(gè)“把大象放進(jìn)冰箱”的任務(wù),對(duì)于一般人而言,完成這個(gè)任務(wù)需要經(jīng)歷以下 5 個(gè)狀態(tài):
初始狀態(tài):任務(wù)初始狀態(tài)
中間狀態(tài) 1:冰箱門被打開(kāi)
中間狀態(tài) 2:大象被在冰箱里
中間狀態(tài) 3:冰箱門被關(guān)閉
結(jié)束狀態(tài):任務(wù)已完成(當(dāng)然,我們也可以把 中間狀態(tài) 3 和 結(jié)束狀態(tài) 合并為一個(gè)狀態(tài))
我們繼續(xù)以之前的 AI 保險(xiǎn)銷售任務(wù)為例,一般而言,可能會(huì)被劃分為以下中間狀態(tài):
狀態(tài) 1:AI 已發(fā)送開(kāi)場(chǎng)白
狀態(tài) 2:用戶已發(fā)送文字
狀態(tài) 3:判斷用戶輸入內(nèi)容是否包括全部所需要信息(年齡、性別、學(xué)歷……)
狀態(tài) 4:追問(wèn)用戶缺失信息
狀態(tài) 5:結(jié)合保險(xiǎn)知識(shí)庫(kù)向用戶推薦相關(guān)保險(xiǎn)產(chǎn)品
狀態(tài) 6:用戶已發(fā)送文字
狀態(tài) 7:判斷用戶是否表達(dá)購(gòu)買意愿
狀態(tài) 8:……
2.2 工作流編排的本質(zhì)是驅(qū)動(dòng)狀態(tài)的有序流轉(zhuǎn)
當(dāng)我們有了對(duì)任務(wù)狀態(tài)屬性的明確定義以后,可以發(fā)現(xiàn),對(duì)于任務(wù)的工作流編排,本質(zhì)上是通過(guò)使用一些工具(流程節(jié)點(diǎn) node),使得任務(wù)有序地抵達(dá)若干特定中間狀態(tài),最終達(dá)到結(jié)束狀態(tài)。
完成一個(gè)任務(wù)應(yīng)該需要經(jīng)歷多少個(gè)中間狀態(tài),取決于兩點(diǎn):
流程編排者對(duì)于 任務(wù)執(zhí)行過(guò)程 的理解
系統(tǒng)擁有哪些工具(流程節(jié)點(diǎn))
也就是說(shuō)不同的人對(duì)于任務(wù)的理解,以及他所能使用的工具,決定了他可能會(huì)將任務(wù)的執(zhí)行劃分為哪幾個(gè)步驟。
以“把大象放進(jìn)冰箱”任務(wù)為例,當(dāng)我們手里有【機(jī)械臂】和【起重機(jī)】 2 種工具時(shí),我們可能會(huì)劃分出以下三個(gè)中間狀態(tài):
用【機(jī)械臂】打開(kāi)冰箱門
用【起重機(jī)】把大象放進(jìn)冰箱
用【機(jī)械臂】關(guān)上冰箱門
而當(dāng)我們擁有【機(jī)械臂】、【起重機(jī)】和【威震天】一共 3 種工具時(shí),我們可能只使用威震天這一個(gè)工具,直接向威震天發(fā)送命令“幫我把大象放進(jìn)冰箱”,而不需要關(guān)心威震天的具體執(zhí)行細(xì)節(jié)。
最極端的理想情況下,假設(shè)我們有一個(gè)【萬(wàn)能助手】工具,可以端到端地完成用戶交代所有任務(wù),那么整個(gè)系統(tǒng)不需要存在中間狀態(tài),只有初始狀態(tài)和結(jié)束狀態(tài)。
2.3 workflow 系統(tǒng)是一個(gè)確定有限自動(dòng)機(jī)
-
有限狀態(tài)集合 :給定任務(wù)集合 (包括初始狀態(tài)、中間狀態(tài)、結(jié)束狀態(tài))所包含狀態(tài)的有限集合。 -
有限流程節(jié)點(diǎn)集合 :workflow 產(chǎn)品所提供的流程節(jié)點(diǎn)的集合。 -
狀態(tài)遷移函數(shù) δ : ,狀態(tài)遷移函數(shù)的值是狀態(tài)集合 的子集。遷移函數(shù)定義了在經(jīng)過(guò)流程節(jié)點(diǎn)的處理后,workflow 如何從一個(gè)狀態(tài)遷移到另一個(gè)狀態(tài)。 -
初始狀態(tài) :workflow 的初始狀態(tài), -
結(jié)束狀態(tài)集合 :任務(wù)的結(jié)束狀態(tài)集合,
在自動(dòng)機(jī)理論中,這樣的五元組表達(dá)是一個(gè)自動(dòng)機(jī)。更進(jìn)一步,如果我們認(rèn)為一個(gè)流程節(jié)點(diǎn)在內(nèi)部配置不同時(shí),可以被當(dāng)做不同的流程節(jié)點(diǎn),那么這是一個(gè)確定有限自動(dòng)機(jī)(DFA)。
2.4 流程節(jié)點(diǎn)設(shè)計(jì)是給定約束條件下的最優(yōu)化問(wèn)題
workflow 產(chǎn)品的核心設(shè)計(jì)內(nèi)容是流程節(jié)點(diǎn)的設(shè)計(jì)以及相關(guān)交互,從產(chǎn)品角度,在能夠完成任務(wù)集合 的前提下,流程節(jié)點(diǎn)設(shè)計(jì)追求的目標(biāo)應(yīng)該是「盡可能簡(jiǎn)單的流程編排步驟」——對(duì)于一個(gè)需要完成的任務(wù),編排者能夠比較快速地使用系統(tǒng)提供的流程節(jié)點(diǎn)進(jìn)行搭建。
極端理想情況下,每類任務(wù)都能用一個(gè)流程節(jié)點(diǎn)(相當(dāng)于萬(wàn)能 agent)搞定,這樣對(duì)于用戶的學(xué)習(xí)和使用成本是最低的。
如果我們用形式化的表達(dá)方式,這個(gè)問(wèn)題應(yīng)該等價(jià)于:在給定任務(wù)集合 的情況下,通過(guò)設(shè)計(jì)流程節(jié)點(diǎn)集合 ,使得 DFA 中的狀態(tài)集合 的狀態(tài)數(shù)量 最小。
很幸運(yùn),自動(dòng)機(jī)理論已經(jīng)給我們提供了標(biāo)準(zhǔn)的區(qū)分表算法 (Myhill-Nerode 定理)來(lái)進(jìn)行 DFA 狀態(tài)數(shù)最小化:通過(guò)定義狀態(tài)的不可區(qū)分(indistinguishable)概念,來(lái)將不可區(qū)分的狀態(tài)合并為一個(gè)狀態(tài),達(dá)到減小狀態(tài)數(shù)量的目的。
算法 區(qū)分表最小化 DFA
輸入:DFA (Q, Σ, δ, q0, F)
輸出:最小化的 DFA
1. 初始化區(qū)分表 T 為 |Q| x |Q| 的布爾矩陣,所有條目初始為 false
2. 對(duì)于每個(gè)狀態(tài)對(duì) (p, q):
如果 p ∈ F 且 q ? F 或 p ? F 且 q ∈ F:
將 T[p, q] 設(shè)為 true // 標(biāo)記 (p, q) 為可區(qū)分
3. 重復(fù)直到?jīng)]有更多條目被標(biāo)記:
對(duì)于每個(gè)未標(biāo)記的狀態(tài)對(duì) (p, q) 和每個(gè)符號(hào) c ∈ Σ:
令 δ(p, c) = p' 和 δ(q, c) = q'
如果 T[p', q'] 被標(biāo)記:
將 T[p, q] 設(shè)為 true // 標(biāo)記 (p, q) 為可區(qū)分
4. 構(gòu)建最小化 DFA 的狀態(tài)集合 Q':
初始化 Q' 為 ?
使用未標(biāo)記的狀態(tài)對(duì)構(gòu)建等價(jià)類,每個(gè)等價(jià)類選擇一個(gè)代表狀態(tài)
5. 設(shè)定最小化 DFA 的初始狀態(tài) q0' 為 q0 所在等價(jià)類的代表狀態(tài)
6. 設(shè)定最小化 DFA 的接受狀態(tài)集合 F' 為所有包含至少一個(gè)接受狀態(tài)的等價(jià)類的代表狀態(tài)
7. 定義最小化 DFA 的狀態(tài)轉(zhuǎn)移函數(shù) δ':
對(duì)于每個(gè)等價(jià)類的代表狀態(tài) r 和每個(gè)符號(hào) c ∈ Σ:
令 s := δ(r, c)
令 r' 為 r 所在等價(jià)類的代表狀態(tài)
令 s' 為 s 所在等價(jià)類的代表狀態(tài)
設(shè)定 δ'(r', c) = s'
8. 返回最小化的 DFA (Q', Σ, δ', q0', F')
當(dāng)然實(shí)際情況可能會(huì)更復(fù)雜,不可能完全按照算法策略進(jìn)行優(yōu)化,因?yàn)榻o定任務(wù)集合 并不是可以完全枚舉的,但 Myhill-Nerode 定理仍然可以給產(chǎn)品設(shè)計(jì)帶來(lái)一些啟發(fā)。
比如在給定業(yè)務(wù)場(chǎng)景下,假如我們發(fā)現(xiàn),知識(shí)檢索節(jié)點(diǎn)處理完成的狀態(tài),和 LLM 節(jié)點(diǎn)處理完成的狀態(tài),是不可區(qū)分的,那么它們可以合并成一個(gè) RAG 節(jié)點(diǎn),通過(guò)對(duì)基礎(chǔ)的組件進(jìn)一步抽象,達(dá)到降低使用門檻的目的。
3 結(jié)論與展望
3.1 結(jié)論
同時(shí),借助自動(dòng)機(jī)理論中的 DFA 狀態(tài)數(shù)最小化算法,我們也給出了優(yōu)化節(jié)點(diǎn)的策略參考。
3.2 展望
展望未來(lái),我們認(rèn)為 workflow 的以下方向仍然有提升和改進(jìn)空間:
(1)降低 workflow 學(xué)習(xí)和使用成本
包括兩方面:
一方面,支持通過(guò)自然語(yǔ)言描述的方式先創(chuàng)建一個(gè)工作流的雛形(類比于當(dāng)下 GPTs 產(chǎn)品自動(dòng)生成 prompt),然后允許用戶在其基礎(chǔ)上二次編輯修改。
另一方面,支持通過(guò)自然語(yǔ)言描述的方式,創(chuàng)建自定義流程節(jié)點(diǎn),其效果約等于多智能體的工作流編排。
(2)關(guān)于成環(huán)
一個(gè)很有意思的現(xiàn)象是,目前市面上的產(chǎn)品,可能是出于擔(dān)心死循環(huán)或者其他原因,在工作流的編排設(shè)計(jì)上不支持成環(huán)。
我們認(rèn)為允許成環(huán)是有必要的,并且利大于弊的,對(duì)于一個(gè) DFA 而言如果不允許其成環(huán),那么它的能力一定是大打折扣的,而且有很多現(xiàn)實(shí)場(chǎng)景就是需要循環(huán)迭代的(e.g.讓 LLM 生成正確的代碼),做好相應(yīng)的兜底措施就好。
(3)人類在工作流中的參與和干預(yù)
當(dāng)前 LLM 的 planning 能力還不夠強(qiáng),所以一部分的 planning 工作仍然需要開(kāi)發(fā)人員/業(yè)務(wù)專家來(lái)承擔(dān),允許人類在適當(dāng)?shù)臅r(shí)候參與進(jìn)來(lái),指出 LLM 的錯(cuò)誤或者下一步應(yīng)該采取的行動(dòng)。
舉個(gè)例子:當(dāng)工作流執(zhí)行到某一中間狀態(tài)時(shí),只要人類專家表達(dá)對(duì)上一狀態(tài) LLM 的生成結(jié)果不滿意,可以攜帶專家的修改意見(jiàn),返回到上一狀態(tài)讓 LLM 對(duì)之前的輸出進(jìn)行修正。
(4)多模態(tài) & 動(dòng)態(tài)交互
我們上述討論的一些場(chǎng)景,以及大模型實(shí)際在企業(yè)內(nèi)落地的一些復(fù)雜任務(wù),都會(huì)要求比較復(fù)雜的交互,比如報(bào)告生成任務(wù),可能涉及到版本的回退、某一特定章節(jié)的修改等等場(chǎng)景。
顯然,目前對(duì)話的交互形式已經(jīng)無(wú)法承載復(fù)雜的工作任務(wù),我們需要繼續(xù)探索與 AI 的最佳交互方式。
4 致謝
本文靈感來(lái)源于 2017 Fall 臺(tái)灣清華大學(xué)資訊工程學(xué)系何宗易教授《Formal Language》課程,這并不是門常見(jiàn)的課,在大陸往往會(huì)放在編譯原理課程的前半部分,介紹形式語(yǔ)言與自動(dòng)機(jī)相關(guān)內(nèi)容。事實(shí)上我當(dāng)時(shí)并不知道這門課是干什么的,聽(tīng)起來(lái)像是學(xué)正則表達(dá)式的水課就稀里糊涂去學(xué)了。
老實(shí)說(shuō)涉及的理論有點(diǎn)枯燥,感謝何教授的個(gè)人魅力,讓我在若干年后思考 workflow 產(chǎn)品設(shè)計(jì)時(shí),依然能想起那些在炎炎夏日里畫狀態(tài)機(jī)的日子。
