[學習文件] LINE Bot 群組聊天摘要生成器

image-20221230150344227

前言:

大家好,我是 LINE 台灣的資深技術推廣工程師的 Evan Lin 。前一段時間, OpenAI 將他們知名的 GPTv3 的 NLP Model 開放出來給大家使用,並且提供一個好用的介面 ChatGPT 。 在全世界受到相當多的注意,也看到有相當多社群的開發者有分享相關的開發案例。

但是其實 ChatGPT 不是直接串接到聊天機器人就好,或許他也可以幫助我們解決許多以前的痛點。 以下這篇文章將分享如何透過 ChatGPT 來打造出一個專門在群組間幫你做摘要的聊天機器人。

解決的問題痛點

大家是否都有類似的問題? 常常加入一個群組內,有太多的訊息在裡面跑來跑去,一回頭來看,發現已經有太多未讀的訊息在裡面了。 常常需要進去後,慢慢地追每一個訊息來避免自己錯過太多 (FOMO) ?

筆者因為工作的關係,有許多群組也有相當多的訊息。以前常常思考到如何透過 NLP 或是 AI 的方式來幫助自己來整理相關內容的摘要。但是一直沒有比較好的成果。 但是從 ChatGPT 橫空出世後,這個部分的功能似乎可以實現了,我們來試試看。

如何使用 ChatGPT 幫你總結群組聊天訊息

  • 到一個聊天群組,按下複製將你需要的訊息複製起來。
  • 將他貼到 ChatGPT 並且加上 幫我總結 即可。
幫我用繁體中文總結

```
[Evan Lin]: 我肚子餓了 . 2022-12-29 13:04:01
[Evan Lin]: 想去吃午餐 . 2022-12-29 13:04:05
[Nijia Lin]: 不知道吃什麼好 . 2022-12-29 13:04:08
[Nijia Lin]: 大家想吃什麼勒? . 2022-12-29 13:04:13
[Evan Lin]: 我去買麥當勞 . 2022-12-29 13:04:18
```

ChatGPT 總結成果

image-20221230154217442

如何打造自己的群組總結聊天機器人

原始碼:

https://github.com/kkdai/LINE-Bot-ChatSummarizer

獲取 LINE Bot API 開發者帳戶

  • 如果你想使用 LINE Bot,請確保在 https://developers.line.biz/console/ 註冊 LINE 開發者控制台的帳號。
  • 在「基本設定」選項卡上創建新的消息通道並獲取「Channel Secret」。
  • 在「Messiging API」選項卡上獲取「Channel Access Token」。
  • 從「基本設定」選項卡中打開 LINE OA 管理器,然後轉到 OA 管理器的回復設定。在那裡啟用「webhook」。

獲取 OpenAI API Token

  • 在 https://openai.com/api/ 註冊帳戶。
  • 一旦你有了帳戶,就可以在帳戶設定頁面找到你的 API Token。
  • 如果你想在開發中使用 OpenAI API,你可以在 API 文檔頁面中找到更多信息和說明。

請注意,OpenAI API 只面向滿足某些條件的用戶開放。你可以在 API 文檔頁面中找到有關 API 的使用條件和限制的更多信息。

部署在 Heroku 上

  • 輸入「Channel Secret」、「Channel Access Token」和「ChatGPT Access Token」。

  • 記住你的 Heroku 伺服器 ID。

在 LINE Bot Dashboard 中設置基本 API:

成果

  • 依照「如何安裝」進行相關的部署流程。
  • 將機器人加入群組聊天室。 img

  • 能夠記住群組內的對話。

list_all.png

  • 直接送群組內容摘要私訊給你。

sum_all.png

相關指令如下

  • :gpt xxx: 直接對 ChatGPT 來對談,可以直接問他。
  • :list_all: 列出群組的訊息紀錄(all)
  • :sum_all: 幫你做訊息摘要。

開發流程記錄 (Golang 為主):

以下將逐步講解該如何開發出這樣的聊天機器人:

如何取得聊天群組 (group) 的資訊(透過 Webhook),並且儲存訊息:

首先,你需要知道你有在一個聊天群組內。所以如何取得 Group ID ,並且記錄相關的訊息。 這裡也順便提到,在 2022/12/27 的最新新聞,以後已經無法從 LIFF 取得 Group ID 的相關資訊。也就是說在群組中,能取得 LINE 群組 ID 只剩下透過 Webhook 的方式。

快速總結:

  • 聊天群組的 ID ( event.Source.GroupID ) : 請注意,如果是直接跟官方帳號的單獨一對一聊天。這邊的數值會是空的。
  • 儲存資料的方式:這個範例程式主要是給大家有相關感受,所以使用記憶體加上 map 的方式來儲存。如果大家真的要上線使用,請記得搭配資料庫來使用。

如何透過 Golang 來使用 ChatGPT API

快速總結:

如何透過 API 來幫你聊天室訊息摘要

快速總結:

  • 因為 ChatGPT 的呼叫比較花時間,先回覆給使用者,再來呼叫等待答案比較好。
  • 總結就是在所有文字前面加上一個 幫我總結 即可。 記得後方要用符號包起來,避免太多簡體字的話,可以加上請用繁體中文

相關技術文件:

未來相關工作

ChatGPT 是個很有趣的服務,本次文章透過他可以幫忙摘要一段文章的功能。來幫我們把聊天群組的聊天記錄來做一個總結。

這樣可以讓太久沒追到的人,可以快速跟上大家聊天的話題。

這次的程式碼相當的簡單易懂,希望可以拋磚引玉看到各位更多的應用。

ChatGPT 其實還有更多的應用可以探討,相信也可以透過這個服務讓 LINE 官方帳號發揮強大的功能。

如果你有任何建議或是疑問,歡迎透過 LINE Developers 的官方討論區或是LINE 開發者官方社群的官方帳號跟我們聯絡

[好書分享] 瘟疫與人-傳染病對人類歷史的衝擊

瘟疫與人-傳染病對人類歷史的衝擊
Plagues and Peoples
 共 66 人評分
作者: 麥克尼爾  原文作者: William H. McNeill  譯者: 楊玉齡  出版社:天下文化 

買書推薦網址:

前言:

這一本是今年所讀完的第二十三本書。這一本書當初跟著疫苗的書一起買的,但是其實這是一本 1975 年的書籍。他經過了多年的文獻蒐集,裡面有整理許多關於瘟疫與流行病對於人類文化的影響。

內容簡介:

人類實踐了太空旅行 卻擺脫不了傳染病的威脅
全球化消弭了疾病散播的界線 社群加深了恐懼   
歷史不斷證明 政經情勢極有可能一夕劇變 人性面對更嚴格的試煉
面對新型冠狀病毒、SARS、伊波拉、流感病毒、H1N1……
瞭解 是處理恐懼最好的方式 

「瘧疾」的兇暴,使莊嚴的朝聖之旅,化成疫病的溫床;
「霍亂」的版圖,藉交通便利的無國界化,再展新勢力;
「禽流感」的威脅,迫使高密度畜養的經濟方式,面臨挑戰; 

生活在樹上的靈長類遠祖,因跳蚤和體蝨而搔癢不已;初踏上地面的人類祖先,由於大草原瀰漫的昏睡症而病懨懨;開始農耕的文明社群,遭血吸蟲症削弱了整體生產力;歐亞間的經濟貿易,致使天花悄悄跟著商旅隊伍進入新地域;蒙古大軍勢如破竹,將鼠疫散布歐亞大陸;西方帝國靠著無心傳染的天花,達成了殖民野心;工業革命帶來的交通躍進,更是讓全球成為疾病大鎔爐。 

第1章 狩獵族群的行蹤 / 第2章 古文明世界的疾苦

這邊從原始人時代開始說起,疾病很多時候都是透過微生物或是狩獵物身上所傳染的。

到了古文明之後,農業變成是一種新興的文明。但是有許多的瘟疫與疾病都是伴隨著衛生習慣所衍伸出來的。像是那時候最嚴重的疾病就是「血吸蟲」所造成的死亡因素。甚至許多挖掘出來的古代屍體都有血吸蟲的蹤跡。看來那時候人民因為衛生習慣的不好,受到許多微生物與小型蟲類困擾的相關疾病為主。

裡面也有提到,因為那時候許多疾病都是寄生蟲相關的疾病。所以那時候也有一說是因為回教的人看到豬什麼都吃,認為如果沒有好好處理豬肉。也很容易受到寄生蟲的相關疾病。

第3章 歐亞疾病大鎔爐

第三章開始,瘟疫與疾病其實是會影響文化的發展與民族的興盛。蚊子產生的相關疾病開始肆虐全球,瘧疾變成是當時最致命的瘟疫。並且透過剛開始的各種大軍的東征西討,各種瘧疾也開始在歐亞大陸中流動。 這時候往往有大量外國的人的國家往往比較容易在當下容易先受到感染而更早產生抗體。

相反的這時候的日本,英國與中國因為都是島國生態。對於外來疾病的抵抗力就不足,這一個時期就有許多致命的疾病結果。當時的英國就是因為這樣對於鼠疫(也是當時最致命的黑死病),造成了巨大的影響。因為那時候英國的人口是倍增的,但是衛生習慣與抵抗力還不足。所以當時的黑死病讓整體人口停滯了許多年。

第4章 蒙古帝國打通路徑

蒙古的元朝成吉思汗造就了橫跨歐,亞,非三個大陸的帝國。但是也讓許多的瘟疫與傳染病跟著蒙古帝國而走。鼠疫依舊是這個時代最致命的疾病,並且老鼠隨著軍隊的一起移動,還有各國的商業船隻也會藏老鼠。

第5章 闖入美洲新世界

接下天花快速蔓延了美國新大陸,由於物資與衛生水平更讓許多美洲的相關民族深受其害。甚至西班牙跟墨西哥的戰爭,也因為墨西哥的軍隊受到天花的侵襲,也讓了西班牙就這樣獲勝。也可以看得出來瘟疫也會改變世界版圖的變化。

第6章 近代醫學大放異彩

最後一個章節就提到了疫苗的過程,跟瘟疫的對戰狀況。並且也開始整理各國的瘟疫情形。

心得

這一本書其實是 1975 年第一次完稿的,所以整本書其實是沒有談到 COVID 的狀況。 但是往往人類的文化真的都跟著大型的流行病而改變。不論是流行病造成某個總統的下台,還是瘟疫造成種族的滅絕。真的也都代表了人類真的深受各種疾病的影響。

[TIL] 為什麼 Passkeys 流程在建立帳號的時候,依舊需要帳號跟密碼?

image-20220608151748839

前情提要:

我曾經在 WWDC 結束後有寫了一篇關於 Passkeys 的整理文章。結果前幾天就看到一個有趣的 tweet ,讓我重新的檢視自己熟悉的程度如何?到底真正 Passkeys 的流程(第一次與之後的)有什麼不同? 這一篇文章將對這個部分做一個整理。

(2022/12/10更新)如果是第一次創建帳號,需要幾次手續? 為什麼?

image-20221212081920686

之前看到的 tweet ,裡面有提到為什麼看到 Yubico/java-webauthn-server 有接近 21 個步驟? 這也讓我好奇地去檢查了一下相關流程的原意:

WebAuthn ceremony sequence diagram

(Pic from https://github.com/Yubico/java-webauthn-server#architecture)

根據這個元件的說明圖,大家會很好奇。這裡需要合併跟另外一張圖一起來看:

  • Step: 1 ~ 4:
    • 帳號建立的時候,由於需要支援比較舊型的瀏覽設備(瀏覽器/OS) ,所以這裡還是要帳號跟密碼。整個流程跟以往的資料庫一樣,但是接下來流程有一些不同。
    • 如果是有支援 Passkeys 的 User-Agent 並且沒有要 Backward Compatability 的話,其實不需要 1 ~ 4 (不過應該都要有)。
  • Step: 5:
    • 這裡是參考 PKCE 的方式來生成Challenge ,也就事某個 AES 加密過後的數值。
  • Step 6 ~ 9:
    • 這時候可以產生 credential ID (optional) 回傳給 client 端作為 client agent 產生的數值。
      • User-Agent 可能傳過來 Challenge + credential command + credential ID
  • Step 9 ~ 18:
    • 這裡就是會啟動 Cliet Agent 去開啟 Passkeys 的支援登入流程。
    • 透過 private 加密的加密的 credential 傳給伺服器端。
    • 透過之前存取過的 Public key 解開後,確認是否為同樣的 credential ID。
  • Step 18 ~ 21:
    • Auth 完成後完成註冊。

幾個重點是:

  • 相關的流程絕對比原有的 ID/PW 還要更繁瑣(可能更挑設備)。
  • 但是第一次註冊完成後,如果設備允許,之後是不需要輸入 ID / PW 的方式。
    • Demo 範例也是從第一次就使用 Passkeys ,但是這樣往往無法對舊的設備來通用。

Passkeys 的登入體驗

img

img

對於相關設備的支援

image-20221212092215898

(From: https://www.passkeys.io/)

這邊可以知道,其實 Passkeys 裡面呼叫的 WebAuthn 會使用到瀏覽器端的 App 與 OS 版本有關。所以如果要希望早日完全導入 Passkeys 的系統,其實是瀏覽器支援外。 如果類似 Apple 的系統原生支援的話,在 App 的開發上也能夠早日導入。

最後

image-20221212085622584

(From: WWDC22 Session: Meet passkeys )

如同這一篇影片最後的一樣, Passkeys 並不是在節省整個登入流程。 而是在加強整個登入流程的安全性與使用者便利性。為了達到真正的 Password-less 的境界,其實需要許多業界的配合:

  • 伺服器端需要都使用 WebAythn 來寫自己的登入端應用。
  • 並且讓相關伺服器的版本更新到最新版本
  • 也提醒使用者要使用新的版本的手機(好像比較簡單)。

Reference

[TIL] 為什麼 Passkeys 流程在建立帳號的時候,依舊需要帳號跟密碼?

image-20220608151748839

前情提要:

我曾經在 WWDC 結束後有寫了一篇關於 Passkeys 的整理文章。結果前幾天就看到一個有趣的 tweet ,讓我重新的檢視自己熟悉的程度如何?到底真正 Passkeys 的流程(第一次與之後的)有什麼不同? 這一篇文章將對這個部分做一個整理。

(2022/12/10更新)如果是第一次創建帳號,需要幾次手續? 為什麼?

image-20221212081920686

之前看到的 tweet ,裡面有提到為什麼看到 Yubico/java-webauthn-server 有接近 21 個步驟? 這也讓我好奇地去檢查了一下相關流程的原意:

WebAuthn ceremony sequence diagram

(Pic from https://github.com/Yubico/java-webauthn-server#architecture)

根據這個元件的說明圖,大家會很好奇。這裡需要合併跟另外一張圖一起來看:

  • Step: 1 ~ 4:
    • 帳號建立的時候,由於需要支援比較舊型的瀏覽設備(瀏覽器/OS) ,所以這裡還是要帳號跟密碼。整個流程跟以往的資料庫一樣,但是接下來流程有一些不同。
    • 如果是有支援 Passkeys 的 User-Agent 並且沒有要 Backward Compatability 的話,其實不需要 1 ~ 4 (不過應該都要有)。
  • Step: 5:
    • 這裡是參考 PKCE 的方式來生成Challenge ,也就事某個 AES 加密過後的數值。
  • Step 6 ~ 9:
    • 這時候可以產生 credential ID (optional) 回傳給 client 端作為 client agent 產生的數值。
      • User-Agent 可能傳過來 Challenge + credential command + credential ID
  • Step 9 ~ 18:
    • 這裡就是會啟動 Cliet Agent 去開啟 Passkeys 的支援登入流程。
    • 透過 private 加密的加密的 credential 傳給伺服器端。
    • 透過之前存取過的 Public key 解開後,確認是否為同樣的 credential ID。
  • Step 18 ~ 21:
    • Auth 完成後完成註冊。

幾個重點是:

  • 相關的流程絕對比原有的 ID/PW 還要更繁瑣(可能更挑設備)。
  • 但是第一次註冊完成後,如果設備允許,之後是不需要輸入 ID / PW 的方式。
    • Demo 範例也是從第一次就使用 Passkeys ,但是這樣往往無法對舊的設備來通用。

Passkeys 的登入體驗

img

img

對於相關設備的支援

image-20221212092215898

(From: https://www.passkeys.io/)

這邊可以知道,其實 Passkeys 裡面呼叫的 WebAuthn 會使用到瀏覽器端的 App 與 OS 版本有關。所以如果要希望早日完全導入 Passkeys 的系統,其實是瀏覽器支援外。 如果類似 Apple 的系統原生支援的話,在 App 的開發上也能夠早日導入。

最後

image-20221212085622584

(From: WWDC22 Session: Meet passkeys )

如同這一篇影片最後的一樣, Passkeys 並不是在節省整個登入流程。 而是在加強整個登入流程的安全性與使用者便利性。為了達到真正的 Password-less 的境界,其實需要許多業界的配合:

  • 伺服器端需要都使用 WebAythn 來寫自己的登入端應用。
  • 並且讓相關伺服器的版本更新到最新版本
  • 也提醒使用者要使用新的版本的手機(好像比較簡單)。

Reference

[好書分享] 人才管理聖經 - 向財星五百大學習最佳實務

人才管理聖經 - 向財星五百大學習最佳實務
作者: 王冠軍等合著  出版社:天下雜誌出版 
出版日期:2018/08/29 語言:繁體中文 

買書推薦網址:

前言:

這一本是今年所讀完的第二十二本書。有一些時間沒有開始讀新的書籍,剛好最近公司的社團又到了可以買書的月份,於是來找了幾本新的書籍來看。而這一本呢,本來是我的老婆想買的。就想說順手買了,也把他看完了。

人才的管理,其實不是 HR 單獨的責任。而是每一個部門管理經理(也就是我們常說的 People Manager) 需要負責的部分。對於部門中有著許多的跟 HR 相關疑問,可以透過這一本來了解全貌,真正的知道 HR 是如何思考一些日常的人事管理內容。

內容簡介:

保聖那管理顧問公司總經理許書揚,繼出版《CEO要的不是你》、《CEO最在乎的事》、《態度講堂》三本職場工作暢銷書籍後,率領國內13位人資管理權威,一同企劃撰寫《人才管理聖經》,以人資管理角度解決企業遇到的各種疑難雜症,協助企業突破瓶頸、自我提升,成功轉型。
    
近幾年來,過去扮演台灣經濟起飛火車頭的各式產業,面對國際間強調專業分工,以及東協十國與中國大陸崛起的雙重夾擊,轉型突破勢在必行。在轉型突破的過程中,組織內各個環節應與人力資源緊密結合,因此人力資源將扮演企業轉型成功的關鍵因子。
   
本書整合了13位服務於《財星》五百大及各大知名企業、閱歷豐富的資深人力資源管理者的寶貴經驗,分為五大領域,將HR在企業內遇到的各式問題及解決之道加以詳細說明,再透過insight,讓讀者了解HR針對不同情境做決策時的思考邏輯,提供企業主、HR或未來想朝國際人發展的年輕人做為參考。
    
本書以實際案例加專業解析的編排方式呈現,讓讀者透

【Part 1】人才管理方針大哉問

這一個章節講到的是最基礎的人才管理的基本守則部分,分別從:

  • 企業願景
  • 人員選擇工作的想法
  • 如何重視人才管理
  • 相關守則
  • 勞資關係

來開始公司內部去思考,為什麼人才管理是重要的,究竟要如何才能做到人才管理的方針。

【Part 2】成功第一步:找到 Mr. Right

這一個章節,我覺得蠻有趣的。一開就提到 HR 其實也是可以有行銷概念與相關創意的基礎,對於公司社群,招募面向的相關技能。這些對於 HR 來說可以讓公司的招募上有更多的誘因,並且也可以更容易的接觸公司想要的人才。

接下來針對數位時代的來臨,該如何來有新的思維來招募。這邊有提到:

  • 把離職人員變成公司最好的宣傳。
  • 跨領域人才
  • 面試結束後,依舊是人才觀察好機會。

【Part 3】人才管理的眉角

工作評價(績效管理)需要注意以下:

  • 強制正規化的缺點
  • 職位跟期待
  • 要升到某個職位,先需要有(展示)相關能力

尾牙提升士氣的方法:

  • 透過尾牙轉換為同仁表演的訓練經費
  • 讓同仁相互合作,變成難忘的回憶。

內部人資顧問大翻身:

  • 人資作為談對躁動的調查
  • 針對非專業面向的輔導

留才獎金: 最後的外科手術,效果卻最低。

【Part 4】協助企業華麗轉身與蛻變

企業轉型要從上面開始推動,不論基礎人員與流程如何修改,如果主管們的心態沒有改變,企業轉型就會窒礙難行。

原本大型工廠的打卡制度,因為打卡鐘的排隊造成困擾。反而改成人員登記後,留給主管們相關的操作空間,更能夠增加產能。並且第一線主管也能夠發揮管理的能力。並且需要有相配套的監督方式,來避免舞弊的發生。

併購前,先確認自己的「人」沒有問題。不論是併購後的不適應狀態,還是併購前的一些痛苦與猜測。只要是人才正確,並且能夠順利的轉型與合併,才能夠真正地發揮效果。

【Part 5】企業長青的關鍵──人才發展

內部輪調的好處:

  • 節省人力成本(招募與相關訓練)
  • 增加工作技能
  • 良性循環

關於內部訓練:

  • 訓練是投資
  • 建議外部老師為主
  • 10, 20, 70 法則
    • 10 正式上課
    • 20 互動式學習
    • 70 具體實踐

心得

這一本書都有用 HR 人事經理的角度來分享相關案例的觀察 Insight ,並且透過不同的人事經理的專案與分析面。身為不是人資的人來看,也會覺得很有收穫。 裡面有講到很多地方也相當贊同,公司的人資部門往往是許多員工的第一個(可能也是最後的)窗口。許多人事規範也都相當重要。 裡面更有章節寫到人資長轉任執行長的故事,我也覺得相當贊同。 雖然人資同仁不一定有相關財務,技術,甚至是行銷的主要技能。但是卻有公司最重要的一個資產,也就是人員的信賴度。也有著人員的管理能力。 給所有對於人資相關領域有興趣的朋友,也給想要學習如何管理人才,甚至是來協助人才發展的經理人們。

[學習心得][Golang] 透過 Cobra 與 go-gpt3 來寫一個 console ChatGPT

image-20221207170957469

ChatGPT 是一個聊天對話的語言模型,它是由 OpenAI 開發的,被訓練來回答用戶的輸入。它是基於 GPT-3 架構設計的,具有高度的自然語言理解能力,能夠通過文本形式的對話來與用戶交流。通過使用 ChatGPT,用戶可以和訓練過的語言模型進行自然的對話,並得到相應的回答。

最近最紅的網站大概就是:

https://chat.openai.com/chat

Github

https://github.com/kkdai/chatgpt

參考文章:

讓 AI 來代勞

以下文章讓 ChatGPT 來寫 ,發現整體上還算很方便。正確性也還可以。

幫我寫一篇介紹如何用 cobra 與 go-gpt3 來寫 golang console client 的文章

由於 MaxToken 只能限制在 4000 ,所以當 ChatGPT 卡住的時候,請打上 繼續 即可。


什麼是 Cobra

Cobra 是一個用於構建強大的命令行用戶端的 Go 庫。它提供了一個模板引擎,可以讓您輕鬆地定義命令和子命令,並提供支援幫助和提示信息。

Go-gpt3 是一個 Go 語言庫,提供了一個簡單的方法來使用 OpenAI 的 GPT-3 機器學習模型。GPT-3 是一個非常強大的語言模型,可以用來處理自然語言處理任務,如文本生成和分類。

現在讓我們來看看如何使用這兩個庫來寫一個 Golang 控制台客戶端。首先,您需要安裝 Go 和 Cobra:

$ go get github.com/spf13/cobra/cobra

接下來,創建一個新的 Go 專案,並在 main.go 文件中寫入以下代碼:

package main

import (
	"fmt"

	"github.com/spf13/cobra"
)

func main() {
	// 創建一個新的 Cobra 命令行應用程序
	var cmd = &cobra.Command{
		Use:   "gpt3-console-client",
		Short: "A simple GPT-3 console client",
		Long:  "A simple GPT-3 console client built with Cobra and Go-gpt3",
	}

	// 定義子命令
	cmd.AddCommand(...)

	// 執行命令
	cmd.Execute()
}

這個程序定義了一個名為 gpt3-console-client 的 Cobra 命令行應用程序,並添加了一些子命令。

導入 Go-GPT3

接下來,您需要安裝 Go-gpt3 庫並導入它:

$ go get github.com/gpt3/go-gpt3
import (
	"fmt"
	"log"

	"github.com/gpt3/go-gpt3"
	"github.com/spf13/cobra"
)

現在,您可以使用 Go-gpt3 庫來創建一個 GPT-3 客戶端並進行諸如文本生成之類的操作。首先,您需要創建一個 GPT-3 客戶端,並使用您的 OpenAI API 密鑰進行身份驗證:

func main() {
	// 創建一個新的 GPT-3 客戶端
	client := gpt3.NewClient(gpt3.ClientConfig{
		APIKey: "YOUR_API_KEY",
	})

	// 創建一個新的 Cobra 命令行應用程序
	var cmd = &cobra.Command{
		Use:   "gpt3-console-client",
		Short: "A simple GPT-3 console client",
		Long:  "A simple GPT-3 console client built with Cobra and Go-gpt3",
	}

	// 定義子命令
	cmd.AddCommand(...)

	// 執行命令
	cmd.Execute()
}

接下來,您可以定義一個子命令來執行文本生成操作。例如,以下代碼定義了一個名為 generate 的子命令,它接受一個 prompt 參數,並使用 GPT-3 模型生成文本:

// 定義 `generate` 子命令
var generateCmd = &cobra.Command{
	Use:   "generate",
	Short: "Generate text using GPT-3",
	Long:  "Generate text using GPT-3 with the given prompt",
	Args:  cobra.MinimumNArgs(1),
	Run: func(cmd *cobra.Command, args []string) {
	// 取得用戶輸入的提示
	prompt := args[0]
	
	// 使用 GPT-3 模型生成文本
	generatedText, err := client.Generate(prompt)
	if err != nil {
		log.Fatal(err)
	}

	// 輸出生成的文本
	fmt.Println(generatedText)
},

}

func main() {
// 創建一個新的 GPT-3 客戶端
client := gpt3.NewClient(gpt3.ClientConfig{
APIKey: "YOUR_API_KEY",
})

// 創建一個新的 Cobra 命令行應用程序
var cmd = &cobra.Command{
	Use:   "gpt3-console-client",
	Short: "A simple GPT-3 console client",
	Long:  "A simple GPT-3 console client built with Cobra and Go-gpt3",
}

// 將 `generate` 子命令添加到主命令
cmd.AddCommand(generateCmd)

// 執行命令
cmd.Execute()
}

現在,您可以執行應用程序並使用 generate 子命令來生成文本了。例如,您可以輸入以下命令:

$ gpt3-console-client generate "Once upon a time"

這將會生成一段文本,以 “Once upon a time” 為提示:

Once upon a time, there was a beautiful princess who lived in a far-off kingdom. She had long, flowing hair and a kind heart. One day, a handsome prince came to her kingdom and asked for her hand in marriage. The princess was overjoyed, and the two of them lived happily ever after.

希望這篇文章對您有所幫助,讓您能夠輕鬆地使用 Cobra 和 Go-gpt3 來寫 Golang 控制台客戶端。