[好書分享] 歷史,就是戰

歷史,就是戰 黑貓老師帶你趣解人性、權謀與局勢 作者: 黑貓老師 插畫: 魔魔嘎嘎 出版社:圓神出版 出版日期: 2018/01/01 買書推薦網址: Readmoo: 由此去購買。 前言: 這是 2024 年第 7 本讀完的書。這一系列的歷史小品書,都是我拿來當作休閒用的閱讀書籍。加上看起來有不少有趣的插畫跟不錯的小故事。就買了下來。 內容摘要: 狂人的心機謀略X戰場上的超展開 妙讀歷史,秒懂國際間的爾虞我詐 有這麼多人想要征服世界,但是從來沒成功過! 看看我們的世界,到底是怎麼被這些人搞成這樣的!ヽ(`Д´)ノ 第一本用鄉民語言專業撰寫,讀歷史不再頭昏腦脹,而是笑得精神抖擻!讓人不禁吶喊,當年我的歷史老師這麼教就好了! ★(O_ O)打破本國和世界史的界線,跳脫的縱線學習,結合地理概念,縱貫交叉,帶出新史觀 ★(゚∀。)用看故事的方式趣讀歷史,從熱戰到冷戰,全盤了解影響世界局勢的10大重要戰爭 ★( ´ω`? )旁徵博引各種有趣的豆知識,讓你的歷史戰鬥力大爆發,程度再升級 ★(゚Д゚)搞懂鬥氣鬥智、縱橫沙場、老謀深算的那些大人物到底在打什麼謀略的算盤 心得: 這一本書敘述了近一兩百年最重要的一些戰役,透過生動有趣的口吻,讓大家知道其實許多的戰爭由來,並且如何分析相關的因果關係。比如說第一次世界大戰,就是野心勃勃的德國,遇上相關爭議所引發的。但是第一次世界大戰的賠償卻也是引發第二次世界大戰的導火線。 相關的戰略要素跟幾個重大的戰役,也都用很幽默的口吻跟有趣的史實來分享。 後續的侵華戰爭,加上國共內戰也是敘述得很精彩。真的讓人可以看得出來人類的歷史真的就是一個戰。但是身為讀者的我們,要了解戰爭不是只是表面上的相關意象,更不是幾個人的意氣之爭。往往在許多國家的利益糾葛,與許多的歷史因素交織而成。這一本書真的可以讓人在輕鬆的心情下來吸收相關的知識。
繼續閱讀

[好書分享] 弘兼憲史上班族基本數字力

弘兼憲史上班族基本數字力 買書推薦網址: Readmoo: 下架了 前言: 這是 2024 年第 6 本讀完的書。 當初看到作者就買了,本來想說可以補充相關知識的。 內容摘要: 你知道薪資明細表裡的機關嗎?   「成本」究竟是什麼?   貨物賣得多,錢就賺得多嗎?   上班族不可缺乏的基本數字力,數字力強,工作才能做得好。 ◆只要數字概念強,你就能成為工作能力佳的上班族!   不論職場菜鳥或老鳥,不管是什麼樣的工作,多少都會接觸到和數字相關的業務內容。舉凡產品成本估算、定價;個人薪資所得;產業景氣循環;企業經營分析、償債能力等,都是身為優秀上班族,不可不知的超基本常識。   像是新聞報導常見的「景氣動向指標」,它是根據對景氣的變動敏感的幾項指標組合而成,其中指標可分為「領先指標」、「同步指標」、「落後指標」三種。由於組合了多項指標,可對景氣的狀況做出綜合性的判斷與預測,得知目前景氣好或壞,決定公司因應的各項策略。   另外,經營分析經常用在調查企業的往來對象上,但除此之外也有其他用途。例如,要投資股票時,必須先得知投資標的那家公司的狀況。因此,經營分析相當有用。如果先學會經營分析,也會變成能夠更深入理解新聞媒體報導關於企業的事。   諸如此類,上班族必備的基本數字力,包含面對個人、產品、市場、企業、商業等各領域的業務。本書提出各類數字的計算由來,運用的方法,讓你輕鬆掌握關鍵數字,解決問題無往不利。 心得: 弘兼憲史一直是我很喜歡的漫畫家,他最有名的就是「課長-島耕作 」。裡面除了有日本上班族的心路歷程外,最重要的就是針對日本企業各種文化的考究與整理。 這一本也是,整理了很多相關的基本知識。 但是隨著有在投資股票,許多的基本相關財務報表的基本概念也就出現了。 因為有一些財報的分析,能夠了解裡面的基本原因,經常聽著財經號角跟股癌也讓我基本知識有一些些的進步。(當然賠錢賠得多,學得最多)。 不過這一本比較基本,如果有基本企業概論或是經濟學概念的人,或許就不需要閱讀了。
繼續閱讀

[Gemma] 用 GEMMA/LLAMA 這類 Local Model 打造更安全與具有隱私概念的 LINE ChatBot

前言 LLM 的盛行之後,我們可以看到許多開發者將 LLM 整入到自己的聊天機器人 (LINE ChatBot) 之中。但是隨著而來也有不同的考量開始出現。讓許多開發者感到困擾,該如何更有經濟效益,並且更安全合法規的方式來使用 LINE Chatbot。 自從 LLAMA 等開源模型發展後,我們可以看到市面上有許多相關的開源模型。 LLAMA, Gemma, Phi3 等等,甚至有許多模型是可以在自己本地端的電腦中使用的。本篇文章將介紹這一類型的 Local Model 究竟能如何跟 LINE Bot 去整合,,並且提供一些範例程式碼作為 LINE Bot 的範例。 相關程式碼 關於 LINE Bot 相關程式碼,可以參考這一段。這邊使用 Groq 的 API 服務 https://github.com/kkdai/linebot-gemma Gemma/LLAMA 這一類的模型該如何部署 不論是 Gemma 還是 LLAMA 這一類可以部署在本地電腦(或是自己的雲端伺服器裡面的),在本文中都先暫且稱為 Local Model 。 他的基本 Prediction 的精準度,在於你提供的本地機器的算力。 筆電使用上 可以考慮使用 Ollama Ollama 是一個跨平台很好使用 LLM 的本地端工具,可以在本地端的電腦去使用 Llama3, Phi 3, Mistral, Gemma2 等等本地端的模型。使用跟安裝也相當簡單,基本上現在只要是 M1 或是 M2 的 Mac Book 就可以很輕鬆地跑起相關的服務。 GCP / Vertex AI 上面要部署這些模型 可以透過 Vertex AI 的服務來部署 Gemma Gemma2 PaliGemma 但是需要申請伺服器單位如列表 Gemma / Gemma2 PaliGemma Machine type: ct5lp-hightpu-4t Accelerator type: TPU_V5_LITEPOD Accelerator count: 4 - Machine type: g2-standard-16- Accelerator type: NVIDIA_L4- Accelerator count: 1 不過要注意這些單位需要申請,因為筆者還沒有申請下來本文將使用 Groq 來示範。 (2024/07/19) 透過 LPU API Services - Groq 來使用 Gemma2 不得不說 Groq 真的很快,而且目前也都還有免費額度可以使用 API 來呼叫。這邊也放上最簡的程式碼來呼叫 Gemma2-9B # Default import os from groq import Groq client = Groq( # This is the default and can be omitted api_key=os.environ.get("GROQ_API_KEY"), ) chat_completion = client.chat.completions.create( messages=[ {...
繼續閱讀

[Udacity] Gemini API by Google 課程分享

(課程連結: https://www.udacity.com/enrollment/cd13416) 前言 Google 跟 Udacity 合作開的這一個課程,蠻建議大家可以看一下。除了是免費之外,更加許多文件裡面沒有提供的詳細資訊跟用法講得很清楚。 想要更了解每一個 API 該如何使用,可以考慮看看。 這邊快速講一下課程大綱,然後帶幾個我覺得很重要的概念: 課程大綱 Introduction to LLMs and Gemini 基本概念補充。 Introduction to prompting in Google AI Studio 主要都是 AI Studio 的操作說明。 Developing with the Gemini API 建議開發者都要看這個,大多是 API 使用細節。 Advanced Applications 課程整理,還有相關小專案給學員練習。 幾個重點整理: 如何算產出 token token_n_model = genai.GenerativeModel(model_name, generation_config={"temperature": 0.0}) poem_prompt = "Write me a poem about Berkeley's campus" prompt_token_count = token_n_model.count_tokens(poem_prompt) output_token_count = token_n_model.count_tokens(response.text) print(f'Tokens in prompt: {prompt_token_count} \n Estimated tokens in output {output_token_count}') 透過 prompt_token_count: 輸入的 token 數字。 output_token_count: 產出的 token 數字。 Safety Setting 由於 Gemini 有著嚴格的管控,許多時候一些資料會被以安全因素而拒絕回覆。這時候你需要做一些處理: 在進行此演示之前,請記住要負責任地處理 AI 並遵循道德準則。 安全性是 Gemini 的一個重要內建功能。讓我們來了解更多它的功能: 如何檢查您的提示是否被安全過濾器阻擋 哪些安全過濾器導致了阻擋 如何調整設置以解除阻擋 檢查提示是否被阻擋 假設我們選擇了以下提示,在當前的安全設置下,您可以預期您的回應會被阻擋: model = genai.GenerativeModel("gemini-1.5-flash", generation_config={"temperature": 0}) unsafe_prompt = "Write a threat a video game villain might make" response = model.generate_content(unsafe_prompt) print(response.text) 輸出:ValueError: 無效操作:response.text 快速訪問器需要回應包含有效的 Part,但沒有返回任何內容。請檢查 candidate.safety_ratings 以確定回應是否被阻擋。 現在,您可以印出 response.candidates[0].finish_reason 以進一步調查。 如果 finish_reason 是 FinishReason.STOP,則表示您的生成請求成功運行。 如果 finish_reason 是 FinishReason.SAFETY,則表示您的生成請求因安全原因被阻擋,因此 response.text 結構將為空。 檢查安全過濾器 印出 response.candidates[0].safety_ratings 將顯示評級結構。我們可能會看到如下內容: [category: HARM_CATEGORY_SEXUALLY_EXPLICIT probability: NEGLIGIBLE , category: HARM_CATEGORY_HATE_SPEECH probability: NEGLIGIBLE...
繼續閱讀

[Google Cloud/Firebase] 關於 Python Firebase Admin 認證方式

前提 將 Python Firebase 的套件改成官方的 FirebaseAdmin ,以下有兩種認證方式。 透過 GOOGLE_CREDENTIALS 將 services_account.json 放在環境變數 GOOGLE_CREDENTIALS 透過以下程式碼啟動 這個方式可以在本地端,遠端連線去 firebase 測試。 # 从环境变量中读取服务账户密钥 JSON 内容 service_account_info = json.loads(os.environ['GOOGLE_CREDENTIALS']) # 使用服务账户密钥 JSON 内容初始化 Firebase Admin SDK cred = credentials.Certificate(service_account_info) # 啟動 firebase realtime database (透過 firebase_url ) firebase_admin.initialize_app(cred, {'databaseURL': firebase_url}) 透過 GCP 系統啟動 如果服務是部署在 Cloud Function 或是 Cloud Run 其實可以透過預設的 Services Account 來取得相關權限 My Project 可以取得 My Project 在 firebase 的權限。 這個設定方式如法在本地端連接到 Firebase 測試 # 直接取得 Google Cloud 的參數 cred = credentials.ApplicationDefault() # 啟動 firebase realtime database (透過 firebase_url ) firebase_admin.initialize_app(cred, {'databaseURL': firebase_url}) 增加 Firebase 相關安全性設定 (Firebase Realtime Database Security Rules) { "rules": { ".read": "auth != null && auth.token.admin === true", ".write": "auth != null && auth.token.admin === true" } } 這樣就可以了。 相關程式碼 放一些基本常用到的 查詢全部 def get_all_cards(u_id): try: # 引用 "namecard" 路径 ref = db.reference(f'{namecard_path}/{u_id}') # 获取数据 namecard_data = ref.get() if namecard_data: for key, value in namecard_data.items(): print(f'{key}: {value}') return namecard_data except Exception as...
繼續閱讀

[Google Gemma2/PaliGemma] Gemma2/PaliGemma 學習筆記,可以應用範圍

Google AI Dev - Gemma2 && PaliGemma 這張圖稍微解釋了 Gemma 家族的兩個主要產品: Gemma 2:也就是第二代的 Gemma PaliGemma:是第一代的 VLM (視覺語言模型) PaliGemma 相關資源: 這邊有 paligemma 的 demo code (在 HuggingFace 上面) 可以看出來,由於是 Gemma 2B 加上 SigLIP 他對於語言的處理比較簡單。 可以做一些簡單的資訊處理,但是複雜問題就不行,比如說: 產生 JSON 回覆 (X) 一次回答兩個問題以上 (X) 但是可以達到: 用中文問問題(但是只會回答英文) 可以做簡單的 OCR ,或是 Object Detection 。 根據以下討論 PaliGemma 的影片, Google 團隊建議直接使用 Mix 版本的模型。他可以 Vision + Object Detection 。 以上是 PaliGemma model 的相關 Benchmark ,可以看出來。 對比的相關測試數據跟方法,都可以得到不錯的準確率。 在 GCP 上面直接部署 PaliGemma https://console.cloud.google.com/vertex-ai/publishers/google/model-garden/paligemma 另外一方面 Gemma 2 也可以: https://console.cloud.google.com/vertex-ai/publishers/google/model-garden/gemma2 Gemma 可以適用的相關內容 透過 Gemma 可以讓 token 數字有大幅度的減少,有以下幾種方向可以考慮: 個人隱私的偵測 讓一些可能有個人隱私的部分可以獲得比較有效的篩選。 以前做法: 個人資料的偵測跟去除一直是一個很難的技術,需要有許多 regular expression 來做控管。即便是如此,還是有可能會有遺漏的地方。針對個人資料偵測這一段,其實在 LLM 是可以使用的。 但是在資安法規上,直接將用戶的個人資料傳到第三方,這樣是不符合規範的。所以這一段可以透過 Gemma 來施行。 如何用 Gemma (on-device LLM) 處理 查看以下內容是否包含個人資料,地址,身份字號,銀行帳號,回覆我 是 或是 否 ------ 我想找台北的房子 如何用 PaliGemma 處理? Check if the image content contains personal information, address, identity number, or bank account number, and reply with Yes or No. 實地測試 - Gemma2 / PaliGemma 文字測試 Gemma2-9B 改成 「某人」跟 「配偶」,並且可以有效地去除身份字號跟銀行帳號。 圖片測試 PaliGemma 判定是否需要 「大型」LLM 的介入 將聊天機器人放入群組之中,最害怕的就是怕「 Token」爆掉。因為每一句話都需要判斷是否需要 LLM 的介入。這時候就可以透過 Gemma...
繼續閱讀