一、前言:生成式AI的概念 隨著ChatGPT的出現在全球掀起了一股AI浪潮,其強大的功能讓我們就算不懂如何撰寫程式碼,也可以打造自己的專屬AI機器人。也因為技術門檻降低,許多人開始將AI應用於生活及工作等各個層面。本次課程將告訴大家,如何不用撰寫程式碼,就可以打造出AI聊天機器人。不過在此之前,我們必須先認識其背後的大型語言模型及其限制,才能讓我們對生成式AI聊天機器人有更全面的瞭解。 什麼是大型語言模型? 自從前年年底開始,大型語言模型(Large Language Model, LLM)便因為ChatGPT的出現而熱潮不斷,至今仍未有退燒的趨勢。ChatGPT等生成式AI工具對人類語言的理解程度比以往的AI更好,不僅可以幫我們撰寫及摘要文章,更可以幫助我們依據上下文進行翻譯,甚至還可以寫出一段故事或詩。而生成式AI之所以強大則有賴於其背後的大型語言模型,讓它能夠精準地理解語言,大幅提升我們的生產力。隨著生成式AI的熱潮,現在也出現了「小語言模型」(Small Language Model, SLM)。由於大型語言模型需要大量運算資源,不太可能在手機上跑得動,而小語言模型則因耗能低,所以可以直接放進如手機等地端裝置。 大型語言模型的限制 大型語言模型雖讓生成式AI的以快速幫助人類完成任務,但它也存在一些限制。首先以ChatGPT為例。因為訓練大型語言模型需要大量時間,所以我們不可能無時無刻都能更新訓練資料,使ChatGPT有「知識時效性」的問題。因此,如果使用者詢問的問題為其訓練資料截止日期後的問題,ChatGPT就無法回應。此外,大型語言模型也有「知識範圍限制」,即使是最大的大型語言模型也無法涵蓋所有專業領域的深度知識。因為用來訓練它的資料也是靠人類收集,因此它無論如何還是無法涵蓋宇宙萬物的知識。由於資料的不平均,使得大型語言模型在有些領域的訓練資料較多有些則較少,以致於它在某些領域的回答非常好,但某些領域卻沒有想像中那麼好。 除此之外,大型語言模型也會出現「幻覺」。大型語言模型雖然有強大的語言能力,但由於它是基於推論的方式,認為A後面要加上B才是合理的,並不是它真的知道後面要接甚麼,因此模型本身沒辦法知道生成結果的對錯,而是會為了盡可能達成人類給它的任務,而開始「瞎掰」答案,於是產生看似合理卻漏洞百出的回覆。因此,生成式AI雖然可以幫助我們提升生產力,但我們仍需小心驗證其生成結果,盡量避免AI因為幻覺而產生的錯誤回應。另外,我們也要注意,假設大型語言模型的訓練者刻意人為調整或篩選訓練資料,將有可能使該模型的回應產生偏見。再者,我們在使用生成式AI所下的指令,也是訓練其背後大型語言模型的資料,所以也必須注意資安問題,盡量避免將機敏資訊提供給AI。最後,由於大型語言模型需大量運算資源,因此需要非常大的硬體設備,並非人人都能擁有自己的大型語言模型。 AI聊天機器人(AI Chatbot)的應用 由此可知,大型語言模型大幅提升了AI的能力,於是許多人趁勢開發「AI聊天機器人」。這些聊天機器人背後有大型語言模型支撐,因此可以與人對答如流,完成我們交付的任務。AI聊天機器人也可以推斷我們的上下文,瞭解語意並生成回覆。正因為大型語言模型讓AI聊天機器人得以進行自然且流暢的對話,讓更多人開始將其應用於客戶服務、虛擬助理、教育助手及商業互動等服務。 不過與AI相同,AI聊天機器人在應用時也面臨許多挑戰。首先,由於訓練資料的異同會影響AI回應的準確性,因此AI聊天機器人可能會產生「幻覺」,提供錯誤或過時的資訊。另外,它也有可能「過度決策」,在回應時出現超越權限自主決策的狀況。舉例而言,假設我們沒對客服機器人的回應範疇設置防範機制,那麼假設使用者詢問信用卡過期未繳款的相關問題,機器人恐怕就會在聊天過程中答應客戶免繳逾期費用,造成公司損失。再者,我們也須注意大型語言模型使用量超額的問題。如果我們的聊天機器人為公開使用,須處理大量問題,那麼就須付費購買額度,以防超出服務次數上限而無法使用機器人的狀況發生。 面對上述問題,我們也有幾個方法能夠解決。首先,針對訓練資料的部分,我們除了須要持續更新知識庫外,更須設置有效的內容過濾機制,並注意避免將機敏資訊提供給AI。另外,由於AI並非萬能,我們也可以向使用者說明其能力及侷限性,讓使用者更懂得如何使用AI聊天機器人。 二、RAG AI知識庫概念 要如何解決前面所述「資訊落差」及「幻覺」的出現機率呢?目前「檢索增強生成」(Retrieval-Augmented Generation, RAG)架構能較有效解決這兩個問題。 RAG架構結合了資料檢索及文本生成技術,能夠有效提升大型語言模型輸出的準確性及資訊內容時效性。在運作時,RAG會檢索知識庫中的資料,從裡面找出與問題較相近的參考答案,再將它們綜合後回覆使用者。因此,RAG能夠減少AI產生幻覺的機率,並提高知識時效性,解決大型語言模型知識更新不及時的問題。此外,因為RAG能夠允許大型語言模型訪問訓練資料外的資訊,因此也提升了AI的知識範圍。再者,RAG也提高了AI的「可解釋性」,因為它能夠追溯資料來源,在使用者須要時提供,以增加AI回覆的可信度。最後,RAG也可以整合特定領域或組織的專業知識,有效提升AI機器人於特定領域的知識。當然,我們在使用RAG提升大型語言模型的能力時,也須確保外部知識庫的資料內容準確性,以及定時優化檢索算法,才能夠快速找到符合使用者問題的相關資訊。 三、生成式AI聊天機器人設計 瞭解了大型語言模型及RAG後,接下來我們將利用「coze」,零程式碼打造一個結合「LINE」的生成式AI聊天機器人。 1.coze基本介紹 假設我們今天想用coze打造一個專門回答勞基法問題的LINE聊天機器人,那麼首先我們必須先準備好勞基法相關法規文件。進入coze頁面後,在「Personal」裡點選「Knowledge」將勞基法檔案上傳至知識庫中,coze平台便會幫我們拆解資訊區段供接下來的聊天機器人使用。接著,我們就可以點選左側工具欄的「+ Create bot」開始創建一個聊天機器人。在機器人建立頁面中,我們可以輸入指令指定機器人的角色、專門任務(能做/不能做甚麼)、回答口氣及回應格式等。另外,為了要將機器人串連我們已建立好的知識庫,我們須要在頁面中間的選項中找到「Knowledge」,並依照知識庫檔案的類型,選擇「Text」(文字)、「Table」(表格)或「Images」(圖片)。接著,我們可以在「Knowledge」的右上方找到「Auto-call」,指定機器人何時要從知識庫檢索資料(如下圖)。 圖1 我們可以在建立機器人的頁面中找到「Knowledge」,並選擇右上方「Auto-call」指定機器人檢索資料的時機。 自動檢索中有以下幾種選擇。首先,我們在「Search strategy」(搜尋策略)中基本上會使用「Hybrid」(混合式)。此方式會讓機器人依照語意搜尋,但也同時結合傳統的全文檢索,目前研究顯示亦顯示此方式有較高的精準度。此外,「Maximum recalls」可以指定機器人要在知識庫中找到的文字片段中要取得前五或前三個。「Minimum matching degree」則取決了機器人檢索到的資料與使用者問題間的關聯度必須多高,才能被做為參考資料。倘若數字設太高,機器人很容易找不到資料;設太低,則可能導致機器人找到太多不相關的資訊。因此,我們必須多嘗試,才能找到最符合我們需求的參數。「Reply」中則可以設定當機器人無法在知識庫找到答案時,希望回覆給使用者的訊息。最後,「Source」則是設定在機器人產生回答時,是否要附上參考資料來源。所有功能設定完後,就可以在頁面右方測試機器人,並選擇右上方的「Publish」發布機器人。 2.在coze上串聯通訊軟體,打造專屬AI機器人 當我們在coze上完成建立機器人後,就可以開始串聯通訊軟體囉!目前coze上已可以讓我們串聯多種通訊軟體,包含LINE、Discord及Telegram等。當我們發布機器人後,coze會讓我們選擇欲串聯的軟體。不過,在串聯LINE以前,我們要先進入「Line Developers」進行設定。登入「Line Developers」後,首先點選「Create a new channel」建立單一聊天機器人的後台。接著,再選擇「Messaging API」完成設定相關資訊,包含「Webhook URL」。我們可以在coze發布機器人後,點選「LINE」選項右方的「Configure」中找到「Webhook URL」(如下圖)。將其複製下來後,再將其貼上LINE的後台。 圖2 我們可以在coze發布機器人後,LINE選項旁的Configure取得Webhook URL。 接著,我們必須於LINE後臺取得「Channel ID」、「Channel Secrete」、「Channel Access Token」才能將coze與LINE串聯。我們可以於LINE後臺中的「Basic settings」取得Channel ID及Channel Secrete,並在「Messaging API」中找到Channel Access Token。我們只要將這三項驗證身分的資訊貼回coze中,就可以成功完成串接囉!串聯完成後,我們會看到一個QR Code,掃描後即可開始使用機器人。 3.在coze中建立工作流 我們除了可以在coze中打造AI聊天機器人,也可以設定大型語言模型的工作流,將其用於組織及自動化較複雜的任務。當我們設定完此工作流後,它就會自動根據安排完成的工作流幫我們完成任務,不但可以確保複雜任務按照預定義的方式執行,也可以提升我們的工作效率。 我們可以在coze中的「Personal」頁面上方選擇「Workflows」建立新的工作流。在建立工作流時,我們輸入的「Description」(描述)相當重要,因為機器人會依此瞭解我們的工作流主要任務為何,並依據我們的描述來決定須不須要呼叫插件。 設定工作流時,我們會看到一個起始點和一個終點,我們可以把知識庫或想要的模型加入工作流。加入後,就會在工作流中產生一個「關卡」,我們可以依照自己的需求,將不同關卡串起來,並將最後完成的東西與結束點連結起來,即可完成我們的工作流。 四、結語 大型語言模型的出現大幅提升了AI的能力,讓它可以更瞭解人類語言。而隨著AI的技術門檻降低,現在人人都可以用零程式碼工具,打造專屬自己的AI聊天機器人。不過雖然AI功能強大,我們仍須透過嚴謹的求證AI提供我們的訊息是否正確,才能讓AI真正幫助我們提升工作效率。