[旅遊] 2023/08/11 ~ 08/23 法國與英國旅遊相關資訊

記錄一下,相關旅遊紀錄。 08/11 法國英國藝術之旅第一天: 很興奮到了法國第一餐找了附近的餐廳 「 La Musset」 結果評價很高。不過在法國吃飯真的會很花時間,服務生不能趕,上菜真的不快,也不能催他付錢。 下午先去凱旋門感受一下壯觀的景象,再來就是去「奧塞美術館」感受一下許多漂亮的雕像跟作品。至少有看過「拾穗」。 晚餐吃了飯店樓下的義大利餐廳。很雷。 飯店: Hôtel Louvre Saint-Honoré 早餐: Le Musset 3’ 凱旋門 奧塞美術館 晚餐太雷(省略) 08/12 法國跟愛丁堡藝術之旅 第二天 羅浮宮 先去是「聖心堂」感受莊嚴的美麗 再來去後面的「小丘廣場」看到藝術家部落的壯觀。 「午餐: La Vache et le Cuisinier 是個很棒的體驗。」 馬不停蹄趕去看「艾菲爾鐵塔」 最後到了「羅浮宮」感受跨千年的美麗。 傍晚去搭 「city tour」逛逛整個巴黎。 晚餐老婆跟小孩說吃膩了法國麵包,結果跑去吃法國的中國菜。 08/13 法國與英國藝術之旅 今天準備要飛到英國愛丁堡,參加爸媽很期待的「愛丁堡藝術節」。 因為是下午的飛機,早上馬不停蹄去趕行程。 先感受了 「聖徒修道院」美麗的馬賽克藝術,再來到了藝術與科技結合的巴黎古監獄。 巴黎古監獄透過與平板的互動,加上尋寶遊戲。讓本來還蠻空曠的巴黎古監獄多了很多有趣的感覺。他的商品街也是讓我們買不停。最後還是有經過大火過後的「巴黎聖母院」,雖然都不能進去,但是可以看到周圍人潮還是很多。也看到許多修復的進度表。 最後晚上終於「回到」愛丁堡,十多年前來跨年過後,讓我們念念不忘的城市。 因為太累,吃了一個比較安全的連鎖亞洲菜餐廳就結束今天行程。 聖徒修道院 巴黎古監獄 聖母院 巴黎戴高樂機場(機場三明治$ 愛丁堡機場 晚餐: wagamama 飯店 : The Scotsman Hotel 08/14 法國英國藝術遊: 享受愛丁堡藝術節的路邊表演 早上起床享受了飯店的早餐之後,慢慢往「聖吉爾斯教堂」逛過去,也走到「愛丁堡大學」的後面 「underbelly 」會場享受這次有買票的 「Amazing bible man」真的很棒,很有趣。 後來走出來後到了旁邊的餐廳用餐整個 pizza 相當美味。查了之後才知道是當地 pizza. 名店、只是因為下午剛開。 後來去逛了 「Harry potter 的專賣店」東西其實不多,反而對面的綜合商品專賣店有滿滿的商品。 之後走回 Royal Miles 上面,發現有滿滿的街邊表演。真的都超有趣,結果就看到晚上九點多。。超讚的。 晚餐是街邊看到的店面,結果是飯店的餐廳。 牛排的口感超好, Fish and chips 也是一流。 飯店: Scotsman Hotel 聖吉爾斯教堂 Underbelly 午餐: Paolozzi Restaurant & Bar Harry Potter 專賣店 Royal Miles 表演 A: 台灣來的魔術師 B: The great mimic 超好笑的互動,跟超強的滾球。 C: The James 一個街頭資深手法的魔術師。很多手法都看不出來。 D: Mr. Banana 一個雜耍人,最後用球包住自己超強。 E: 忘記名字,一個像是雜耍團的華人,真的很厲害欸。 晚餐: Luckenbooths 08/15 法國與英國藝術之旅 - 重頭戲: 愛丁堡城堡與軍樂節表演 早上吃完早餐就去愛丁堡城堡去逛。整個城堡相當的莊嚴與宏偉。也彌補了十幾年前來訪愛丁堡沒有機會進去看的遺憾。 逛完城堡後去了旁邊的「格紋工廠」。 中午在陽光下吃了一間義大利餐廳。算是中規中矩。享受陽光下的愛丁堡看著表演真的很棒。但是好日子沒有太久(笑) 接近傍晚就開始下大雨。 晚餐吃餐廳是「蘇格蘭菜」。我吃了一個馬鈴薯燉飯很喜歡。 到了軍樂節會場,雖然下著大雨相當不方便。但是全部還是滿場。全場活動有數個軍樂隊的表演。除了震撼人心的軍樂音樂外,還有許多串場的舞蹈與燈光煙火表演。 最後全部的大合唱 Story 真的太令人感動了。蘇格蘭風笛出現的時候,臉頰熱熱的。 原來是熱淚盈眶。 這幾天的感受是: - 如果你還二十多歲: 千萬別錯過「愛丁堡藝術節」 Fringe 除了有各種有趣的表演,來看看各國人年輕人創意真的很棒。我希望我每年都能來。 - 不論你幾歲,千萬別錯過「愛丁堡軍樂節表演」 他說會感動人心,一輩子都不會忘記的體驗。 早餐: 飯店...
繼續閱讀

[TIL][Python]線上 PDF 逐頁查看比對導入資料的小工具(Python online PDF Viewer and comparison) 跟 Python 小碎念

小專案 Online PDF Viewer and Parse Data compare: https://github.com/kkdai/pdf_online_editor 比對你準備要導入的檔案,透過 PyPDF 。 有在使用 PDF vector embedding 的人,但是又不知道導入資料長什麼樣子,可以透過這個小工具來查看 build by streamlit。 最近由於在弄 LangChain 花了很多時間在玩 Python ,不過很多東西之前沒注意過。這裡稍微筆記一下: PyPDF2 有 CVE 問題,其實切回PyPDF 可以用 pip freeze 跟 pipreqs搭配使用來打造 requirements.txt Heroku 可以透過 Aptfile 來達到安裝 apt get 套件的方式: 導入 "url": "heroku-community/apt" buildpack 加入 Aptfile 裡面放你需要的套件清單 (e.g. pyimage 需要 poppler-utils) 參考: How to add apt packages to Heroku 不然就是上面的 repo 。 Streamlit 是個好工具,對於我這種前端小白,提供了以下一些超好用東西: 各種的資料輸入格式 Session State: 一個線上類似 cookie / session 的好東西
繼續閱讀

[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构建问答系统的局限性及优化方案
繼續閱讀