此次會(huì)連載一套 AI Agent 構(gòu)建的系列,主要分為三部分,上篇是速通 AI Agent 構(gòu)建的工作流基礎(chǔ),本篇?jiǎng)t是通過 ComfyUI 作為案例來復(fù)盤如何快速上手工作流平臺(tái),給大家提供一些思路與竅門,下篇?jiǎng)t是借助 Agent 平臺(tái)構(gòu)建一個(gè) AI Agent 案例,本系列意圖主要是幫助大家貫通工作流的搭建形式,并嘗試為自己搭建一些可用的 AI 助手,或是提供構(gòu)建的方法指引。
上期回顧:
不得不提的廢話
就目前市面上的圖像生成平臺(tái)真的是越來越強(qiáng)悍,就例如最新版本的 ChatGPT 4o、即夢(mèng) AI 等,不僅提示詞描述更簡(jiǎn)單了,圖像效果也越來越好,通過幾張簡(jiǎn)單的參考圖加需求說明,就可以馬上進(jìn)行高質(zhì)量的圖像融合、局部替換修復(fù)、風(fēng)格轉(zhuǎn)換、效果延展等,甚至即夢(mèng)已經(jīng)能夠處理中文以及文字效果了。
那你可能在想用 ComfyUI 做工作流上手案例還有必要么?有的!
原因是專業(yè)的業(yè)務(wù)場(chǎng)景需要專業(yè)且復(fù)雜的工作流或是 Agent 來實(shí)現(xiàn),我們學(xué)習(xí)和掌握的是一套可復(fù)用的思維或方法,而不局限于本次所用的 ComfyUI,在第三篇的案例構(gòu)建中,我也會(huì)用這套方法熟悉上手其他智能體平臺(tái)來搭建一個(gè) Agent 助手。
所以,通過學(xué)習(xí)和掌握復(fù)雜,只為更從容面對(duì)瞬息萬變的 AI 應(yīng)用。
清晰我們的構(gòu)建目標(biāo)是什么,業(yè)務(wù)背景是什么,需求會(huì)提供哪些數(shù)據(jù),要轉(zhuǎn)化成什么樣的結(jié)果,一切圍繞著目標(biāo)需求來拆解基本流程與尋求實(shí)現(xiàn)工作流的技術(shù)平臺(tái)。
例如我要構(gòu)建圖像生成的工作流,需求提供了圖像的風(fēng)格與主題內(nèi)容說明,那么結(jié)果肯定是將這些說明生成一張符合的圖像,若我們要通過一套工作流實(shí)現(xiàn),這個(gè)工作流平臺(tái)就必須具備文生圖的插件能力,例如基于 SD 圖像生成的 ComfyUI。
那么就基于圖像工作流 ComfyUI,我們來展開聊聊如何快速上手一款工作流平臺(tái)為我所用~
本質(zhì)是一套數(shù)字化的生產(chǎn)流程,所以先分析和明確實(shí)現(xiàn)目標(biāo)的基本工作或流程,以及對(duì)應(yīng)的起始到結(jié)束的數(shù)據(jù)轉(zhuǎn)化涉及到哪些加工步驟?中間至少需要哪些插件或 AI 模型的能力來實(shí)現(xiàn)轉(zhuǎn)化。
好比說老板畫了一張小狗的草圖,他想要我做一個(gè)工作流上色和完善圖像,給他一個(gè)二維卡通的狗狗圖片,那么基于 AIGC 的方法概念,我們簡(jiǎn)單思索一下,這個(gè)流程至少要有以下幾個(gè)節(jié)點(diǎn)過程;
Step1. 有一個(gè)風(fēng)格符合的大模型
Step2. 有插件能夠加載和識(shí)別草稿圖
Step3. 能夠輸入關(guān)鍵詞來指導(dǎo)圖像的基本要求
Step4. 能夠配置圖像規(guī)格的參數(shù)
Step5. 能夠基于以上數(shù)據(jù)生成期望的圖像
那么我們就可以根據(jù)這套基礎(chǔ)流程與插件訴求去匹配合適的工作流平臺(tái)了。
舉例我是做一套代碼托管部署,那么我就可以找代碼相關(guān)的工作流部署平臺(tái),若是 AI 智能體相關(guān)工作流就可以看看扣子、文心智能體平臺(tái)、百寶箱、Dify 這些,這些平臺(tái)會(huì)提供相應(yīng)的插件、工具或模型,我的選用標(biāo)準(zhǔn)主要就三個(gè)方面;
- 能夠滿足我的設(shè)計(jì)目標(biāo)或業(yè)務(wù)訴求(需求可行性)
- 有豐富可用的插件或 AI 模型(能力擴(kuò)展性)
- 友好的用戶體驗(yàn)與成本控制(體驗(yàn)與商業(yè)平衡)
經(jīng)過簡(jiǎn)單調(diào)研,若能夠滿足上面提到的三個(gè)方面,我們就可以進(jìn)一步的了解與體驗(yàn),并嘗試構(gòu)建或部署我們的業(yè)務(wù)。
一切從簡(jiǎn)單的部分開始,當(dāng)我們初次看到一團(tuán)雜亂的工作流時(shí),幾乎是勸退的,但所有的復(fù)雜也都是從簡(jiǎn)單一點(diǎn)一點(diǎn)豐富起來的,面對(duì)一個(gè)陌生的工作流時(shí),我們可以通過以下方法快速熟悉和掌握;
- 一套可運(yùn)行的基礎(chǔ)工作流程要包含哪些節(jié)點(diǎn)與參數(shù),如常見的起手式與結(jié)束式用哪些節(jié)點(diǎn)和設(shè)置,以及面對(duì)整個(gè)工作流的配置設(shè)置有哪些,有什么差異,那個(gè)更適合我們的業(yè)務(wù)需求(例如扣子具備單 Agent 的對(duì)話模式、多 Agent 的協(xié)同觸發(fā)模式、以及我正在使用應(yīng)用模式)。
- 節(jié)點(diǎn)連接的關(guān)系與條件是怎樣的,如輸入輸出的數(shù)據(jù)類型、參數(shù)、準(zhǔn)入準(zhǔn)出等,理解節(jié)點(diǎn)怎樣才能連接到一起并正確運(yùn)行起來(也就是上篇的工作流基礎(chǔ)速通篇所講的內(nèi)容)。
- 掌握各類節(jié)點(diǎn)插件的作用或類別,即不同節(jié)點(diǎn)的用途是什么,通常銜接在流程的哪些階段中,需要哪些必要的輸入輸出完善流程(通常各類節(jié)點(diǎn)或 AI 模型會(huì)有相應(yīng)的介紹說明,這些有必要了解一下)。
那么就用上面這套方法,讓我們?cè)囍焖偈煜ひ幌?ComfyUI 的基礎(chǔ)流程與插件能力吧~沒有電腦本地部署 ComfyUI 的可以試試這款線上的工作流平臺(tái)( https://www.liblib.art/modelinfo)
OK 回到正題,假若當(dāng)我們看到這個(gè)完整工作流時(shí),是不是虎軀一顫,心想這啥玩意兒?
但莫要慌張,讓我們逐一拿捏這套小小工作流,首先 ComfyUI 是基于 Stable Diffusion 的節(jié)點(diǎn)式工作流,因此任意工作流的基礎(chǔ)流程都應(yīng)該是基于以下這套編排關(guān)系來展開的;
那么我們把這些核心節(jié)點(diǎn)對(duì)應(yīng)找出來,如下,我們已經(jīng)在工作流面板中搜索出了基礎(chǔ)流程所需要的節(jié)點(diǎn)。
OK,那我們?cè)倮^續(xù)研究節(jié)點(diǎn)連接的關(guān)系與條件是怎樣的,我們可以觀察到,單個(gè)節(jié)點(diǎn)卡片的左右就是輸入輸出的字段,卡片中間就是要配置的參數(shù),是典型輸入輸出+數(shù)據(jù)配置的結(jié)構(gòu),有意思的輸入輸出的字段甚至用顏色做了類型區(qū)分,所以只要按照顏色就可以將節(jié)點(diǎn)之間連接起來就可以了(這使得連接關(guān)系更加簡(jiǎn)單易懂)。
這里我們快速連接了一下,仿佛已經(jīng)掌握了 ComfyUI 的基礎(chǔ)工作流,但是點(diǎn)擊運(yùn)行后報(bào)錯(cuò)了!
明眼人一看肯定就知道原因了,原來是有個(gè)節(jié)點(diǎn)缺少執(zhí)行的預(yù)設(shè)輸入配置,那么我們嘗試找一個(gè)“粉色”的“Latent”補(bǔ)充進(jìn)來再試試。
通過拖拽粉色缺失的輸入接口(平臺(tái)支持端口拖拽出來適用選項(xiàng)的窗口),我們直接添加了一個(gè)空的“Latent”,通過觀察參數(shù)設(shè)置,顯然這個(gè)粉色的“家伙兒”是用來設(shè)置圖像大小和批次的,并且這次也順利運(yùn)行了起來。
那么我們已經(jīng)掌握了最基礎(chǔ)的工作流搭建,以及理解了節(jié)點(diǎn)之間如何正確的連接與運(yùn)行的。這種方法的好處在于我們知道了 1+1=2 以后就可以直接引用,而不需要你去深度理解和解釋為什么 1+1=2,當(dāng)然了你要是想知道 ComfyUI 的基礎(chǔ)生成流程為什么要這樣,你可以自己在網(wǎng)絡(luò)上深度學(xué)習(xí)一下。
接著到第三趴,開始掌握不同的節(jié)點(diǎn)插件的用途與類型差異,并揭秘第一張雜亂工作流的概念與用途。
ComfyUI 的節(jié)點(diǎn)插件是相當(dāng)多的,并且隨著時(shí)間推移,還會(huì)越來越多,但不礙事兒,我們先從核心且高頻的節(jié)點(diǎn)下手;
面對(duì)各種節(jié)點(diǎn)先聊聊應(yīng)該在哪些流程階段使用,就 ComfyUI 平臺(tái)來說,可以洞察到每個(gè)節(jié)點(diǎn)都會(huì)用顏色將輸入輸出進(jìn)行標(biāo)記分類,拖拽輸入輸出端口后,還會(huì)浮窗顯示關(guān)聯(lián)條件的節(jié)點(diǎn),這就意味一個(gè)節(jié)點(diǎn)你不熟悉時(shí),添加到面板上并加上輸入輸出的節(jié)點(diǎn),基本上你就能知道這個(gè)節(jié)點(diǎn)應(yīng)該用到哪個(gè)階段上了,如下圖所示;
通過上圖可以看出這個(gè)“遮罩閾值”節(jié)點(diǎn)是在圖像相關(guān)節(jié)點(diǎn)后進(jìn)行工作的,并且相關(guān)的輸出節(jié)點(diǎn)都是橙色、紫色輸出作為結(jié)束,那么我們?cè)賲⒖蓟A(chǔ)的工作流節(jié)點(diǎn),是不是很容易就發(fā)現(xiàn)“遮罩閾值”節(jié)點(diǎn)是用作“關(guān)鍵詞”跟“K 采樣器”之間的階段呢。
那么節(jié)點(diǎn)使用階段的竅門說完,繼續(xù)深入一下核心的節(jié)點(diǎn)有哪些、它們有何用途、常用于哪些場(chǎng)景?請(qǐng)看以下我整理的說明表;
1. ComfyUI 的基礎(chǔ)核心節(jié)點(diǎn)
2. ComfyUI 的圖像控制與增強(qiáng)節(jié)點(diǎn)
3. ComfyUI 的條件控制節(jié)點(diǎn)
4. ComfyUI 的邏輯與流程控制節(jié)點(diǎn)
5. ComfyUI 的特殊功能節(jié)點(diǎn)
6. ComfyUI 的高頻節(jié)點(diǎn)參數(shù)配置參考
當(dāng)然了,這只是部分核心節(jié)點(diǎn)的信息整理,如果大家對(duì) ComfyUI 或這些節(jié)點(diǎn)有興趣,可以去“ https://comfy.icu/node/ ”上了解更多,或者通過 ComfyUI 工具對(duì)節(jié)點(diǎn)的分類來了解,就像下圖所示,這里不展開了。
然后在 SD 生圖的進(jìn)階使用中,ControlNet 是一個(gè)必學(xué)的進(jìn)階節(jié)點(diǎn),同樣也是一開始的工作流中出現(xiàn)過的節(jié)點(diǎn),還有印象嗎?那么這就來簡(jiǎn)單了解一番,為破解前面那張復(fù)雜工作流做準(zhǔn)備。
7. ControlNet 節(jié)點(diǎn)分類說明表
這些 ControlNet 模型可以幫助我們進(jìn)行圖像參考生成,但是對(duì)參考圖是有條件要求的,通常這些模型要配套相關(guān)的條件預(yù)處理器一起用,例如將圖像的黑白線稿提取出來,若你本身就是符合條件的黑白線稿圖,使用相關(guān)模型時(shí)也可以不再使用預(yù)處理器。
對(duì)這些 ControlNet 節(jié)點(diǎn)與用途效果想要深入了解朋友可以移步到此:GitHub - lllyasviel/ControlNet-v1-1-nightly: Nightly release of ControlNet 1.1
看到這里,你應(yīng)該對(duì) ComfyUI 基本的出圖流程有了認(rèn)識(shí),知道了有哪些核心節(jié)點(diǎn),不同節(jié)點(diǎn)之間應(yīng)該如何連接使用,以及知道如何通過添加上下級(jí)節(jié)點(diǎn)來分析出在哪些階段使用。
也許你的大腦已經(jīng)過載了,但是無礙,如果接下來你在案例中看到了不熟悉的節(jié)點(diǎn),你依舊可以翻閱前面的節(jié)點(diǎn)或插件介紹。
那么我們繼續(xù),重新回顧這個(gè)復(fù)雜的工作流,可以看出紫色部分是生圖的基礎(chǔ)節(jié)點(diǎn),基礎(chǔ)流程前后的黃色節(jié)點(diǎn)分別是一個(gè) Lora 跟一套圖像放大節(jié)點(diǎn),在關(guān)鍵詞跟 K 采樣器之間則還有一套灰色的節(jié)點(diǎn)任務(wù),讓我們逐一拆解;
Lora 節(jié)點(diǎn)采用的是一個(gè)可配合“Realistic Vison V5.1”寫實(shí)類大模型的毛絨效果 Lora,用途就是產(chǎn)生更細(xì)膩的毛絨效果;
圖像放大節(jié)點(diǎn)實(shí)際上由三個(gè)子任務(wù)構(gòu)成,核心節(jié)點(diǎn)是 圖像通過模型放大 (ImageUpscaleWithModel),功能是通過分塊處理的方式,逐步放大圖像,同時(shí)處理內(nèi)存不足的情況。
圖像通過模型放大節(jié)點(diǎn)需要由“放大模型加載器”來選定指定的放大模型,輸出部分通過觀察顏色是可以直接進(jìn)行圖像輸出的,但是為了產(chǎn)生更高清的圖像,輸出添加了一個(gè)“縮放節(jié)點(diǎn)”,它會(huì)基于“空 Latent”中設(shè)定的尺寸*縮放節(jié)點(diǎn)的縮放系數(shù) 2,最終產(chǎn)生一個(gè)高清二倍圖。
接著就剩這團(tuán)灰色的節(jié)點(diǎn)了,通過節(jié)點(diǎn)名稱,我們可以抓取到關(guān)鍵詞是“ControlNet”,可以觀察到這團(tuán)節(jié)點(diǎn)其實(shí)是通過“ControlNet 應(yīng)用 (舊版高級(jí))”節(jié)點(diǎn)實(shí)現(xiàn)與基礎(chǔ)流程接軌的,根據(jù)節(jié)點(diǎn)輸入輸出的顏色標(biāo)記,可以看出是在 CLIP 關(guān)鍵詞與 K 采樣器之間的階段工作的,并且有兩組“ControlNet 應(yīng)用 (舊版高級(jí))”節(jié)點(diǎn)串聯(lián)在一起,那么我們一組一組的來揭秘下;
經(jīng)過拆解,單組“ControlNet 應(yīng)用”的節(jié)點(diǎn)實(shí)際上由四個(gè)任務(wù)節(jié)點(diǎn)構(gòu)成,主要是完成 ControlNet 模型選取與參考圖加載處理,在前文 #掌握核心節(jié)點(diǎn)或插件/七/ControlNet 節(jié)點(diǎn)部分 介紹過所有 ControlNet 模型是有輸出條件的,因此需要將上傳的參考圖預(yù)處理成匹配的輸出條件,所以在“加載圖像”節(jié)點(diǎn)后就多了這么一個(gè)“PidNet 模糊線預(yù)處理器”,并且這個(gè)圖像預(yù)處理器是跟模型匹配的;
可以看見加載的 ControlNet 模型是“control_v11p_sd15_softedge”,這表示為適應(yīng)用 SD1.5 版本的 SoftEdge(軟邊緣),那么對(duì)應(yīng)可用的圖像預(yù)處理器則是“Pidinet”,可以提取圖像柔和的邊緣輪廓,而柔和的輪廓在圖像生成時(shí)則可以賦予 AI 更多發(fā)揮空間,不至于邊緣太生硬導(dǎo)致毛絨的效果不好;
當(dāng)我們解析完第一組 ControlNet 任務(wù)節(jié)點(diǎn)后,再來看第二組時(shí),似乎就簡(jiǎn)單很多了,結(jié)構(gòu)基本相似,模型采用了“control_v11fle_sd15_tile”,圖像預(yù)處理器采用了“Tile 平鋪預(yù)處理器”,這是一個(gè)分塊采樣器,可以在原有畫面的基礎(chǔ)上生成更好的細(xì)節(jié)或畫面質(zhì)量,用做提升毛絨效果的質(zhì)感,因?yàn)檫@些預(yù)處理器輸入輸出都是圖像,所以在輸出端添加了一個(gè)“預(yù)覽圖像”,這樣就可以方便我們看到預(yù)處理后的效果了。
那么再次打開這個(gè)完整的 ComfyUI 工作流,你又能看懂多少了?又或是有了什么新的疑問?
好啦,我來公布答案了!
「紫色域」其中有紫色標(biāo)記的節(jié)點(diǎn)即基礎(chǔ)工作流節(jié)點(diǎn),用做基本的文生圖;
CHECKPOINT 模型后掛載的黃色 Lora 模型用做生成特定的毛絨效果,結(jié)尾處黃色任務(wù)節(jié)點(diǎn)用做提升清晰度與圖像大??;
「暗紅域」+「綠色域」暗紅色的是兩組 ControlNet 任務(wù)節(jié)點(diǎn),用做獲取參考圖特征,兩組通過綠色的“加載圖像”節(jié)點(diǎn)從用戶設(shè)備本地獲取同一個(gè)參考素材,第一組采用 SoftEdge(軟邊緣)獲取參考對(duì)象的邊緣線稿,第二組分塊/模糊(tile/blur)任務(wù)節(jié)點(diǎn)則獲取圖像的特質(zhì);
最終這套工作流就可以實(shí)現(xiàn)毛絨效果的圖標(biāo)繪制了。
那么,有趣的是!
可以看見工作已經(jīng)運(yùn)行成功了,不過 ControlNet 應(yīng)用節(jié)點(diǎn)上的“VAE”輸入并沒有添加,可以猜測(cè)是給特殊模型用的,不過你也可以為此添加上主模型的“VAE”,最終工作流還是可以運(yùn)行的。
看到這里,如何快速學(xué)習(xí)和掌握一款工作流平臺(tái)的法子,我想你應(yīng)該有思路了,那么再繼續(xù)聊聊“編排與初步調(diào)試”與“能力擴(kuò)展與調(diào)試”。
基本上就是拆解任務(wù)的最小工作流,并嘗試將相關(guān)節(jié)點(diǎn)編排連接起來,對(duì)工作流運(yùn)行的基礎(chǔ)參數(shù)進(jìn)行設(shè)置完善,使得這個(gè)工作流能夠運(yùn)行起來,之后則是根據(jù)運(yùn)行的效果,對(duì)節(jié)點(diǎn)的參數(shù)進(jìn)一步的調(diào)整,或替換其他效果的任務(wù)節(jié)點(diǎn),概括一下就是像 OKRs 一樣把大目標(biāo)拆解成若干小任務(wù)或基礎(chǔ)流程,先把基礎(chǔ)工作流構(gòu)建起來并運(yùn)行起來,之后才開始考慮能力擴(kuò)展優(yōu)化等。
這個(gè)過程在前面的 #熟悉 ComfyUI 的基本流程 部分中也有體現(xiàn),還有印象嗎?
簡(jiǎn)單說就是根據(jù)目標(biāo)完善工作流的能力,并經(jīng)過測(cè)試驗(yàn)證,加強(qiáng)效果與穩(wěn)定性,并且可以根據(jù)工作需要不斷調(diào)整優(yōu)化工作流的能力,當(dāng)然了如果無法很好兼容新的訴求,那就建議新建一條;
還是以前面的案例為例,當(dāng)我們的基礎(chǔ)工作流跑起來后,就可以根據(jù)設(shè)計(jì)目標(biāo)進(jìn)行能力的擴(kuò)展與測(cè)試,經(jīng)過揭秘的工作流目標(biāo)就是能夠參考圖標(biāo)生成毛絨效果的圖標(biāo),那么這個(gè)能力擴(kuò)展與測(cè)試的過程如下;
那么到此,一套如何上手掌握工作流平臺(tái)的方法就說完了,這里我再幫大家整理和回顧一下,希望這些方法能夠被大家理解和應(yīng)用;
如果你對(duì)主流的 AI 工作流或智能體平臺(tái)不熟悉,那么你可用這套方法自己快速熟悉起來,如果你已經(jīng)比較熟悉且有自己的學(xué)習(xí)上手方法,那么直接期待下篇吧。
篇幅問題,下篇上案例,開始構(gòu)建我們的 Agent 牛馬~
復(fù)制本文鏈接 文章為作者獨(dú)立觀點(diǎn)不代表優(yōu)設(shè)網(wǎng)立場(chǎng),未經(jīng)允許不得轉(zhuǎn)載。
發(fā)評(píng)論!每天贏獎(jiǎng)品
點(diǎn)擊 登錄 后,在評(píng)論區(qū)留言,系統(tǒng)會(huì)隨機(jī)派送獎(jiǎng)品
2012年成立至今,是國(guó)內(nèi)備受歡迎的設(shè)計(jì)師平臺(tái),提供獎(jiǎng)品贊助 聯(lián)系我們
品牌形象設(shè)計(jì)標(biāo)準(zhǔn)教程
已累計(jì)誕生 726 位幸運(yùn)星
發(fā)表評(píng)論 為下方 6 條評(píng)論點(diǎn)贊,解鎖好運(yùn)彩蛋
↓ 下方為您推薦了一些精彩有趣的文章熱評(píng) ↓