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