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