Dify搭建AI圖片生成助手中的坑!
使用 Dify 搭建 AI 圖片生成助手并不是什么難事,而且不需要你會(huì)編程知識(shí),也能輕松實(shí)現(xiàn)。
但是,Dify 在搭建 AI 圖片生成助手的過程中會(huì)遇到很多坑,例如以下這些:
- 有些組件隨著時(shí)間的推移,已經(jīng)不能正常調(diào)用了;
- 有些組件在國(guó)內(nèi)需要魔法才能使用;
- 有些組件需要復(fù)雜的本地部署才能正常調(diào)用;
- 有些組件雖然能用,但生成的速度、成本、質(zhì)量,是無法應(yīng)用于生產(chǎn)環(huán)境的。
所以,接下來本文就帶你來避開這些坑。
1.搭建AI圖片生成助手
在 Dify 中,搭建 AI 圖片生成助手的步驟主要分為以下幾步:
- 添加“文生圖”組件(這一步有很多坑)。
- 獲取組件 API Key,通常需要去官網(wǎng)注冊(cè)賬號(hào),申請(qǐng) API Key。
- 在 Dify 中創(chuàng)建“Agent”應(yīng)用。
- 添加提示詞。
- 添加“文生圖”工具。
- 編寫提示詞,生成圖片。
接下來我們分別來看。
2.添加文生圖組件
所謂“文生圖”組件,指的是根據(jù)文字生成圖片的組件(工具),Dify 中提供的和“圖片”有關(guān)的插件如下:
這些組件大致可以這樣分類:
- 本地模型
- 云端模型
a.需要魔法
b.不需要魔法
當(dāng)然,其中本地模型因?yàn)椴渴鹇闊晕覀冞@里不會(huì)使用(但企業(yè)級(jí)應(yīng)用為了考慮數(shù)據(jù)隱私性可能會(huì)用),需要魔法的云端模型我們也不會(huì)用,執(zhí)行速度慢,并且對(duì)于小白用戶不友好。所以最符合預(yù)期的模型為不需要魔法的云端大模型。
不需要魔法的(好用一點(diǎn)的)云端大模型有以下這些:
- Doubao:字節(jié)旗下大模型,非官方維護(hù)插件,對(duì)使用者來說無影響。
- 智普 AI:清華團(tuán)隊(duì)開發(fā)的國(guó)內(nèi)知名大模型,并且智普 AI 提供了可以免費(fèi)生成圖片的大模型(生成圖片效果一般)。
- 訊飛星火:訊飛公司旗下生成圖片的大模型。
- Stability:國(guó)際知名圖片生成大模型,不需要魔法可調(diào)用,但不支持中文提示詞,以及只為新用戶提供了 25 積分(一次圖片生成大概會(huì)消耗 4 積分)。
(1)避坑硅基流動(dòng)(SiliconFlow)
有人這里會(huì)說生成圖片為什么不選擇硅基流動(dòng)(SiliconFlow)啊?它支持 Flux 和 Stable Diffusion 都是圖片生成屆注明的大模型,如下圖所示:
當(dāng)然,我剛開始的時(shí)候也是這么想的,把 SiliconFlow 插件添加上,申請(qǐng)一個(gè) API Key 可以選擇調(diào)用多個(gè)大模型,看起來是很美好的時(shí)候。
但是當(dāng)我嘗試的時(shí)候,發(fā)現(xiàn)這兩種圖片生成的大模型壓根就調(diào)用不了,起初我以為是配置權(quán)限或 API Key 填寫的某個(gè)環(huán)節(jié)出現(xiàn)了問題,各種折騰,到最后發(fā)現(xiàn)效果還是一樣的,完全不用了。
于是就 Google 了一把,發(fā)現(xiàn)了問題,原來是早些時(shí)候確實(shí)是能正常調(diào)用的,但是在今年 2 月份,硅基流動(dòng)為了規(guī)范化運(yùn)營(yíng),已經(jīng)把很多大模型給下線了,其中也包括咱們要使用的 Flux 和 Stable Diffusion,這是不能調(diào)用的關(guān)鍵,但 Dify 中的插件并沒有將這兩個(gè)工具去掉,所以調(diào)用就會(huì)出現(xiàn)各種奇怪的報(bào)錯(cuò)信息,如下圖所示:
(2)推薦圖片模型
不同的使用場(chǎng)景,推薦使用的圖片模型是不同的,例如以下這些:
- 如果對(duì)生成圖片的成本比較敏感:可以使用智普 AI 的免費(fèi)文生圖的模型。
- 如果對(duì)生成圖片的質(zhì)量要求比較高:建議使用 Doubao 文生圖模型,Doubao 3.0 版本之前生成圖片的質(zhì)量很差,但 3.0 版本之后,不知道是不是和即夢(mèng) AI 整合了,視覺生成質(zhì)量有一個(gè)很多的提升,并且也為新用戶送 500 次的免費(fèi)調(diào)用次數(shù),開發(fā)環(huán)境夠用了。但在調(diào)用插件的時(shí)候也有一些坑,需要注意。
3.調(diào)用Doubao文生圖工具
調(diào)用 Doubao 圖片生成有幾個(gè)坑,這個(gè)需要給大家詳細(xì)說一下,不然很容易出錯(cuò)。
首先在插件市場(chǎng),安裝 Doubao 插件:
之后是去 Doubao 平臺(tái)開通圖片生成權(quán)限和添加生成 API Key,這兩個(gè)步驟都很容易出錯(cuò)。
插件提供的訪問地址不對(duì),一定要去火山方舟平臺(tái),也就是這個(gè)地址:https://console.volcengine.com/ark/region:ark+cn-beijing/openManagement
我們需要以下三步:
實(shí)名認(rèn)證完成之后,一定是選擇下面欄目并開通服務(wù):
接下來是容易出錯(cuò)的地方,當(dāng)你點(diǎn)擊獲取 API Key 有可能會(huì)到這個(gè)地址,但這個(gè)地址不對(duì)(是火山方舟不是火山引擎):
如果獲取的是這個(gè)地方的 API Key 就會(huì)在生成調(diào)用的時(shí)候,提示 401 沒有權(quán)限,正常的操作是點(diǎn)擊上面的“方舟大模型專用 API Key”,進(jìn)入到這個(gè)頁面,點(diǎn)擊創(chuàng)建 API Key 才行:
4.Dify創(chuàng)建Agent編排任務(wù)
創(chuàng)建 Agent 應(yīng)用:
“
什么是 Agent?
Agent 是一種模擬人類行為和能力的 AI 系統(tǒng),它通過自然語言處理與環(huán)境交互,能夠理解輸入信息并生成相應(yīng)的輸出。Agent 還具有 "感知" 能力,可以處理和分析各種形式的數(shù)據(jù)。此外,Agent 能夠調(diào)用和使用各種外部工具和 API 來完成任務(wù),擴(kuò)展其功能范圍。這種設(shè)計(jì)使 Agent 能夠更靈活地應(yīng)對(duì)復(fù)雜情況,在一定程度上模擬人類的思考和行為模式。
因此,很多人都會(huì)將 Agent 稱為“智能體”。
(1)撰寫提示詞
提示詞(Prompt)是 Agent 的靈魂,直接影響到輸出的效果。通常來說越具體的提示詞輸出的效果越好,但是過冗長(zhǎng)的提示詞也會(huì)導(dǎo)致一些負(fù)面效果。
調(diào)整提示詞的工程,我們稱之為提示詞工程(Prompt Engineering)
在本次實(shí)驗(yàn)中,你不必?fù)?dān)心沒有掌握提示詞工程,我們會(huì)在后面循序漸進(jìn)地學(xué)習(xí)它。
讓我們從最簡(jiǎn)單的提示詞開始:
根據(jù)用戶的提示,使用工具繪畫指定內(nèi)容。
用戶每次輸入命令的時(shí)候,Agent 都會(huì)知曉這樣的系統(tǒng)級(jí)的指令,從而了解要執(zhí)行用戶繪畫的任務(wù)的時(shí)候需要調(diào)用一個(gè)叫 Doubao 的工具進(jìn)行繪圖。
(2)添加繪圖工具
(3)測(cè)試圖片生成
5.發(fā)布
點(diǎn)擊右上角的發(fā)布按鈕,發(fā)布后選擇運(yùn)行就可以獲得一個(gè)在線運(yùn)行的 Agent 的網(wǎng)頁。
復(fù)制這個(gè)網(wǎng)頁的 URL,可以分享給其他好友使用。
6.優(yōu)化:指定圖片風(fēng)格
我們可以在用戶輸入的命令中加上畫風(fēng)的指令,例如:二次元風(fēng)格,畫一個(gè)女孩,手中拿著一本打開的書
但是如果我們希望風(fēng)格默認(rèn)都是二次元風(fēng)格呢,那么我們加在系統(tǒng)提示詞里就行了,因?yàn)槲覀冎傲私獾较到y(tǒng)提示詞是每次執(zhí)行用戶命令都會(huì)知曉的,優(yōu)先級(jí)更高。
根據(jù)用戶的提示,使用工具繪畫指定內(nèi)容,畫面是二次元風(fēng)格
7.優(yōu)化:拒絕某些不當(dāng)請(qǐng)求?
在許多業(yè)務(wù)場(chǎng)景中,我們需要避免輸出一些不合理的內(nèi)容,但是 LLM 很多時(shí)候比較 “傻”,用戶下指令時(shí)會(huì)照做不誤,即使輸出的內(nèi)容是錯(cuò)的,這種模型為了努力回答用戶而編造虛假內(nèi)容的現(xiàn)象稱為模型幻覺(Hallucinations),那么我們需要讓模型必要的時(shí)候拒絕用戶的請(qǐng)求。
此外,用戶也可能提一些和業(yè)務(wù)無關(guān)的內(nèi)容,我們也需要讓 Agent 這個(gè)時(shí)候拒絕請(qǐng)求。
我們可以使用 markdown 格式給不同的提示詞進(jìn)行劃分,將上述教 Agent 拒絕不合理內(nèi)容的提示詞寫到 “約束” 標(biāo)題下。當(dāng)然,這樣的格式僅僅是為了規(guī)范化,你可以有自己的格式。
## 任務(wù)
根據(jù)用戶的提示,使用工具繪畫指定內(nèi)容,畫面是二次元風(fēng)格。
## 約束
如果用戶在請(qǐng)求和繪畫無關(guān)的內(nèi)容,回復(fù):“對(duì)不起,我不明白你在說什么”
例如,我們嘗試提問:今晚吃什么
在一些更正式的業(yè)務(wù)場(chǎng)景中,我們可以調(diào)用敏感詞庫(kù)來拒絕用戶的請(qǐng)求。
在添加功能 - 內(nèi)容審查中添加關(guān)鍵詞 “晚飯”,當(dāng)用戶輸入關(guān)鍵詞時(shí),則 Agent 應(yīng)用輸出 “對(duì)不起,我不明白你在說什么”。
小結(jié)
Dify 是一個(gè)入門簡(jiǎn)單,但用好比較難的技術(shù),這點(diǎn)和 Java 有點(diǎn)像,但沒關(guān)系,跟我一起,快速上手學(xué)習(xí) AI 技術(shù),避免踩坑。一起動(dòng)手試起來吧~