March
4th,
2025
前情提要 前面提供相當多透過 LangChain 來打造一個 LINE Bot 的案例。但是如果希望使用更穩定的後台,並且希望使用更多 AI 相關的功能,那麼 Vertex AI 就是就是一個很好的選擇。接下來會開始逐步介紹整個移植過程並且介紹需要介紹的地方,還有可能會出現的問題。 範例程式碼: https://github.com/kkdai/linebot-gemini-python (透過這個程式碼,可以快速部署到 GCP Cloud Run) 透過 LangChain 與 Gemini 打造 LINE Bot 到 Vertex AI 首先先給各位一個簡單的 LangChain + Gemini 打造 LINE Bot 的範例程式碼: 處理 Webhook 相關程式碼: for event in events: if not isinstance(event, MessageEvent): continue if (event.message.type == "text"): # Process text message using LangChain msg = event.message.text response = generate_text_with_langchain(f'{msg}, reply in zh-TW:') reply_msg = TextSendMessage(text=response) await line_bot_api.reply_message( event.reply_token, reply_msg ) 接下來解釋一下 generate_text_with_langchain 的內容: # Initialize LangChain with Gemini os.environ["GOOGLE_API_KEY"] = gemini_key .... def generate_text_with_langchain(prompt): """ Generate a text completion using LangChain with Gemini model. """ # Create a chat prompt template with system instructions prompt_template = ChatPromptTemplate.from_messages([ SystemMessage( content="You are a helpful assistant that responds in Traditional Chinese (zh-TW)."), HumanMessage(content=prompt) ]) # Format the prompt and call the model formatted_prompt = prompt_template.format_messages() response = text_model.invoke(formatted_prompt) return response.content 這就是部分片段的透過 LangChain 加上 Gemini 來打造 LINE Bot 的程式碼,完成程式碼。...
繼續閱讀
February
25th,
2025
時勢- 財經知識型YT「小Lin說」第一本商業金融科普書,讓你一口氣看懂世界經濟大局
作者: 小Lin 出版社:野人
買書推薦網址:
Readmoo: 由此去購買。
前言:
這是 2025 年第 1 本讀完的書。其實一直有蠻多書籍在手上閱讀,但是 2024 年底後,開始比較多關於 AI Agent 的程式碼撰寫,反而就更少時間來讀書跟寫心得。 不過「小 LIN 」 一直都是我很關注的財經 YTer ,他用相當淺顯易懂的說明來講解很難懂的財經知識,真的很專業。 當然他出了書籍,就要來彭場一下。
內容摘要:
「小Lin說」是目前最受歡迎的YouTube財經知識頻道之一,
創立3年多,迅速衝破167萬訂閱數,
平均每部「總體經濟」系列影片,都突破100萬次觀看。
小Lin擅長梳理第一手經濟數據與報告,
從中歸納、提煉出令人著迷的故事,
並將龐雜的數字轉化成通俗的經濟史與時事,
把學習經濟學變成令人欲罷不能的知識享受!
在本書中,她將用最精煉的篇幅、最活靈活現的趣味譬喻,
解說日、韓、俄、英、歐盟、希臘、土耳其等大國或地區,錯綜複雜的經濟發展歷程;
以及美、中、德等重量經濟體如何影響上述國家與全球經濟。
帶領讀者一口氣深入世界動盪的核心,
看見金融市場的溫度與博弈!
心得:
這本書的主要內容有:
日本經濟泡沫的產生經過
日本後續的「失落三十年」
日幣匯率暴跌造成的股債雙殺
韓國經濟奇蹟的背後
印度的經濟奇蹟
希臘債務危機
歐盟重返榮耀
這本書透過從日本開始的貨幣經濟的說明,來解釋關於日本脈絡三十年的原因。但是也因為這些原因,才能去解釋了韓國經濟奇蹟與歐盟跟希臘產生的經濟問題。
整本書的節奏比起影片的說明來說比較緩慢,因為許多地方的說明在影片中都會使用圖片來說明。但是在書裡面就可以更清楚的詳細的說明整個前因後果,讓整個經濟推倒的過程更加的清楚。 我個人是相當推薦用書來整理過後梳理整個的經濟問題,反而更容易讓我們這種經濟小白更容易了解。但是反過來,如果喜歡影片節奏的人,可能對於書籍步調會覺得有點緩慢。
也建議大家可以先去看看「小LIN說」的頻道,如果真的有喜歡再來看整本書籍會更讓你喜歡的。
繼續閱讀
February
10th,
2025
最近的變動造成的問題 近期,Imgur 對其圖片連結進行了技術更新,導致直接訪問 i.imgur.com/{image_id}.jpeg 類型的 URL 時會被重定向到 imgur.com/{image_id} 頁面。這種行為使得在應用程式或網頁中直接顯示或下載圖片變得困難。此外,這種轉址機制也會影響到使用者腳本和瀏覽器擴充套件的正常運作,使得原本能夠阻止轉址的工具可能失效。因此,開發者需要找到新的方法來繞過這個限制。 解決思路 要解決這個問題,我們可以採用以下幾種策略: 設置正確的 HTTP 標頭特別是設定 Referer 標頭,以模擬從 Imgur 頁面訪問圖片。使用合理的 User-Agent 標頭,以避免被視為爬蟲請求。 使用 Imgur 官方 API透過官方 API 可以穩定地取得圖片直連 URL,但需要註冊並取得 Client ID 和 Client Secret。這種方法通常更可靠,但需要額外的手續和速率限制考量。 瀏覽器擴充套件或腳本更新更新 NoImgurRedirect 等擴充套件以適應最新變動,或撰寫自訂腳本來處理轉址問題。 範例程式碼 以下是一段 Python 程式碼示範如何設定正確標頭來下載 Imgur 圖片: python import requests def download_img(image_id): # 構建 URL direct_url = f"https://i.imgur.com/{image_id}.jpeg" referer_url = f"https://imgur.com/{image_id}" # 設置請求頭 headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36", "Referer": referer_url } try: response = requests.get(direct_url, headers=headers) response.raise_for_status() if 'image' in response.headers.get('Content-Type', ''): filename = f"{image_id}.jpeg" with open(filename, 'wb') as f: f.write(response.content) print(f"圖片已成功下載:{filename}") else: print("下載失敗:返回內容不是圖片") except requests.RequestException as e: print(f"下載失敗:{e}") # 測試下載(假設 image_id 為「example123」) download_img("example123") 範例程式碼(Golang) 以下是一段 Golang 程式碼示範如何設定正確標頭來下載 Imgur 圖片: go package main import ( "fmt" "io/ioutil" "net/http" ) func downloadImg(imageID string) error { directURL := fmt.Sprintf("https://i.imgur.com/%s.jpeg", imageID) refererURL := fmt.Sprintf("https://imgur.com/%s", imageID) req, err := http.NewRequest("GET", directURL, nil) if err != nil { return err...
繼續閱讀
January
17th,
2025
(✨ 影片示範看這裡 ✨ https://youtube.com/shorts/ffbuUVK_bsE?si=LopZUGuQ7mEpRDcd)
還在為日本零錢煩惱嗎? ( ̄▽ ̄;)
每次去日本玩,是不是都有一樣的困擾? 🤔
明明有 Suica 卡,卻還是收到一堆零錢! 😫
日本物價高,零錢好難花! (。ŏ_ŏ) 怕麻煩乾脆不拿出來…
結果口袋越來越重,回國前還是剩一堆! 😰 別擔心!有了 Pocket Exchange,輕鬆告別零錢困擾! 😎
Pocket Exchange 是什麼?哪裡找? 🤔
Pocket Exchange 就像個零錢 ATM,可以把你的硬幣通通存進 Suica 卡! 😮 超方便! 👍
我在成田機場第二航廈 61 登機口附近找到一台,就在咖啡廳旁邊! ☕ 其他地點可以參考官網:
Pocket Exchange 官方網站 (所有機器地點)
常見問題 🙋♀️🙋♂️
Q:可以用手機 Suica 嗎?
A:當然可以囉! (๑•̀ㅂ•́)و✧
Q:1 元硬幣可以存嗎?
A:沒問題! ( • ̀ω•́ )✧
Q:其他硬幣呢?
A:大部分都可以,但有些可能不吃喔!建議參考機器上的說明。 😉
找不到 Pocket Exchange 怎麼辦? 😱
別慌!7-11 也有自助結帳機可以讓你清掉零錢! 😉 不過要注意,需要 1000 日圓以上才能存進卡片喔! 😅 如果零錢不夠多,那就… 買個東西花掉吧! ( ´∀`) (小心又會產生新的零錢喔! 🤣)
最後
希望這篇文章對你有幫助! 🥰 下次去日本玩,別再讓零錢成為你的負擔啦! 😄
繼續閱讀
January
15th,
2025
前情提要
大家都知道,我大概一年前買入 PS Portal Remote 之後。大概也全破了不少款的遊戲。 但是原來的 TPLink 是 WiFi5 的 Router ,想要趁機換一台 WiFi6 的 Router 之後。但是卻發現讓連線狀況相當的不順,這一篇記錄一下,如何讓你的 PlayStation Portal Remote 可以更順暢的透過 WiFi 連線 Playstation 5 。
參考影片
自從把 TPLink 升級成 ASUS wifi6 router 後,一直無法讓 PS5 跟 Portal 連線順暢 用這招成功恢復速度
獨立 PS5 跟 Portal 用 5G
ASUS router 對這兩個優化
繼續閱讀
January
2nd,
2025
前情提要:
認識我的人都知道我是個 Github Copilot 的愛用者(因為開源者專案,直接獲得免費,雖然說現在也開放免費額度了)。
裡面最常使用的功能就是自動寫 Commit Message 的功能,讓我每次都不需要想我到底改了什麼,或是需要使用哪些規則來寫。
目前 Github Copilot 的 Message 比較制式的問題
但是如果想要做出一些特別的 Commit Message ,比如說:
甚至更生動的會使用所謂的「 emoji commit message 」:
但是原來 Github Copilot 給的格式就還蠻制式的,該如何修改呢?
客製化 Commit Message (Custom instructions for GitHub Copilot )
2024 的 12月. Github 公開了新的設定 (Custom instructions for GitHub Copilot ) 可以透過設定來讓你的 Commit Message 更有特色。
"github.copilot.chat.testGeneration.instructions": [
{
"text": "Always use vitest for testing React components."
},
{
"text": "Use Jest for testing JavaScript code."
},
{
"file": "code-style.md" // import instructions from file `code-style.md`
}
],
以下提供一個範例,可以快速讓你 Commit Messsage 變成更豐富的格式。
快速修改 github copilot commit msg 的格式:
透過 vscode://settings/github.copilot.chat.commitMessageGeneration.instructions 打開 vs code
加入
"text": "Start each commit message with an emoji representing the change type, then provide a concise summary of what changed and why."
Done. 改成這樣很好看啊 :)
繼續閱讀