ChatGPT賦能低代碼開發:打造智能應用的雙重引擎

摘要:本文摘自葡萄城低代碼產品活字格的資深用戶(格友超哥)所撰寫的文章:《驚歎表現!活字格+ChatGPT:低代碼開發智能應用的巨大潛力》

ChatGPT的functions函數使用方

自從OPENAI發佈了最新的GPT引擎gpt-3.5-turbo-0613之後,我就對它的functions參數很感興趣,利用GPT超強的語言理解能力,如果加上函數執行,我們就可以讓AI不再是聊聊天、回答問題了,甚至能夠直接幫我們完成工作任務。剛好今天週末,不如就動手試試,看能否達到我所想的效果。

開始之前,我們先要看一下官方文檔,看看這個functions,是個什麼神奇的參數,只有搞清楚了它的作用和原理,我們才知道如何利用它。

 

這是官方對Function calling的介紹,我們可以看到,目前支持gpt-3.5-turbo-0613和gpt-4-0613兩種引擎。

再看看functions參數的格式和屬性,我們可以看到,這裏我們向GPT定義了一個名爲"get_current_weather"的函數,並且在description中描述了這個函數的用途,在properties中,我們定義了兩個參數,location和unit,這是向GPT表明,你如果調用這個函數,需要向函數提供兩個參數,並且對兩個參數都進行了描述。

看懂了functions參數,我們大概知道了原理,其實並不複雜,我們通過定義一系列函數,告訴GPT函數是什麼時候用,做什麼用,需要什麼參數才能用等,GPT會根據與用戶的聊天信息自行判斷是否要“執行函數”。

爲什麼要給執行函數打上雙引號呢?事實上GPT肯定是不能直接執行函數的,因爲這只是個普通的HTTP請求,GPT也只是返回一個JSON格式的響應信息,那該如何實現執行函數的呢?

如何讓ChatGPT調用函數

要搞懂這個,我們還得看看GPT給我們返回的數據長什麼樣子。

上面是一個正常的聊天回覆信息,我們看到,message裏面只有role和content兩個屬性,另外還新增了一個屬性 finish_reason ,當它的值爲“stop”,說明此次的對話無需執行函數,也說明GPT並沒有調用函數的打算,接下來我們看看GPT打算調用函數時,會返回什麼?

我們發送“請問北京現在天氣怎麼樣”給GPT,看它的回答。

這裏可以明顯看到,finish_reason的值變成了“function_call”,開發人員通過判斷finish_reason的值,就可以知道GPT是否要調用函數。

這下豁然開朗了,我們通過回覆的內容,弄清楚GPT要調用什麼函數,然後拿到GPT幫我們獲取的參數,直接執行函數就可以了。

使用ChatGPT嵌入活字格

數據庫表和前端設計

下面我們來給活字格裝上AI的翅膀,我們先打開活字格9.0的版本,新建一個“訂單數據表”,並填充模擬數據,另外再建一張消息記錄表。

(訂單數據表)

(表字段)

然後新建一個頁面,製作一個簡單類似搜索的頁面,運行看看效果。


(運行效果)

這個頁面用來與用戶進行自然語言交互,前端我們暫時做到這兒。

後端設計

接下來設計後端,把ChatGPT對接部分做好。

爲了方便使用,我提前將GPT的API封裝成了插件,原理跟上面官方所說一致。

(封裝後的插件)

設置好KEY和消息數據以後,我們利用插件的自動化命令配置好需要ChatGPT的執行的命令。

這裏的每個命令都有一個描述,我們可以用自然語言告訴AI,什麼時候該調用我,AI會自己決定調用哪一個命令,當然光有命令還不行,我們還得讓AI提供參數給我們。

在參數的配置上,我們也有一個“參數說明”,也就是用來告訴GPT,這個參數是什麼意思,GPT會根據用戶的信息,自己來歸納和推測參數內容。

使用ChatGPT查詢訂單

好了,做到這兒,GPT後端部分也已經配置好,現在我們模擬一個場景出來,例如我想讓GPT幫我們查詢訂單數據,我們可以這樣定義:

首先定義一條命令如下,告訴GPT,這個命令是用來按條件查詢多個訂單數據。

(定義命令)

再給命令定義查詢訂單需要用到的一些關鍵參數,有了這些信息,我們後面就可以實現查詢條件,從而根據條件篩選數據。

(參數定義)

判斷GPT返回的function_call.name是不是等於GetOrderData:

(判斷function_call.name)

如果是,就把獲得的參數用來篩選數據:

(篩選數據)

最後把獲取到的數據返回給前端:

(數據返回前端)

最後我們在前端補充一個頁面,用來接收並顯示查詢返回的數據表中的數據。

最終實現的效果:

(查詢2023年6月的採購訂單數據)

可以看到GPT準確的理解了我們的意圖,並且調用了我們預設好的命令,還提供了我們需要的日期、訂單類型等參數。

通過這個簡單的例子,我們可以驗證AI與活字格結合的可行性,那麼我們除了查詢數據,還能不能做點更復雜的事情呢?

使用ChatGPT顯示訂單內容

所以接着我又做了另一個嘗試,讓AI根據我的要求找到某個訂單,並顯示該訂單內容

這個嘗試,我加入了更多的參數,由日期、訂單類型、負責人等,然後修改了邏輯,把命令放到前端頁面來執行。

(前端命令設置)

來看看運行效果:

(打開2023年6月8日超哥採購Iphone的訂單)

看來是完全沒有壓力的,這時候我們初步已經學會怎麼運用GPT的能力,來爲我們完成特定任務了,下面我將繼續完成一個更復雜、更實用的嘗試。

使用ChatGPT發送郵件

我想讓系統理解這樣一句話,並幫我執行。

我是喬布斯,請幫我找出2023年6月份馬斯克經手採購iphone的訂單數據,發送郵件給超哥,並寫一段話禮貌的催促他快點審覈。

我來幫大家理理,想要完成這個任務,我們需要做些?

讓AI知道我是誰;

▪ 需要找出2023年6月1日到6月30日範圍內,負責人爲"馬斯克"、訂單類型爲"採購訂單"的數據;

▪ 將上面數據導出爲Excel;

▪ 找到超哥的郵箱,並將上面的數據作爲附件;

▪ 編寫一段話作爲郵箱正文;

▪ 尋找系統用戶中一個叫“超哥”的人,並拿到郵箱地址;

▪ 將郵件發送出去並返回。

梳理清楚了,我們就開始做邏輯,同樣配置好命令和參數的描述

然後利用報表模塊,設計一個簡單的報表,綁定訂單數據庫

(報表模塊)

最後做一下導出Excel+發送郵件的命令

(命令執行過程設計)

好了,我們來試試效果,我給大家做了個帶講解的視頻

總結

ChatGPT與活字格的結合爲軟件設計帶來了巨大的潛力,並給開發者帶來了全新的思考和改變。AI的執行任務能力和自然語言交互使軟件操作更加智能化和直觀化。開發者將專注於與AI的對話和數據分析目標的設定,而無需擔心底層的技術細節。我們期待ChatGPT和活字格技術的不斷髮展,推動低代碼開發向智能開發的創新和突破,讓我們迎接更加智能的軟件時代。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章