iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
生成式 AI

Python 新手的 AI 之旅:從零開始打造屬於你的 AI / LLM 應用系列 第 22

【Day22】Dify 工作流 (5):在 Dify 中使用「HTTP 請求」,並且把流程變成「工作流 (workflow)」!(貓貓狗勾猜測機器人)

  • 分享至 

  • xImage
  •  

前言

今天我們來用「HTTP 請求」節點,來做一個可以給我們狗狗 or 貓貓的機器人,由於這兩種問題 (dog or cat) 很類似,可以用「聚合器」來簡化流程,並且用變數分配器來記錄目前使用者得到的動物數量

在開始之前,先來介紹 http 請求是什麼吧!

HTTP request

當你在使用網路時,你的瀏覽器或應用程式會發送 HTTP 請求 (HTTP Request) 來得到網頁或其他資源。HTTP(超文本傳輸協定)是一種用於在客戶端和伺服器之間進行通信的協議

HTTP 定義了一些不同的請求方法,常用的方法包括:

  • GET :從伺服器獲取資源。這是最常見的請求方法。
  • POST :將資料發送到伺服器 (例如,提交表單數據)。
  • PUT :更新伺服器上的資源。
  • DELETE :刪除伺服器上的資源。

Cat as a service 為例,觀察他的文件

點擊 Random cat 按鈕,瀏覽器會帶你到 https://cataas.com/cat 這個網站,正確來說應該是「向 https://cataas.com 這個 url 的 /cat 位置使用 GET 方法發出請求 (request)」

GET 的參數會顯示在 URL 上 (param);而 POST 的參數會放在 request body 中

使用 postman 測試

開發一個 API 之後,如果你用的不是 FastAPI 或者沒有用 swagger UI,可能會需要用 curl 來測試 API。但是有 GUI 誰不用呢?Postman 可以讓你很方便快速的測試寫好的 API,或是其他人寫好的 API

https://www.postman.com/ 上註冊一個帳號,然後用剛剛貓咪的例子來測試。你也可以在 vscode 的擴充套件安裝使用,以下會使用 vscode 的 postman 來測試,但操作起來是差不多的。

新增一個 HTTP Request

填入剛剛的貓咪 url

按下送出,就可以得到一隻貓貓了喔

Dify 的 HTTP 請求

建立一個空白的工作流,新增一個 HTTP 請求節點

這邊填入狗勾 API Dog CEO 的隨機狗勾 URL https://dog.ceo/api/breeds/image/random

記得要把直接回覆的內容改成 HTTP 請求的 "file"

測試一下會發現沒有東西ㄚ??

這時候,就可以用 Postman 來測試了,測試後發現原來他的 random 不是直接給一張圖,而是給你一張圖的 URL,我們要再去對這張圖請求一次

所以正確的流程應該會像這樣,先取的隨機的圖片 url -> 透過 python 程式碼取得 url -> 再透過這個取得的圖片 url 取得狗勾圖片

這是程式碼的內容,其實就是根據 postman 測試出來的結果,去取得 "messge" 這個 value

import json

def main(response: str) -> dict:
	obj = json.loads(response)
	url = obj['message']
	return {
		"url": url
	}

然後在第二個 HTTP request 這邊,填入上一個節點取出來的 url

測試一下,成功了!

工作流 (workflow)

接下來,我們把這個狗勾請求的流程變成一個工作流 (workflow),方便之後使用。工作流 (Workflow) 和對話流 (Chatflow) 最大的差別就是工作流不是為了聊天所設計的,也就是說,一個工作流就像是一個 API 一樣,給定指定的參數,你就會拿指定的回覆。更重要的是,工作流可以獨立變成一個節點給其他 Chatflow 使用

建立工作流

新增一個工作流

進到工作流之後,會發現空空如也,也沒有「直接回覆」了

取而代之的是一個「結束」節點,這個節點必須設定最後結束要輸出的東東

我們就把剛剛做好的 Dog CEO API 串進來吧,目前結束節點不知道為何無法直接輸出圖片,但也沒關係,只要可以把複雜的節點變少,那就是值得的!

然後在右上角點選「發佈為工具」

設定的部分,因為我們目前沒有任何指定的輸入 (明天才會用到),所以這邊只要取好名字即可

導入工作流

修改原本的 Chatflow,注意這邊我們意處理回傳回來的 JSON 格式

模板轉換程式碼 (取得 url)

測試結果

你可能會想說,原本就是五個節點現在也是五個節點,幹嘛額外弄一個工作流出來?答案是:因為我希望做的是描述狗勾的外型就可以拿到狗勾的圖片,那現在這樣隨機拿狗勾照片的方法肯定行不通,這個工作流會比想像中更加複雜,為了降低 Chatflow 的複雜度,我們不得不將不同功能區塊模組化...blablabla,明天就知道了啦XD

小結

今天沒有太多生成式 AI 的內容,主要是讓大家認識一下 HTTP 請求,串接除了 OpenAI 以外的 API。明天我會延續今天的主題做一個「狗狗貓貓猜測的機器人」,先判斷使用者問的是狗還是貓進行問題分類,再根據品種去找出可能的狗勾們,並且使用「聚合器」來簡化流程,期待一下吧~


上一篇
【Day21】Dify 工作流 (4):用「模板轉換」和「代碼執行」來操作 object
下一篇
【Day23】Dify 工作流 (6):用「變量聚合器」來簡化流程!(貓貓狗勾猜測機器人)
系列文
Python 新手的 AI 之旅:從零開始打造屬於你的 AI / LLM 應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言