[iThome Cloud Summit 2023] 結合生成式 AI 打造有趣的 LINE Bot 應用

前言 大家好,我是 LINE 台灣的資深技術推廣工程師的 Evan Lin 。前一段時間, OpenAI 將他們知名的 GPTv3 的 NLP Model 開放出來給大家使用,並且提供一個好用的介面 ChatGPT 。 在全世界受到相當多的注意,也看到有相當多社群的開發者有分享相關的開發案例。這一次我在 iThome 舉辦的 Cloud Summit 2023 擔任講者,並且分享「結合生成式 AI 打造有趣的 LINE Bot 應用」。 議程簡介 在現今智慧手機普及的時代,LINE 已成為人們溝通的主要管道之一,而 LINE Bot 更是其中一種廣受歡迎的應用方式。本演講將探討如何結合生成式人工智慧技術,打造有趣的 LINE Bot 應用。透過深度學習模型的訓練,我們可以讓 LINE Bot 具有更智能的對話能力,甚至可以幫助使用者解決問題、提供娛樂等多種應用場景。本演講將從實際案例入手,分享如何利用生成式 AI 技術開發 LINE Bot 應用,讓您了解如何運用 AI 技術,打造具有創意及趣味性的智慧應用。 投影片 生成式 AI 浪潮下社群有許多好玩的應用 這裡分享了幾個有趣的應用,大家可以參考看看: 歷史名人 Bot: 加入好友 還是會真的回覆相關內容,而且很堅持講日文。 XD 拼盤小幫手: 加入好友 原本是命理相當有研究的社群高手,透過生成式 AI 讓他的內容更加的口語化與人性化。 就可妹妹:加入好友 讓生成式AI 幫你講笑話,不過好像不太好笑XD Cofacts 真的假的: 加入好友 透過生成式AI 快速幫使用者檢查訊息是否是假的機率。 而透過 LINE 的生態系中,有著許多文字的相關應用。有哪一些有趣的應用可能會出現呢? 訊息摘要小幫手 大家是否都有類似的問題? 常常加入一個群組內,有太多的訊息在裡面跑來跑去,一回頭來看,發現已經有太多未讀的訊息在裡面了。 常常需要進去後,慢慢地追每一個訊息來避免自己錯過太多 (FOMO) ? 大家可以參考一下這篇文章如何透過生成式AI 來打造聊天室中的訊息摘要小幫手。 透過 LangChain 來打造自主性的 LINE Bot 透過基本的生成式AI 打造一個聊天機器人之後,我們可以進階的透過一些有系統的架構來打造「自主性」的 LINE Bot 。 所謂的自主性會是什麼意思: 具有基本思考與處理能力,知道資料要去哪裡尋找。 有相關的記憶能力,能記住使用者的相關需求。 可以有效的回覆使用者的疑問,或是可以啟動相關的服務。 這裡就要介紹如何透過 LangChain 來打造一個具有「自主性」的 LINE Bot 小幫手。 什麼是 LangChain? 要讓你的 LINE Bot 做出以上的事情,你需要很多很多的相關 Prompt 。不論是定義 LLM 的模型該如何解讀你的文字,該如何挑選即將要執行的動作,或是如何將結果作為有效的拆解,到把以往訊息得內容加以存在 Prompt 之中。 但是透過 LangChain 你可以將這些工作拆解成一個個的小方塊,讓你打造相關服務與應用的時候不用在重複使用那些的 Prompt ,就可以快速打造出來。 以下透過一些簡單的程式碼範例來講解使用了 LangChain 之後,你的程式碼會變得多簡潔。 關於如何自主性挑選適合的 Tool 去做的能力 Function Calling 這個部分很建議看一下這篇文章,裡面有相當多的說明。 透過這個流程的解釋,你可以很了解到為什麼 LLM 可以了解使用者的內容。並且知道要如何去拆解變成參數。這就是如何讓「自主性」這件事情成真的重點。 LangChain 的程式碼 根據以上的程式碼,你可以看到定義一個工具的重點,就是要跟 LLM 模型講: 這麼工具是做什麼的?(他是一個查詢股價的工具) "Useful for when you need to find out the price of stock. You should...
繼續閱讀

[TIL] Knowledge Retrieval Architecture for LLM’s (2023)筆記

在網路上尋找關於 RAG 跟 LangChain 相關的文章,偶然發現這篇好文: Knowledge Retrieval Architecture for LLM’s (2023) 摘要: 這一篇專門在講怎麼做一個 LLM Retrieval Architecture (中文不太會翻 XD) 從最簡單的 OpenAI Cookbook repo 到, RAG, RETRO 到 REALM 架構都有提到。 也有提出之前資料假象的問題,找了兩篇論文來討論 HyDE 跟 GenREAD 。 詳細解釋 查詢大型資料的問題: 要小心 4000 token 的限制 Token 越多,處理速度越慢。 解決方式 (R: Retrieval)(上圖)透過外部資料的導入 許多外部資料, txt/pdf/API 透過切開來後透過 Embedding 放入某些向量空間的 Embedding Store 之中。 (上圖)使用者問的問題,也透過 Embedding 來找到相關資料。 比如說: 問哪裡可以找到鍛鍊跟減肥的場地,就會跟健身房場地的「向量空間」相當的接近。 (A: Augment) 增強: 將相關內容,跟使用者的問題,一起放在 Prompt 中去詢問。但是為了讓提問的答案效果會更好,可能需要有相關增強的相關語句。比如說: 請用中文回覆 請不要回覆你不知道的答案 必要時候,請給我追問語句 相關資料可以看: OpenAI Cookbook repo G: Generative) 生成: 就是把相關資料丟入 LLM 去生成解答。 優化設計 有一些方式可以優化以上的基本架構: 產生更有意義的 Retrieval 資料 Precise Zero-Shot Dense Retrieval without Relevance Labels: (a.k.a. HyDE: Hypothetical Document Embeddings~(HyDE).) 論文摘要: 本文提出了一種通過虛擬文件嵌入來解決零樣本情況下的密集檢索系統的困難。在沒有相關性標籤的情況下,HyDE通過指示模型生成虛擬文件,該文件捕捉了相關性模式,但仍然不真實且可能包含錯誤細節。然後,通過無監督對比學習的編碼器將該文件編碼為嵌入向量。該向量在嵌入空間中識別出一個近似的鄰域,根據向量相似性檢索出相似的真實文件。我們的實驗結果表明,HyDE明顯優於最先進的無監督密集檢索器Contriever,在各種任務(例如網絡搜索、問答、事實驗證)和語言(例如瑞典語、韓語、日語)上表現出強大的性能。 透過 LLM 來增加文章本體的上下文,透過這樣的方式來增加整體回覆的完整性。也能進而提升回覆的正確性。 名為“生成然後讀取”(GenRead): Generate rather than Retrieve: Large Language Models are Strong Context Generators 論文摘要: 本論文提出了一種解決知識密集型任務的新方法,該方法使用大型語言模型生成文檔,而不是使用文檔檢索器。這種方法首先給語言模型提供問題,生成相關的文檔,然後閱讀這些文檔以生成最終答案。此外,作者還提出了一種基於聚類的提示方法,從而選擇不同的提示,生成涵蓋不同觀點的文檔,從而提高答案的回收率。研究人員在三個不同的知識密集型任務上進行了廣泛實驗,包括開放領域問答、事實檢查和對話系統。其中,該方法在TriviaQA和WebQ上取得了71.6和54.4的精確匹配分數,明顯優於目前最先進的檢索-閱讀流程DPR-FiD的+4.0和+3.9,而且不需要從任何外部知識來源檢索文檔。最後,作者還演示了通過結合檢索和生成可以進一步提高模型性能。相關代碼和生成的文檔可以在https://github.com/wyu97/GenRead 找到。 也是類似 HyDE 的方式,而是採取多個上下文的方式來確保內容更有意義。 相關資料 論文:HyDE 論文:GenREAD 。 OpenAI Cookbook repo GPT指數 用於語義搜索和其他 NLP 應用的Haystack庫 知識密集型 NLP 任務的檢索增強生成 LangChain 如何使用 GPT3、嵌入和數據集對文檔實施問答 FAISS用於向量相似度計算 生成而不是檢索:大型語言模型是強大的上下文生成器 GenRead 範例程式碼
繼續閱讀

[TIL] AI安全與啟蒙時代

從 Fast.ai 看到這篇貼文: AI Safety and the Age of Dislightenment 摘要: 嚴格AI模型授權和監控建議可能無效或產生反效果,在捍衛社會和使社會自衛之間取得平衡是微妙的。我們應主張開放、謙卑和廣泛諮詢,制定更好回應,使其與原則和價值相一致,了解更多關於這潛力的技術的過程中不斷演進。 心得: 裡面論文都是這篇: FAR (Frontier AI Regulation: Managing Emerging Risks to Public Safety) https://arxiv.org/abs/2307.03718 加強GPAI監管只會增加進入者門檻,讓競爭者更少。 規範使用會比開發對於社會安全更有幫助。 開源是可以增加多樣性並且降低大型公司的危險性。 目前的進展正因為大眾的未知與沒有監管,所以應該要謹慎避免新科技恐慌帶來的不必要的限制。 參考:歐盟監管開源人工智能的嘗試適得其反 https://www.brookings.edu/articles/the-eus-attempt-to-regulate-open-source-ai-is-counterproductive/
繼續閱讀

[LangChain] LangChain Embedding 中可能發生的問題

前提: 之前在 DeepLearning.ai 開放新的課程「LangChain Chat with Your Data」,裡面有許多相當實用的案例分享。這裡要分享一個關於容易誤解的問題。 案例一: 追求過於近似,但是卻忘記重要訊息的搜尋法 這裡有載入四份文件,你有發現他故意重讀檔案一兩次,意圖去讓資料不正確。 想要去查詢「是否有關於 Regression 資料在“第三章”」的時候,由於資料混亂。也會傳回第一章的結果,因為就是有混亂的問題。造成他無法注意“第三章”,而是只注意到 “regression” 這個字。 這時候要使用 “Maximum Marginal Relevance (MMR)” 的方式來尋找資料,而不要找最接近的資料。 vectordb.max_marginal_relevance_search(query,k=2, fetch_k=3) query = "What is the bitcoin?" query = "What is the bitcoin?" vectordb.similarity_search(query, k=2, filter={"page": 1}) 透過 filter 你可以去指定許多參數,從哪一份文件,從哪切割的內容,甚至是內容對照。 參考內容: LangChain Chat with Your Data LLM+Embedding构建问答系统的局限性及优化方案
繼續閱讀

[好書分享]我的99個私抽屜-唐鳳的AI時代生存心法

我的99個私抽屜 唐鳳的AI時代生存心法 何もない空間が価値を生む AI時代の哲学 作者: 唐鳳 丘美珍 出版社:網路與書 買書推薦網址: Readmoo: 購買網址 前言: 這是 2023 年第六本讀完的書,雖然說唐鳳是近幾年算是很受注目的素人政壇人物之一,他的這些書籍其實都蠻有內容,也很推薦大家來看。 內容摘要: 臺灣數位發展部長唐鳳五歲時閱讀老子《道德經》,其中有云:「埏埴以為器,當其無,有器之用。」她自此深知「價值的產生,在於空間」之道,最終遷徙到網路世界中獨自尋思、與人協作:她與素未謀面之人共筆、共創,打造橫向溝通平台,每日結束時都將所知所得發表上線;更以自身體歷為基底,提出在AI時代生存的多元心理準備。全書以唐鳳第一視角敘事,分為「思考/學習/網路/工作/人生」五大篇章:99個唐鳳的「私抽屜」,每拉開一格,都可發現直透人心的知行祕訣,當下轉念受用! 日本人看唐鳳,就像江戶幕府時代的人,在看明治時代的人!—— 野島剛 在別人提供的知識基礎上,我會加上自己實作的經驗, 作為驗證,加深理解,或進一步擴大影響力。 我稱這樣的過程為「增幅」。 如果我能提供一個空間,甚至自己就變成一個空間、一個通道, 在「無我」的狀態下,讓眾人透過我, 完成他們在意的工作或任務,這就是我的價值。 創造一個讓眾人可以互動的空間,就變成我這輩子持續在做的事。 來拜訪我的人,帶著他們的人生經驗和夢想,提出想讓世界更好的創新思維, 而我的價值,不在於我想要完成什麼,而在於我如何幫他們做想做的事。 —— 唐鳳 心得: 之前他就任的時候,身邊有一些因為主政的政黨取向而懷疑他的能力。但是我只有在思考說:如果你的反對是因為換了一個政黨就不會,那麼你可能受到政黨取向的偏頗。蠻推薦大家可以看這一本數來更了解唐鳳,如果你想要了解他的家庭如何造就她勇敢的決定停止去學校就學,並且可以包容她的各種意見。更可以看看這本,更了解一個良好的家庭教育的想法。
繼續閱讀

[研討會][LangChain] LangChain 「Chains vs Agents」 Webinar Notes

Weblink: https://www.crowdcast.io/c/m2ooh0uy9syg Speak1: Swyx - smol developer https://docs.google.com/presentation/d/1d5N3YqjSJwhioFT-edmyjxGsPBCMb1uZg0Zs5Ju673k/edit#slide=id.g254e571859c_0_133 Article: https://stratechery.com/2018/techs-two-philosophies/ https://www.latent.space/p/agents https://lilianweng.github.io/posts/2023-06-23-agent/ Speaker2: Alex - Agent Eval https://docs.google.com/presentation/d/1bo5uxaS4JMNt99VmsRdeTFLo9qSIByJiViIVakzF9NQ/edit#slide=id.g22b104eecb9_0_2 很難 debug agent failure: failure token CAPCHA 三種 Evaluation 方式 抓下一堆 dataset Alex: https://twitter.com/alexreibman Gurkaran: https://twitter.com/aigsingh dare: https://twitter.com/dariusemrani Jesse Hu https://twitter.com/huyouare Q&A What is the most affordable (free, local?) LLM for specific Agent Executor / Agent task like decision making, tool selection…? Mpt7b In my experience, the OpenAI functions work really well in deciding what tool(s) to use even in multi-step scenarios. Do you think that a train-of-thought process is used behind the scenes, like ReACT or MLKR? And how useful are they now? 可以考慮看看 few shot 其他 Agent Hackathon https://lablab.ai/event/ai-agents-hackathon AgentEval (第一名) 最後有 OpenAI CEO 演講
繼續閱讀