10/04/2025

川普 金字碑 數位刺青

ChatGPT generated

去年曾經和幾位同事一起去三貂嶺金字碑古道,古道上有個石碑(金字碑)上面文字雖然有些褪色,不過碑文大致仍可看 。古時候的人,有重大事情要做紀念通常都是搞個石碑,如果沒特別情況,留存個幾百年沒問題。

對於自己想要永遠銘記的事情,刺青對某些人來說是個好選項,畢竟感覺上,刺青很像在自己身上刻碑。


在區塊鏈世界裡,有某種使用方式是,把交易的訊息當作「永遠留存的內容」,例如可以是一段字,一張圖。只是成本不低啊,以那個金字碑的碑文,小於200 bytes,放到ETH網路(以太坊)至少要7美元。所以那時候沒特別想嘗試。

不過前幾天,我發現原來川普幣,並不是基於ETH,而是Solana。稍微研究一下發現Solana的交易特別便宜,至少比ETH便宜很多。要把金字碑文刻在Solana上面,其實僅需要0.001146美金。 我們當然不知道川普是不是因為交易費便宜而選Solana,但看起來solana的規模確實因為川普的關係變大了一些。

當然要做這件事情,千萬不能買川普幣來做,如果用川普幣就不只0.001146美金,最便宜的是找便宜的迷因幣或者自己弄個幣。

這裡我們用 Solana 當例子,示範如何把金字碑文當成刺青寫到鏈上,並且搭配自己發行的代幣。整個過程會用 Python 腳本來實作。



整體流程

  1. 建立一個錢包帳號:這是你在 Solana 上的身分。

  2. 建立一個自己的 Token:假設發行 1000 個單位,當作我們的「刺青代幣」。

  3. 建立交易並加上 Memo:利用 Token 做交易時,在交易裡附帶 Memo 指令,這個 Memo 就是刺青內容,例如「life is great」。

  4. 查詢交易記錄:透過交易簽名(transaction signature),可以查到這筆交易,並讀到當初留下的文字。



範例程式

以下四個 Python 腳本都是在 Solana Devnet 測試網上執行。正式主網(mainnet-beta)使用方式相同,只是需要真實的 SOL。

a. 建立錢包帳號

from solana.keypair import Keypair


import json


kp = Keypair()


secret = list(kp.seed + kp.public_key.__bytes__())


with open("wallet.json", "w") as f:


    json.dump(secret, f)


print("wallet created")


print("Public Key:", kp.public_key)



b. 建立自己的 Sol Token(假設 1000 個)

import json


from solana.rpc.api import Client


from solana.keypair import Keypair


from spl.token.constants import TOKEN_PROGRAM_ID


from spl.token.instructions import initialize_mint, InitializeMintParams


from solana.system_program import CreateAccountParams, create_account


from solana.transaction import Transaction


client = Client("https://api.devnet.solana.com")


payer = Keypair.from_secret_key(bytes(json.load(open("wallet.json"))[:32]))


mint_kp = Keypair()


mint_rent = client.get_minimum_balance_for_rent_exemption(82)["result"]


tx = Transaction().add(


    create_account(CreateAccountParams(


        from_pubkey=payer.public_key,


        new_account_pubkey=mint_kp.public_key,


        lamports=mint_rent,


        space=82,


        program_id=TOKEN_PROGRAM_ID


    )),


    initialize_mint(InitializeMintParams(


        decimals=0,


        program_id=TOKEN_PROGRAM_ID,


        mint=mint_kp.public_key,


        mint_authority=payer.public_key,


        freeze_authority=payer.public_key


    ))


)


sig = client.send_transaction(tx, payer, mint_kp)["result"]


print("Token Mint Done:", mint_kp.public_key)



c. 建立交易並寫入 Memo(刺青)

import json


from solana.rpc.api import Client


from solana.keypair import Keypair


from solana.transaction import Transaction


from spl.memo.instructions import create_memo, MemoParams


client = Client("https://api.devnet.solana.com")


payer = Keypair.from_secret_key(bytes(json.load(open("wallet.json"))[:32]))


text = "雙旌遙向淡蘭來,此日登臨眼界開。大小雞籠明積雪,高低雉堞挾奔雷。穿雲十里連稠隴,夾道千章蔭古槐。海上鯨鯢今息浪,勤修武備拔良才"  # 其實就是三貂嶺金字碑


ix = create_memo(MemoParams(signers=[payer.public_key], memo=text.encode("utf-8")))


tx = Transaction().add(ix)


sig = client.send_transaction(tx, payer)["result"]


print("(signature):", sig)



d. 查詢交易,讀出刺青

from solana.rpc.api import Client


import base64


client = Client("https://api.devnet.solana.com")


sig = input("輸入交易簽名: ")


tx = client.get_transaction(sig, max_supported_transaction_version=0)["result"]


for ix in tx["transaction"]["message"]["instructions"]:


    if ix["programIdIndex"] == 1:  # Memo program


        data = base64.b64decode(ix["data"])


        print("找到刺青內容:", data.decode("utf-8"))



成本說明

在 Devnet 測試網路,所有 SOL 都是免費領取的,不需要真實支出。
但如果換成主網,成本主要來自兩個部分:


  1. 交易手續費

    • 每筆交易大約 5,000 lamports

    • 1 SOL = 1,000,000,000 lamports

    • 換算約 0.000005 SOL ≈ 0.0012 美元

  2. 帳戶租金 (rent-exempt)

    • Mint 帳戶約 0.002--0.01 SOL\

    • Token Account 約 0.002 SOL\

    • Metadata(若有)約 0.005 SOL\

    • 合計大約 0.5--2 美元 一次性存放


所以在主網發一個新代幣,並且刻下一個刺青,總成本大概就是 1 美元上下,取決於 SOL 當時的市價。




「數位刺青」是透過公開可信區塊鏈,我們可以把一句話,一張圖,甚至一段影片,永遠留在去中心化的帳本裡,任何人都能查證。

4/06/2025

AI即時翻譯時代:為什麼仍需學習其他語言?

隨著人工智慧(AI)技術的快速發展,即時翻譯工具已經成為我們日常生活中的實用助手。然而,儘管這些工具提供了前所未有的便利,學習非母語仍然具有無可替代的價值。在這裡,會先說明即時翻譯工具的現況,學習其他語言對個人和文化的益處,以及為何在AI時代,語言學習依然不可或缺。



現今的即時翻譯工具利用AI和機器學習技術,提供高效且準確的翻譯服務。網路上隨便找就可以找到很多好工具,例如:

Google Translate:這個是老工具,但是​自2020年更新為神經網絡翻譯系統,提供即時文本和語音翻譯,並支持圖像翻譯功能。

Microsoft Translator:​微軟提供的工具提供文本、語音和現場對話的翻譯服務,並與其他Microsoft產品整合。 ​



Timekettle M3 Language Translator Earbuds:即時翻譯耳機!目前這個產品​支持40種語言和93種口音,提供觸摸模式、聆聽模式等多種翻譯模式。方便旅行者和商務人士使用。要注意的是,這類型小裝置恐怕才是最終翻譯的未來。雖然產品使用仍然有限制(例如需要有很好的網路速度,翻譯品質有待改善等等)但未來發展會非常快。

學習非母語對大腦的益處

學習非母語(第二語言)對大腦有多方面的積極影響,這些益處已在多項研究中得到證實。

增強記憶力和認知能力

學習第二語言需要記憶大量的詞彙和語法規則,這種持續的腦力活動有助於提升整體記憶力和認知功能。研究顯示,雙語者在記憶測試中表現優於單語者,這可能與他們在日常生活中頻繁地在兩種語言間切換有關,這種過程強化了大腦的執行功能和注意力控制。​

延緩認知衰退和失智症

雙語能力與延遲失智症狀的出現有關。​一項針對253名阿茲海默症患者的研究發現,能夠熟練使用兩種語言的人,比僅使用一種語言的人平均晚約四年出現失智症狀。這表明雙語者可能擁有更高的「認知儲備」,使他們能夠更長時間地抵禦與阿茲海默症相關的認知衰退。該研究的結果發表在《Dementia & Geriatric Cognitive Disorders》期刊上。Welcome to UCLA Health

強化大腦結構和連結

學習新語言會導致大腦結構的變化,特別是在與語言處理相關的區域。​研究顯示,雙語者的大腦白質完整性較高,這有助於提高大腦各區域之間的連結性和訊息傳遞效率。此外,學習第二語言還與灰質密度的增加有關,這些變化可能有助於提升認知功能並減緩與年齡相關的認知衰退。

文化理解與語言學習

學習其他語言不僅是語言技能的提升,更是對其他文化的深入理解:

  • 提升寬容度和文化敏感性:​接觸不同的語言和文化,有助於培養對多樣性的尊重和理解,增強跨文化交際能力。

  • 促進全球視野:​掌握多種語言使人能夠直接接觸不同文化的原始資料,拓寬視野,理解世界的多樣性。


所以呢?對我來說這些有意義嗎?

AI即時翻譯工具為我們提供了極大的便利,特別是在旅行、商務和跨文化交流中。然而,學習其他語言帶來的認知和文化益處是AI工具無法替代的。

當然如果你覺得自己就是很懶,想躺平有什麼錯嗎?想要享受科技進步帶來的愉快生活有什麼不對嗎?有捷運可坐難道都要自己走路鍛鍊自己的肌肉?我不太想管自己以後腦袋有沒有被鍛鍊難道不行嗎?繼續享受文明生活有什麼不對嗎? 當然沒有錯!但是最終你會失去選擇。文明科技的生活,會讓能掌握自己的人充滿了各種可能的選項,讓那個人可以決定我今天想要旅行的時候可以選擇坐飛機或者搭船,也可以決定我今天要鍛鍊腿力所以騎腳踏車。但如果做為「個人」失去了選擇性,那麼以後就只能「全然接受」別人的控制。透過學習語言了解不同文化,就是讓人多了一系列選擇:這個選擇可以讓這個人增加智商,視野...。也可以讓這個人再利用AI工具的時候比那沒有選擇的人更多!


4/03/2025

AI 輔助的人名查詢工具

在今天的數位時代,資料搜尋變得越來越簡單,但如何從海量資訊中篩選出所需的、準確的政府資料卻是一項挑戰。然而,隨著AI技術的進步,這一切都變得更加高效與便捷。在此將介紹如何透過AI輔助來搜尋政府資料檔案,並舉例說明一個專為台灣人設計的實作網站:閒閒貓www.saltycat.tw)。


AI輔助搜尋政府資料的優點


AI技術的加入,讓搜尋政府資料變得不再那麼複雜與繁瑣。首先,AI能夠從大量的網路資料中,快速找到相關的政府資料檔案,並且自動整理成簡單易讀的報告。這對於需要即時查詢資料的人來說,是一大福音。而且,AI會持續學習並更新資料庫,確保使用者能得到最新的資料。

在台灣,許多人可能會面對需要查詢各種政府資料的情境,但由於資料來自不同網站、來源繁雜,常常讓人覺得十分困難。閒閒貓這類型網站正是為了解決這個問題而誕生的。這是一個僅只用於台灣工具,透過AI的輔助,使用者只需要簡單的輸入關鍵字,便能迅速獲取各種公開的政府資料,並且由AI將這些資料整合、整理成一份清晰的報告。這樣一來,不僅節省了大量的搜尋時間,也能避免資訊過載。

不少人可能會擔心,這樣的工具是否會侵犯個人隱私。其實,這個工具所整理的所有資料,都是來自於公開的政府資料,並不涉及任何隱私或敏感資料。簡單來說,這個工具並不會持有或產生任何個人資料,它只是運用AI技術將公開資料彙整並提供給使用者。因此,使用者完全不需要擔心隱私問題。他在彙整的地方會列出所有參考資料來源,理論上,人類也可以自行去彙整這些公開資料,只是花的時間不划算。

從繁瑣到簡單,AI技術的轉變


在沒有大型語言模型(LLM)技術的時候,搜尋政府資料往往需要花費大量的時間和精力,甚至有可能因為資訊的混亂而找不到正確的資料。然而,隨著AI技術,尤其是LLM的普及,這項工作變得簡單多了。讓使用者能在短時間內找到所需的資料,提升工作和生活效率。

專門查“人名”功能,類似肉搜
閒閒貓專門查詢“人名”。這類似於網路上的“肉搜”功能,使用者可以透過輸入某個名字,快速獲得該人物的公開報告,包括其社會、工作背景等相關資料。更重要的是,AI技術會儘量區分同名同姓的人,讓使用者獲得更加精確的結果。這樣的功能對於需要快速了解某個人背景的使用者,無疑是一個非常實用的工具。

這個工具適用的使用者群體


企業招聘人員:在招聘過程中,招聘人員需要查證應聘者的背景資料。這個工具能幫助他們快速找出正確的應聘者資料,並避免因同名同姓而出現混淆。

企業風險管理部門:風險管理人員常需要了解合作夥伴或潛在員工的背景。AI技術能幫助他們快速獲得精確的資料,減少人為錯誤,從而有效控制風險。

法律專業人士:律師在進行案件調查或處理法律事務時,常常需要查詢某些人物的背景資料。這個工具能幫助他們更快速地獲得所需資料,避免錯誤,提升工作效率。

媒體與記者:記者在進行人物報導或新聞採訪時,可能需要查詢某些人的公開背景資料。這個工具能幫助他們迅速準確地獲得所需資料,避免報導錯誤。

一般民眾:有些普通使用者基於好奇或其他需求,也可能會利用這個工具查詢某個人的公開資料,尤其是當這些資料能夠對其生活或工作有幫助時。

社交平台用戶與網絡安全專業人士:對於關心個人資料安全的用戶或從事網絡安全工作的人來說,這樣的工具可以幫助他們查詢公開人物資料,保護自己的網絡安全。

總結來說,AI輔助搜尋政府資料和人名查詢工具,對於許多需要查找、整理、和分析資料的使用者來說,都具有極高的價值。無論是政府機構、公務人員、企業還是一般民眾,這些工具都能幫助他們更加高效、準確地處理資料,並避免了過去的繁瑣流程。



(本文90%內容利用AI生成)

7/31/2024

如何因應公司大幅資遣/裁員 (成為主管的31堂課)




自從馬斯克收購twitter執行大裁員(據說90%)之後,矽谷許多科技公司紛紛效仿,產生了一種抄襲是裁員的風潮。這裡並不探討大幅度資遣裁員的優缺點,而是要探討身為主管,應該怎麼因應組織內部的大幅度裁員。畢竟,當大幅裁員已經是確定要執行的事時,對於企業員工來說,沒有任何好處。
真正獲利的是企業擁有者(股東),企業是有可能因為大幅裁員,進行有效轉型,或者降低成本提高利潤。

對於企業員工而言,如果是被裁的一員,這通常和自己的績效沒任何關係,大幅度裁員通常和決策錯誤,經濟環境,產品策略錯誤有關。所以如果不是因為工作做得不好,而失去工作,要尋找下一個工作,等同是額外浪費自己時間。沒有被裁員的人,要面臨組織重整,並且在短時間工作量恐怕會增加。


第一,徹底了解自己的角色:

如果在公司還沒有正式宣布裁員之前,你是參與裁員決策的高級主管,你和CEO以及其他高級主管,一同討論,並且制定裁員的規模,補償措施,流程,以及決定應該裁掉哪些人。那麼你的角色就是裁員「決策者」之一。



如果,你收到你自己的主管通知說,你需要協助公司決定你的團隊要有哪些人離開,或者你的主管直接通知你,你的部門要有哪些人離開,而你是協助執行離職手續的人,未來你也是協助公司的工作轉換,組織重整的人。你的主管也知會你,你自已不是裁員的範圍之一,他希望你繼續留在公司努力。那麼你的角色是裁員「執行者」之一。

如果,你的主管直接通知你,你的部門要有哪些人離開,並且告訴你裁員整個流程是HR或者主管自己完全負責。他先通知你只是希望你有心理準備,而且也告知你,你不會被裁員,希望你安心做好自己的工作就好,未來的事情,未來再說。如果你是團隊主管/領導,而你收到這樣的訊息,你的角色就是「旁觀者」之一

如果,你知道裁員的時候,你也是被裁的名單之一,你就是「被裁者」

第二,根據自己的角色,先「決定自己的路」,再決定如何協助團隊成員

乍聽之下感覺有點自私,但其實當你對自己要走的路搖擺不定時,會對團隊成員有更大的傷害。

最簡單的角色是「被裁者」,你也沒有決定自己的路的選項。你唯一能協助團隊的就是,幫助他們了解事實,如果團隊有需要,幫助他們的下一步。例如,協助尋找工作,或者組織讀書會來協助大家成長。

其他角色都有兩條路可以選:「繼續擔任這個角色」,「離開組織」這兩條路自己要先選清楚。這兩條路無所謂好壞之分,但是你自己選擇的路,有很大的可能會影響到團隊成員。

如果你選擇繼續擔任「決策者」「執行者」,那麼你必須要很清楚的知道你自己是贊成並同意裁員,並且也贊成並同意裁員名單。如果你自己委委屈屈的說,「某某人呀~我其實並不贊成公司裁掉你,但我也沒辦法」這完全是推卸責任,只是讓自己有推掉壓力的說法。你的團隊成員會很清楚的知道你並不是個負責任的主管。管理者的真正人格特質,會在大幅裁員這種重大事件裡顯現。


如果你選擇繼續擔任「旁觀者」,你的團隊成員當然會清楚知道裁員跟你沒太大關係,你並不是負責的人。不過,也會知道以後公司有重大事情,其實你也不是負責的人。對於管理團隊來說,你能夠影響的事情非常有限。

如果你作為「決策者」「執行者」決定離開這個公司,可以跟所有團隊成員說明清楚,這時候對於團隊成員以及公司都會有很大好處。首先你和團隊成員的利益一致,你在幫忙公司處理流程時,可以更容易被別人信服,例如在說明資遣費時,大家知道你一定也會好好研究資遣費是不是合理,而更容易直接簽字走人,對HR對公司來說,這樣更容易短時間之內,處理好裁員流程。其次,對於團隊成員來說,當你說明裁員的不得已之處,他們更容易接受,尤其,如果你也是決策者之一。


第三,不要浪費任何危機

任何危機都是某種好機會。沒有人希望大幅度裁員,但作為主管,裁員一但發生,就不要浪費這個機會。只要你是主管,不管哪個角色,都有不浪費這危機的事要做。

培養自己的心理素質

這應該很好理解,特別是新手主管。裁員對某些人來說心理上不知怎地會覺得壓力很大,在辦公室崩潰痛哭的情況時有所聞。讓自己知道裁員就像天氣(颱風等等)一樣,你需要的是針對天氣決定自己該怎麼做,而不是對著天氣崩潰。

* 培養團隊為任何變動做準備

只要你曾經經歷過裁員,就會知道裁員像是颱風會來一樣,在心理上對裁員感到憤怒,生氣等等情緒反應是沒有任何好處。反倒是應該利用這樣的經驗,在擔任主管的職業生涯中,透過教育訓練或經驗分享,告訴團隊裁員總是有可能發生,而最佳的應對方式其實是,培養保障自己真正的市場價值。只有保持自己的市場價值,才能讓自己無論是不是被裁的一員,都不會影響自己的家庭或職涯力。而培養保障自己的市場價值,除了做好現在工作之外,鼓勵團隊成員每6~9個月去面試新工作也是個好方式。面試新工作並不代表自己要離職,也不代表對現在工作沒有熱情,這只是要讓自己知道自己還有沒有市場價值,如果價值降低,就可以儘早反應(例如多學新技術等等)

* 透過組織重整,找到真正有價值的工作

如果你是留下來的主管,切勿浪費裁員的好機會,重新審視每件正在做的事情,如果覺得沒必要,裁員這段時間是大幅減少不必要工作的最佳時機。畢竟,你的主管很難拒絕你說「現在少很多人,所以我們不應該做這個...」

* 其他還有很多

每個公司的情況有很大差異,但是作為主管,無論你是不是要留下來,無論你是扮演什麼角色,你可以做的事情真的非常多。歡迎以email與我們討論: consultant.3rd@gmail.com


7/29/2024

如何建立自己的電商市場網站?



自從有網路以來,電子商務發展始終不曾停滯。而最基本又有效的網路應用,莫過於透過網路銷售產品。也就是零售電商。作為電商,現在主要兩種管道可以銷售你的產品。


第一:自己架設網站,無論你是不是資訊科技背景出身,自己架上網站銷售物品,目前都不是困難的事情。許多知名品牌都有自己的線上銷售網站,例如Nike。而台灣也有很多在地成衣商也都是有自己的品牌網站,例如lativ


第二:透過電商市場平台,讓自己的產品在該平台銷售。這是資本額小的零售商最常使用的管道,例如 shopee蝦皮,Pchome商店街,都是此類。你可以在上面有自己的商店頁面,銷售自己的產品。而平台網站會提供各種金流物流等服務(當然這是要收費的)你只需要專注進貨銷貨即可。


電商市場平台,是一種線上「百貨公司」或者「商城」的概念。這樣的網站專注於讓其他企業(特別是小企業)可以來這個市場平台銷售產品。小企業可以免於架設網站,行銷等等麻煩事情,而平台網站可以專注於提供整合性服務。


顯然,建立自己的電商平台網站會比建立一般的電商網站麻煩些。可是仍然有簡單的方式。

第一:購買Saas(軟體服務),直接開設自己的電商平台網站。例如,直接到 Sharetribe 或 cs-cart 購買其服務。要注意的是,電商平台網站的「起始價格」其實不低,通常至少都要每月300美金,而且每筆交易都會被收取手續費。這和「單純賣東西」的網站有很大的不同。不過,再投入更多成本來建構自己的網站之前,這的確是比較簡單的方法,而且你也不需要擁有自己的開發團隊。


第二:以既有的開放原始碼(opensource)為基礎,建構自己的平台網站。sharetribe和cs-cart都有community版本,也都可以在github上找到。不過可以猜想得到,他們的安裝都有點繁雜,而且文件通常也不完整。如果你自己,或者合作夥伴有資訊科技背景,這也許是一開始成本最低的方法。


第三:從零開始自己建立:無論你的軟體開發團隊有多厲害,從零開始打造最短也需要4~6個月。但如果你有足夠的資本,這是長期最好的方式





7/28/2024

AI的計價方式 - 計算使用量嗎?


自從chatgpt出現之後,LLM以及各類型AI應用突然間大量湧出。可以想像到的是,就像其他的科技發展一樣,AI相關應用的發展速度只會越快不會越慢。

AI的應用方向雖然很多,但目前對於"如何收費"似乎沒有很智慧的方式。大部分的工具,仍然像SaaS一樣的以月租/使用量來收費。

這張圖是截至2024七月為止 gpt-4o API的收費,單純還是以使用量(token)來計算。如果是直接使用介面的話,每個月則是20美金。當然這20美金每個月,是有使用上限的,例如每三小時只能傳遞80個訊息,或者只能要求製作或者輸出多少自動生成圖片。




類似的收費模型,也同樣出現在AI應用上。例如,videogen.io是一個利用AI來生成影片的saas服務,它收取月費,不過這月費會有很大的使用限制,大概只能生成一小時的影片。


月費與使用量付費,的確是典型的Saas服務收費方式。這雖然沒有什麼不好,但是這樣的收費方式,大大限制了AI未來發展的潛力,因為現在的AI發展,都是以某種形式,大量取代某種人類正在做的事情。而使用月費或使用量付費,對於技術人員來說是合理的,但對於一般消費者而言,是不是使用AI技術並不是重點,而是解決消費者問題才是重點,而收費的方向,應該會朝向解決問題的本身,而不是技術上的數字。

舉個例子來說,AI大幅度取代了第一線的文字客服以及語音客服人員,對於經營7x24的不間斷服務的大型企業來說,如果原本要雇用20個客服人員,提供24小時不間斷的客服服務,想要用AI取代部分人力,只留下4位核心人員。那麼提供AI客服的應用公司,應該要的計費方式其實是16個AI客服的「薪水」,這個薪水自然小於原本的客服人員。如果仍然使用用量計費,例如這個月使用了五千萬個token,因此收費多少錢,這5千萬token不但很難讓一班企業理解真正的意思,也根本看不到AI的真正價值。如果計費的方式是「你雇用了我們16個AI員工,這16個員工薪水比人類低很多,而且不用勞健保,也從來不抱怨加班,更不會請假,失誤率也低」那對於企業端就很容易理解。


同樣的,未來AI會合併機器人的發展,仿生機器人很快可見。但計費的方式如使用類似租車的方式計費:每天租機器人費用2千元,充電費用另計。那麼該機器人潛在「用法」可能會被低估,AI機器人會變成人類的附屬工具:例如一台汽車。雖然這並沒有什麼不對,但潛在的價值將會大幅低估。一樣是費用,當仿生機器人改用「月薪」付費的時候,在使用上,它會變成企業員工的一部分,自然企業會用各種方式,強化它的應用方向,訓練它,讓他學習更多東西。

國內外的新聞電視台,已經開始可以看到AI主播,如果AI主播是以用量計費:例如講多少字的話語,產生多長時間的語音檔案,電視台其實很難比較有AI主播和人類主播的差異。但如果AI主播是以「月薪」計算,那就很容易理解AI與人類的差異。此時更容易可以讓人類去執行更有價值的工作,讓AI進行重複性質高的工作。

6/17/2024

如何建構能直接語音對話的AI聊天機器人

去年(2023)chatgpt出現之後,AI的各種應用突然之間瘋狂開展。chatgpt很快推出3,4而現在又有4o,其他AI周圍的各種相關服務也爆炸性的成長。

我本來預期很快的會出現直接對話型的AI,不過多半都是以應用程式存在,而不是直接可以用瀏覽器使用。主要的技術問題都已經有既存的解決方案,所以趁著有點空閒,自己來做一個玩看看



為了方便使用,整個應用界面打算僅使用瀏覽器,在LLM上當然是直接使用chatgpt-4o。而將語音轉成文字(speech-to-text)會使用openai 的model:whisper-1。文字轉語音會先用gTTS因為它不用錢,如果覺得效果不好,在改用其他付費的Saas服務。同時,為了簡單處理server session,最好還是有第三方登入比較好,我打算就使用LINE-ID來登入。


整個技術架構非常簡單


* 在digitalocean 弄個 ubuntu TLS VM, 安裝python3, flask, ngnix,  openai sdk等等

* nginx只是負責靜態網頁,並且提供SSL層,SSL解開後就proxy到flask server

* flask server負責處理收到的聲音,先儲存成webm然後送到openai識別文字

* 識別文字之後,直接把文字送到openai chatgpt-4o模型,取得ai的文字回答

* 拿到ai文字回應之後,把文字直接送到gTTS之類的文字轉語音,取得語音之後,利用socketio傳遞data steaming直接播放到瀏覽器

* 為了容易debug 對談的文字也會顯示在web上

最後的結果會是這樣呈現

想要試看看的話可以 到這個網址 https://api.shadow-warrior.space/ 先提醒一下(1)需要使用line登入 (2) 瀏覽器需要允許使用麥克風 (3)要記得開聲音不然不會聽到 






6/01/2024

善用第三方意見 third opinion

第三方意見是指,當你在某個事情裡面,難以決策,而對應的一方由於看事情的角度不同(或者利益不同)也讓你不知道該不該同意對方意見,因而你需要另一個人來提供「第三方意見」用於決策的參考。



善用第三方意見,可以對自己在決策時有很大的幫助。有些時候即便只是個很微小的事情,一個人可能下意識的就會尋求第三方意見。例如,一條街上有許多看似好吃的餐廳,每個餐廳當然都會說自己最好,現在人常常就拿起手機看一下google或者其他系統的評價,這就是個非常簡單的第三方意見。

另一個比較嚴肅的例子,在A醫院裡,根據健康檢查的結果,醫生可能會直接推薦你的親人去做手術,而你為求慎重,可能會帶著你的親人跟健康檢查報告,去B醫院裡諮詢其他醫生最好的診室方案。畢竟,醫療是專業的,我們無法自己判斷時,尋求另一專業人士的意見(反正尋求意見的成本通常不高)對自己親人的健康會有機會更好。


如果你是公司的高級主管,在考慮引入AI的時候,你或許已經接觸了一些AI廠商,他們的簡報自然會說明很多AI的好處優勢,但你也有可能猶豫不決,當然你會列出很多你在考慮的問題,只是那些AI廠商,當然早已對你的問題有標準的回答和反應。那些問題甚至可以透過chatgpt之類的工具給出非常好的回答。因此,對於想要銷售產品給你的人來說,他的意見當然會傾向這個產品一定是你所需要,無論他是明示或者暗示。

然而,萬一失敗,付出成本的終究是你的團隊,即便費用不高,還是會花很多人力成本。最好的方式,仍然是尋求第三方意見,如果你有類似經驗的朋友或過去的同學當然是最好。這些人可能都是你信任,也會盡可能站在你的立場,給你意見。但即便是可信任的朋友同學,大部分時候,他們不免仍然會以「不傷害感情」的方式委婉給予意見,所以很多時候你會收到中性的意見。


但其實也可以找付費的第三方意見顧問,因為這樣付費服務,提供的是「好的意見」以供給你參考,他的本質上並不是提供「好的結果」給你看。所以比較有機會取得某一個完全不同角度的意見,讓你的決策偏頗的機率降低。


---

參考資料:HR也需要第三方意見,肉搜一個人是最基本能得到第三方意見的方式


4/25/2024

PIP - 績效不好的員工應該放到PIP處理? (成為主管的31堂課)

績效改善計畫(Performance Improvement Plan,簡稱PIP )是企業在處理績效不好的員工時,人資典型處理方式。先說結論:對於至少知識性職位 - 例如軟體工程師 - PIP其實沒有太大好處,大部分的情況,最好不要使用PIP作為執行方式。



PIP是怎麼來的?

PIP最早來源已經幾乎不可考,它跟現代化企業的發展幾乎是一起的。當白領工作越來越多,員工的績效就變成企業重要的成功因素。相當然爾,一但有績效不佳的員工,改善計畫變得不可或缺。

執行層面上通常是:
(1) HR+主管,正式地告訴你進入PIP階段,通常都有清楚的階段時間與目標
(2) 每段時間(例如每天或者每天)主管會告知工作目標及改善項目,並告訴你這時間有沒有做到改善項目
(3) PIP結束之後。HR+主管應該清楚告知通過與否。通過就沒事,沒通過的話就可以根據勞基法第11條第5款,直接解除勞動契約(就是解僱/fire)

在台灣中文正體網路上可以找到非常多跟PIP相關的文章,雖然內容多半正確,但如果你是「主管」或者是「被放到PIP的員工」,如果你對自己在PIP內扮演的角色沒有根本性的理解,那大部分的內容對你幫助其實不大。

PIP在台灣真正的情況,在這篇論文說明的很清楚。:「臺灣臺北地方法院92年重勞訴字 第20號民事判決則首次肯認勞基法第11條第5款終止事由應有解僱最後手段性原則之適用,並逐漸成為通說見解。據此,雇主於引用此款終止事由時,如何證明其所為終止已盡解僱最後手段性原則即至為重要。針對此 一難題,於臺灣臺北地方法院91年度北勞簡 字第4號民事判決中,即嘗試以勞工績效考評 不佳而列為績效改善計畫對象,並以此作為 不能勝任工作之證明,而在臺灣新竹地方法 院97年度勞訴字第10號民事判決之法院見解 中,則明確認可如雇主之人事管理辦法原已 明訂績效改善計畫輔導程序,即不得捨此輔導程序不為逕為終止。自此之後,人力資源 管 理 六 大 職 能 中 , 開發管理(Talent Management and Development)之子功能「績 效管理」(Performance Management7,逐漸成為雇主用以證明符合解僱最後手段性原則之工具。」

簡單的說,雇主或者主管,要合法「解雇員工」的話,PIP已經被證實是合法的手段,甚至是「不得捨此逕為終止」。換句話說,再把員工放到PIP裡面的時候,主管與雇主,在實務上,是想要解雇員工,而非「改善其績效」。

如果我是員工,而我被放到PIP裡

如果你的主管清楚地跟你表明你的績效不好,要把你放在PIP的清單裡。其實他的目的就是想要解僱你。無論他「口頭上」怎麼說都不重要,他的真實目的就是想要解僱你。這時候,你其實也只有兩種選擇:

(A)這不是個適合自己的好地方,早點自己離開。
(B)撐過這個PIP,繼續在這個企業組織。

對很多人來說,選項(A)會讓自己非常不爽,為什麼我要自請離職,自請離職不就沒有資遣費。沒有錯,自請離職確實就沒有資遣費,而且似乎就順了主管的意。但老實說,一個人的職業生涯很長,保護自己的權益很重要,但是把寶貴的時間花在「保護自己的權益」上,是非常不划算。自己在對抗慣老闆壞主管的時候,或許感覺會很爽(如果達到目的),但長期來說,除非以後自己開公司,否則花時間在讓自己變得更厲害,技術能力更好,更有價值,遠比花時間在這種瑣事然後拿到其實只有少少幾個月薪水的「保護自己權益」上划算很多。

選項(A)如果是在大公司裡面,還有另一個方式,其實可以老實的跟主管/HR打開天窗說亮話,詢問他們是不是想要自己離開這個公司,如果這樣的話,你可以提出一個大家都省事的方式,可以請他們給你3個月的薪資然後你可以直接走人。三個月的原因是,PIP一般來說都是2-3個月,你可以解釋說,pip過程大家都會很辛苦,不如讓大家不要這麼累。

如果你要使用選項(B),那麼要記得所以事情都要有紀錄,有爭議的事情也要詳盡記錄。因為之後可以根據記錄到勞動局申訴。

有哪些事情要記錄呢?在PIP過程中,每一次主管要求的事情,如果你有做到,就要跟主管確認他也認定你有做到,如果主管說你沒做到,你是可以非常詳盡的要求主管說明:「那我要做到怎樣,以及在什麼時間內做到」然後,詳盡記錄差距,也可以記錄雙方不同意的地方,例如主管說這個程式你花了2天,他覺得應該1.5天等等。 對於知識型工作者(例如程式設計師)一但工作項目極端明確,大部分的人通常反而可以做得更好。也就是說,只要有耐心,願意逐步確認所有細節,PIP一定能通過,更重要的事,超時工作加班,統統不應該在PIP考量範圍之內。
結論就是,除非當初雇用你的時候,對你的能力判斷誤差過大,不然其實你一定可以通過PIP。即便主管最後說不通過,只要你有詳盡記錄,直接到勞動局申訴,有極大的機率,勞動局看到你的紀錄後,會要求公司不得解雇

如果我是主管,我想把績效不好的員工放到PIP裡

先說結論:如果你是主管,PIP是處理績效不好的員工的一個相當不好的方式,最好是不要用。

所有的人資可能會跟你說PIP是必要的。但那個是站在人資要符合法規的角度。也就是說,無論PIP結果為何,最後都會合法。而「最後都會合法」是人資想要的結果。但就主管而言,你的目的並不只要合法,你的目的在於希望讓績效不好的人用合法的方式離開。如果搞了好幾個月,最後還是無法讓他離開,還是得走資遣一途,那不但是浪費你跟那位員工的時間,同時也浪費了公司資源。

有些太菜的主管可能認為:我把員工放到PIP搞不好他會改善呀?以程式設計師為例,你會把他放到PIP通常都已經是很嚴重的情況,要在短短2-3的月大幅改善是不可能。比較有可能的是,這種程式設計師在溝通合作有很大的問題,但是一旦落入PIP,表是對於工作要有明確的定義,這時候程式設計師自然有很大的機率做得比之前好很多。所以看起來就會有改善,問題是又不可能一輩子都在PIP。 而且如果平常的溝通以及1on1都不足以讓這個程式設計師自己改變(無論是不是主管問題)通常之後的pip或者其他方式,也都是在浪費彼此時間。

如果已經確定是績效實在太差的員工,最好的方式就是先和HR以及高層主管事先討論過做法,並且把資遣當作可行的選項。

然後在1on1的時候,坦然地說明哪些地方不能達到預期期待,直接表示他不適合這個團隊,詢問員工這時候應該怎麼辦。這時候有一半的機率,員工會覺得不公平,另外一半的機率員工會很不爽。無論是覺得不公還是不爽,都有可能想要換部門或者離開,這兩者對於主管來說,都比PIP好。

如果員工不願意自己離開,那麼事先和HR以及自己的高層主管討論過的資遣備案就可以派上用場。對於知識工作者來說,通常如果主管都已經說自己的績效不好,都知道這樣繼續待下去只是會讓自己心累,只要有合理的資遣費,通常都還是願意離開。

無論是哪一種做法,關鍵在於互相清楚的瞭解彼此的目的,會比用「表面上要幫你績效改善,實際上想讓你離開」來的好得多。

3/14/2021

如何用教練(coaching)的方式引導團隊成員



作為主管,帶領引導團隊朝組織期待的方向前進有很多種方式。其中,「教練式引導」針對特定團隊成員行為改善的其中一種方式。

主管對於團隊成員的引導方式大概有四大方向:教練coaching, 導師mentoring, 領導leading 與管理management。在軟體團隊中,領導與管理是主管一定會做的,而教練coach與導師mentor就會視團隊的實際情況而定。

管理management:簡單的說,是直接或間接以組織所賦予的權力,以具體的方法,要求成員達到結果或者某種行為。舉例來說:「某甲,明天早上十點請到會議室去和某乙討論某專案」就是個具體的管理作為

領導leading:簡單的說,以自己的行為加上組織賦予的權利,以身作則的達到團隊合作的結果。舉例來說:「某甲,我明天早上十點會到會議室去和某乙討論專案,一起和我去吧」

導師mentor:一般來說是比較有經驗的成員,在執行自身的任務的時候,順便分享給相對沒經驗的成員。也許會回答問題,也可能教導做法,或者也分享經驗。通常由主管指派資深成員做mentor,但主管也有可能自己作為mentor角色。導師通常會比學生更厲害或更有實質經驗

教練coaching:以「口說」或者「間接」的方式,激勵或指引成員達到具體的結果。這具體的結果,幾乎100%是有成員直接完成。教練不一定比學生更厲害或更有實質經驗,但通常會更有「口說教學」經驗。例如在世界排名頂尖的職業網球選手,都有雇用教練陪伴指引戰術與練球,但那些教練過去甚至不見得是職業網球選手。

角色區分有時候並不那麼重要。例如管理與領導常常是混合進行,而在軟體團隊中mentoring coaching 當然也常混用。更常發生的例子是,主管指派一個導師mentor給新進同仁時,實際上常常混合了leading/mentoring/coaching。混合並不是壞事情,但如果資深同事,可以透過區別自己的角色,進而使用不同的工具達到目的,那效果會更好!


這篇文章僅只專注於教練式引導。



教練式引導的基本方式: GROW

最最基本的教練式引導模型是Grow,它有四個循環的階段:

GROW: Goal, Reality, Options, Will (what)

目標Goal:

教練和學生要決定一個具體的目標。這個目標可以是組織需要的目標,也可以是學生個人的目標。目標必須是可清楚辨別結果的。例如,網球選手想在四大公開賽進入前四強。在學生剛加入團隊時,可能會訂出目標是「了解現在的系統」,這其實並非清楚可辨別的結果,教練應該和學生花時間,討論具體的結果,例如「根據現在bug清單,修好一個bug並送出Pull Request之後通過團隊所有其他成員的code review並且合併到master branch」。雖然一次可以訂多個目標,但建議還是少量目標為主。

現況Reality:

教練和學生列出和具體目標相關的現況。例如網球選手此時世界排名是200,過去平均多久打一次正式比賽,平均練習時間等等。

以軟體開發團隊來說,現況可能是剛剛加入團隊,才剛剛有git的權限,過去的文件還沒看完,對某些專業領域還不了解,還不知道哪些問題應該問哪些人等等。

現況的描述是相當私人化,對於某些人來說可能還先牽涉到部分自我敏感的資訊,尤其是自己弱點。在還沒有互信的時候,此階段執行要特別謹慎。


執行選項options

了解現況之後,教練就要和學生討論選擇做法。這些做法當然是「學生」要去做的。以網球教練為例,可能會建立心肺功能的健身菜單,也可能會安排練習賽,也可能會為了強化發球。通常可執行的選項會多過可用的時間。當然就要和學生討論哪些選項應該要做,那些不做。

軟體開發團隊也會設定這些選項,但更著重要選項的優先順序,也就是哪些要先做,那些之後再做。

意願will/what:

監控執行,特別是監控執行意願。一個剛加入團隊的新鮮人,初期在意願上通常不是太大問題。如果已經在社會打滾多年,因為換工作的關係加入一個新團隊,作為教練或主管,就要稍微留意一下是否有意願或者動機的喪失。

這GROW是個循環,教練不見得一定要告訴學生這個模型,如果可以說明清楚是最好。根據實際情況,循環的長度會有不同,可是軟體開發團隊中的教練應該盡量控制在1~2週之間,切勿太長。


教練的功能

GROW模型優點是相當簡單,容易理解。缺點是教練實質功能在這個模型比較隱晦。在執行此模型時,也可參考以下重要功能:

建立互信

建立互信是教練最最重要的功能,沒有互信的情況下,很難達到教練完全的功能。

軟體開發工作上的互信應該會比運動型的教練容易一些,只要執行以下三點:(a)自己保持清楚明確的溝通 (b)永遠花時間跟確保完整傾聽對方 (c) 固定時間回饋  通常就能有一定的互信

因材施教

在軟體開發團隊中,教練vs學生,通常是一對一。而每個學生的情況截然不同,因材施教是顯而易見要達到的。因材施教在非技術的領域比較難,最好的方式可能還是縮短GROW的循環時間,如此可以在短的時間修正互相之間的不了解。


建立安全網

運動類型的教練都有其專業能力,可以判斷目前學生是要突破肌耐力極限,還是快要受傷應該休息。甚至某些運動項目,例如體操,就還真的有實際上的"安全網",因為受重大傷害絕對不會對目標有幫助。

就軟體開發團隊來說,安全網其實很重要,但相當隱晦。例如對於相對沒有工作經驗的人,教練應該在「現況討論」時,列出更細節的項目,例如估計時間的時候要估計完整的時間,包含unit test跟撰寫文件的時間。這些實質細節項目,其實會讓新鮮人更清楚並且有信心的做事。

安全網也有可能是透過工具,先行體驗犯錯,而減少日後在真實情況下犯錯的機會。例如,即便團隊沒有要求,教練也可以和學生討論使用某些靜態程式碼工具,在送出PR review先自己找看看有沒有顯而易見的問題。

建立安全網在某些時候是個極為重要的任務。一個教練要謹記,教練成功的原因,是因為學生成功了!不會有一種學生失敗了但是教練成功了的情況。因此安全網是個避免災難式失敗的保險方式。


鼓勵人心

真誠的鼓勵其實對大家都有幫助。尤其是在完成目標之後。因此目標的設定,最好是許多短期目標構成長期目標。舉例來說,如果網球選手的目標是進入四大賽的前四強,但目前世界排名還200,短期目標可能是先在最近的幾次三級比賽獲得冠軍。

軟體專案的目標甚至可以是逐日設定,所以鼓勵也可以逐日發生。所以當教練必然要花一些時間陪著學生。

時間分配

軟體團隊身兼教練的人,通常不會和運動類型的教練一樣是全職的工作。每個人在團隊都應該要有產出,兼職的教練也不例外,所以時間分配在學生的身上恐怕要特別注意。

最基本是要和主管討論時間分配。如果要不影響工作進度,一般的原則,每天15~20分鐘,再加上偶爾中午一起吃飯的時間就應該是上限。

這裡的15~20分鐘,指的當然是學生和教練一起執行檢討GROW模型的時間,並不包含假設教練身兼導師一起和學生工作的情況。

尋找外援

以有世界排名網球選手來說,年紀稍長的教練幾乎不可能跟他打練習賽,所以教練可能會透過自己的人脈(例如同個經紀公司)找到同等級的職業選手來打友誼賽。而更厲害的教練可以說服更高一級的選手來和自己的選手練習。

就軟體開發團隊來說,教練有可能比學生在專業領域還要厲害很多。然而也有可能由於教練資歷太深,反而對最近幾年的新的開發工具並不了解,教練也可以直接安排其他成員專門對某工具對學生直接教學。


其他教練模型

市面還是有很多不同的教練課程與書籍闡述不同的工具和模型。可以參考這裏