GPTs Agent 發展的意義與目標
內文提及我對 GPTs Agent 發展的看法,有興趣可點我看看全文。
讓 GPTs 開始學會使用工具
請試想,我們人類之所以強大,是因為我們開始學會使用工具;而 GPTs 提供了 Actions 的功能,讓 GPTs 能夠像我們人類,開始拿起工具。⬇️
同樣的,當 GPTs 學會使用工具後,便能使它更精準與快速的解決問題。
以中油油價試算為例:
在我們還沒有讓 GPT 取用工具時,詢問油價它所提供的計價結果如下圖:
在使用 GPT3 的情況下,它只能簡單的回覆一個比較攏統的答案。
而在使用 GPT4的情況,因為有 Bind 網路搜尋的加持下,答案是比較相近一些的,但仍存在的問題是資料來源不見得可考,而且資料來源每一次也不見得一致,如下圖⬇️(GPT所搜尋的資料源於 yahoo 新聞):
但自從 GPT 直上了 API 之後,每次考試都考100分呢⬇️。
由於從 API 所取得的資料來源是固定的,因此除非 API 的來源資料內容有誤,不然按理來說 GPT 能夠根據從 API 取回的資料,進一步理解並回應得更加快速與精確,其演示過程如下圖。
因此,有計算機能使用為什麼我們還要學怎麼打算盤!同理,如果需要花大把時間去訓練 GPTs 理解數學怎麼算,我們何不直接提供一個可以計算數學的 API 讓 GPT 來使用。
讓我們來看看 Actions 如何以最簡單的方式啟動
如果你還沒有建立過 GPTs 的經驗,可以先參考到篇文章。
以下我們直接切入主題
Actions:
為允許建立與外部 API 溝通的能力,可特製一些外部執行序,讓 GPTs 可以獲取一些外部資訊或是執行額外的連動操作。想做出與眾不同的 GPTs,這一步才是關鍵,API 能為 AI 開啟了與廣闊世界互動的大門,讓它能夠自如地接入、分析及應用海量數據,從而釋放出其真正的潛力。
首先,在建立好 GPTs 後:先點選 Actions 底下的創建新動作 ⬇️
進入功能後會看到以下畫面⬇️:
⬆️ 這邊總共有分為 1. Schema,2. Authentication 以及 3. Privacy Policy 三個資訊需要帶入:
先談 Schema :
這邊要放入 OpenAPI 格式的規範文件,如果你不清楚 OpenAPI 規範的用途,你大概就先將其理解為是一個工具的操作手冊 ,而這個操作手冊的內容是基於 OpenAPI 規範來撰寫,在內容會重點有寫到幾件事情。
一、APIs 的使用介紹。
二、到哪邊呼叫 APIs 。
三、叫這些 APIs 會需要帶入哪些參數。
四、這些 APIs 會回傳什麼結果。
你注意到了嗎。 Actions 跟 API 我都加了 s ..⬇️。
因為一個 GPTs 可以新增多個 Action ,而在每一個 Action 底下又可以同時控制多組的 API,每一組 API 都有一個獨立識別的功能名稱(operationId) ,如下圖 ⬇️。
⬆️ 以上只是先跟大家科普,但我們列舉的案例其實只會有一個 Action(1) -> Schema(1) -> API(1) -> operationId(1),只是先讓大家有個概念,知道 Actions 底下的拓展結構。
好,那重點接著我要去哪裡生這個 Schema 出來呢 ???
有三種方式你可以選擇。
一、自己寫 API ,然後再自己寫 OpenAPI 的文件。
二、用別人現成寫的 API,但是自己寫 OpenAPI 的文件。
三、到 SuperiorAPIs 平台直接使用別人現成寫的 API 與產生好的 OpenAPI 的文件。
我想用膝蓋頭想,也能感覺的出第三種最簡單,況且我們也可能只是先抱著想嘗試的心態來試試看。
⬆️ 呈上圖,首先我們先到 SuperiorAPIs平台上搜尋 "油價",先找看看有沒有現成的 API ,這邊我選用中油近期油價的 API 。
⬆️ 呈上圖,點選進入後,再點擊"點我測試"按鈕。
(此時如果還沒有註冊的話,會先跳出註冊視窗,請先進行註冊 - 這邊省略)
完成註冊後進入到測試畫面如下,第一步我們先測試呼叫 API :
- ⬆️ 因為本支 API 不需要帶入任何參數,因此這邊不需要輸入任何資訊。(假如你測試其它 API 有參數需要帶入,你可以試著點選現成的範例來模擬帶入參數)
- ⬆️ 點擊執行後向 API 發出請求。
- ⬆️ 為發出請求後所取得的結果。
再來就是比較重要的步驟。
- ⬆️ 切換到 OpenAPI 的頁籤。
- ⬆️ 這一個區塊的內容就是 API 的 OpenAPI 操作手冊。
- ⬆️ 點擊複製按鈕,複製這個區塊內的內容並貼到 GPTs Action 畫面上。(貼上後如下圖 ⬇️)
接下來我來簡單快速講一下這個 OpenAPI 裡面比較重要的資訊是你需要瞭解的(我有註解 # 的部分 ⬇️)。
{
"openapi": "3.1.0",
"info": {
"title": "中油近期油價", # GPTs 會讀取標題與描述來理解這整個 APIs 欲達成的功能目的
"description": "取得短期間內中油油價", # GPTs 會讀取標題與描述來理解這整個 APIs 欲達成的功能目的
"version": "1.0"
},
"servers": [
{
"url": "https://superiorapis-creator.cteam.com.tw"
}
],
"paths": {
# 這是呼叫 API 的路徑
"/manager/feature/proxy/ffd64785b548922b90bde654ca01492686/pub_d8d141815470134806551b64039f0f": {
"get": {
# 理論上方法內會定義輸入的參數 requestBody,但是因為這支 API 不需要帶任何參數,因此為空
# Response 為定義輸出的結果,GPTs 也會閱讀文件內的描述,來瞭解這些輸出的結果所代表的意思是什麼
"responses": {
"200": {
"description": "呼叫成功回傳",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties":{ },
"additionalProperties": {
"description": "各日期油價資訊",
"type": "array",
"items": {
"description": "各日期油價資訊",
"type": "object",
"properties": {
"title": {
"alias": "油品名稱",
"description": "油品名稱",
"type": "string"
},
"price": {
"alias": "價格",
"description": "價格",
"type": "number"
}
},
"required": [
"title",
"price"
]
}
}
}
}
}
},
"400": {
"description": "呼叫失敗",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"alias": "狀態",
"description": "呼叫失敗狀態",
"type": "integer"
},
"error_msg": {
"alias": "錯誤訊息",
"description": "錯誤訊息",
"type": "string"
}
},
"required": [
"status",
"error_msg"
]
}
}
}
}
},
"description": "取得中油近期油價。",
"operationId": "cpc_oil_price", #這個是最重要的,也是 GPTs 用來識別要呼叫哪一支 API 的時候需要使用到的
"deprecated": false
}
}
}
}
以上尤其是 “operationId”,很重要所以要說三遍。operationId 就像是我們的名字一樣,由於 GPTs 不一定清楚要在什麼情況下呼叫 API, 或是有很多 支 API 但 GPTs 並不清楚要呼叫哪一支 ,所以在設定 Instructions 的時候,就可以明確的告訴 GPTs ,在某某情況下請幫我呼叫 “ 某某某 {operationId} ” API 來完成什麼事情 … 這樣他才能明確的知道要呼叫誰。
OpenAPI 貼好後,再來我們看到 Authentication。
Authentication :當我們呼叫 API 的時候需要有一個 token (權杖),來進行通關,因此我們先回到 SuperiorAPIs 的畫面上取得權杖。 ⬇️
⬆️ 呈上圖,點擊權杖的複製按鈕後,將其貼回到 GPTs 的 Authentication 設定當中,如下圖 ⬇️:
- ⬆️ 先點選 Authentication 的設定 icon。
- ⬆️ 選擇 API Key。
- ⬆️ 貼上剛剛在 SuperiorAPIs 上所複製的 token。
- ⬆️ Auth Type 選擇 Custom 。
- ⬆️ 輸入”token” 文字。
- ⬆️ 點選 Save 儲存。
完成以上動作後,我們可以先簡單測試看看 API 是否能正常的運作。
- ⬆️ 點選 Test 按鈕,開始進行測試。
- ⬆️ 回傳取得 API 的結果內容。
最後一步是貼上 Privacy Policy,你可能會想這個隱私權不貼行不行?...
是沒有不行,但如果你沒有貼,GPTs 就不會允許你公開發佈,所以建議還是要貼一下。
首先,我們先回到 SuperiorAPIs 的畫面上 ⬇️。
⬆️ 呈上圖,我們在隱私的欄位上點選複製按鈕。
再次回到 GPTs 設定畫面並貼上 ⬆️。
最後,再重新到外部測試一次 ⬇️!
搞定,打完收工!
SuperiorAPIs平台上目前提供了許許多多的 API 可供免費測試使用,GPTs 可直接在平台上快速介接這些 API 應用,對於 Actions 又愛又恨又不知道從何下手的捧友們,可以趕緊來試試看,幫你的 GPTs 武裝上雷神之槌吧。