跳到主要內容

GPT3 API 當中,你可能沒注意到的 ChatML

GPT-3 API 就這樣悄悄的來了!

是的, GPT-3 是一種由OpenAI提供的語言模型,它可以通過API接口使用。

以下是使用GPT-3 API的基本步驟:

  1. 註冊OpenAI帳戶:請訪問OpenAI網站(https://beta.openai.com/signup/),並創建一個帳戶。一旦註冊成功,您就可以訪問OpenAI的API密鑰。

  2. 訂閱GPT-3 API:在OpenAI中,您需要訂閱GPT-3 API,以便可以使用它。訂閱後,您可以獲取API密鑰。

  3. 安裝API軟件開發套件(SDK):您可以在Python、Node.js、Ruby、Java和其他語言中使用OpenAI API。您需要安裝相應的SDK,以便使用它。

  4. 獲取API密鑰:在獲取API密鑰後,您可以將其保存在環境變數中,或直接將其添加到代碼中。

  5. 連接到API:使用SDK中提供的函數和類,您可以連接到GPT-3 API。

  6. 發送請求:一旦您已連接到GPT-3 API,您可以通過向API發送HTTP請求來使用GPT-3模型。

當然我們也不是只講這種大家都知道的幹話,上述這些 chatgpt 都可生出來給你, 以下為重點,再次感謝您可以閱讀到這邊 ...本文開始



ChatML

這次 GPT3 API 的釋出,除了這件事情之外,另外還有 ChatML 以及 fine-tuning 這兩個對於自己來說是個大重點。

ChatML 的釋出,讓我們可以使用 api 像是使用 chatgpt 讓整體上下文開始有了連貫,其中官方也有提供完整的描述。

https://github.com/openai/openai-python/blob/main/chatml.md

在這段過程裡面在 OpenAI 的GPT API中,message 中的 role 指定了對話中發言的角色,可以是 system、user、assistant中的任何一個,具體的差異如下:

system:表示對話接下來這段對話的背景,角色分配,情境。

user:表示用戶輸入的信息。這可以是文字輸入內容。

assistant:表示對話系統助手生成的訊息,可以是對前一輪對話的回應、應用程式特定的提示或任何其他形式的輸出。

這些角色的目的是區分不同的訊息類型,以幫助GPT模型更好地理解上下文和對話的流程,從而生成更有意義的回應。

範例程式碼如下,

import openai
openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "你將扮演我的貼身小助手."},
        {"role": "assistant", "content": "非常榮幸成為您的貼身小助手,請問有什麼需要我協助的事情嗎?"},
        {"role": "user", "content": "誰是世界籃球之王?"},
        {"role": "assistant", "content": "普遍認為NBA的迈克尔·乔丹(Michael Jordan)是史上最偉大的籃球運動員之一,他曾贏得6次NBA總冠軍、5次NBA最有價值球員獎、10次NBA得分王等眾多榮譽,並被譽為「空中飛人」"},
        {"role": "user", "content": "籃球之王的媽媽是誰?"}
    ]
)

根據這樣的上下文,我們就能夠得到 德洛丽丝·乔丹(Deloris Jordan) 這個回應,這顯然是上下文起到很大的作用,對吧!

省還能夠省

根據上述大家可以發現 ChatML 的模式,的確可以很精確地將上下文進行貫穿,但同時也大幅度的增加了 token 的數量

然而勤儉持家的我們,可以先透過 chatgpt 先將模擬的對話進行演練,輸出結果當然會有些許落差。

然而,透過這其中對話的過程,都可以先透過 playground 或者 chatgpt 裡面事先演練過,並不一定都需要透過 chat-api 實際執行。

勤儉持家是美德

然而,這邊有發現,其中的內文是可以偷雞的,可以將冗詞刪除,例如,

『非常榮幸成為您的貼身小助手,請問有什麼需要我協助的事情嗎?』

就可以縮減為

『我已成為您的貼身小助手』

將這樣的 content 縮減置換後,發現兩者所產生的結果會是相近的,

其中有幾個遊戲規則,

  1. 身為 system 可以簡化,
  2. 身為 user 問題可以簡化,
  3. 身為 assistant 簡要回應至關鍵連結點即可。

至於可以偷雞到什麼程度,這中間需要玩家自行判斷。

減少 token ,就是降低 cost, 雖然 gpt3 model 價格已經比 davinci 還便宜很多,但勤儉持家就是美德,同胞們請繼續保持。

題外話及結語

很多時候我們會以為整個討論是有全文貫穿,但實際思考下來,並非如此,真正需要貫穿的過程,可能就是那 3-5 個來回而已,其他對談的過程其實都已經開了新的題目。

當然全部結果塞進去 messages ,結果很棒,很開心,但無奈荷包不允許。

對於領台幣的我們,能夠勤儉持家是個美德,共勉之,有任何回饋歡迎留言給我,或者按讚訂閱分享,多謝,感謝!

留言

這個網誌中的熱門文章

npm 還可以看影片,沒想到真的有人這麼做

 還真的有人做這件事情, 庆余年2剛上線,有一位小哥竟然利用 npm 包的機制,將整套高清視頻都搬上來了。 https://x.com/fengmk2/status/1791498406923215020 圖片來源, https://x.com/fengmk2/status/1791498406923215020/photo/1 此 Package 出處 https://www.npmjs.com/package/lyq2?activeTab=versions 截圖留念, 機制說明 NPM(Node Package Manager)是一個流行的 JavaScript 軟件包管理器,用於管理和分發 Node.js 應用的依賴。它允許開發者將自己的代碼打包成「包」,並上傳到 NPM 的公共註冊表,供其他開發者下載和使用。這個過程通常包括以下步驟: 創建 NPM 包 :開發者將自己的代碼和相關文件打包成一個 NPM 包。 上傳到註冊表 :將包上傳到 NPM 的公共註冊表。 下載和使用 :其他開發者可以通過 NPM 命令行工具下載並安裝這些包。 這位小哥利用這一機制,可能是通過將整套高清視頻文件打包成 NPM 包並上傳到公共註冊表。其他人只需通過簡單的 NPM 命令即可下載這些視頻文件。 影響 版權問題 :這種行為涉及明顯的版權侵犯。高清視頻通常受到版權保護,未經授權的分發和下載都是非法的。 NPM 註冊表的可靠性 :這類內容的出現可能會損害 NPM 註冊表的可靠性和聲譽。NPM 註冊表是開發者分享和使用代碼的重要平台,如果充斥著這些不合法的內容,會影響其公信力。 潛在的安全風險 :將視頻文件偽裝成 NPM 包可能會帶來潛在的安全風險。下載這些包的用戶可能會無意中下載到惡意軟件或其他有害內容。 技術濫用 :這一行為展示了技術的濫用,原本為了方便開發者分享和使用代碼的機制,被用來分發非法內容,會對整個開發者社區造成負面影響。 歡迎留言給我,讓我們得到更多討論,一起回饋更多可能。 如果對於技術架構或者技術開發有相關需要顧問教育訓練服務或專案開發,聯絡方式如下,或者是與皇漢科技 EXMA-Square 進行聯繫。 FB: https://www.facebook.com/clonncd/ Twitter: https://twitter.com/clonncd 熱血漢誌: htt

從易經八卦到 AI 應用:用 LLM 自動化數據整理的工程探險

從 2023 年開始,在去年 為何技術老人這樣想那樣做? 的那場分享之前,就開始探索管理的更多可能性,以及探索更深層的奧秘,宇宙的二進位,生活中的陰與陽,到透過朋友深入探索 8 進位和 64 進位的玄學領域。 一開始只是想將自己體驗進行工程的還原,先是以為透過 ai 可以很快(偷懶)就可以解決掉資訊整理的問題,這邊有些踩雷的過程,以及對於整體實作的紀錄,分享給大家。 人生,原本以為很輕鬆的事情,最後都會不太容易 原本目標是希望將網路上許多的八卦資訊,以及六十四卦象內容,透過 AI 將資料進行彙整,就資料進行整合以及釐清就花了些時間 (汗) 以下且聽我慢慢道來 ... . 思緒步驟 大概步驟會是這樣,首先進行基礎八卦資訊搜集,大概由乾掛到坤卦,這些都可以在網路上容易取得,(這邊採用的是先天八卦順序) https://chatgpt.com/share/672083ea-4000-8010-ae50-3e120d845244 接著進入重點, 64 卦目前並沒有太多工程項目可以進行整合資料,因此主要透過 ChatGPT 產生資訊,以及透過 wiki 進行先達到快速效果。 https://chatgpt.com/share/67208416-c210-8010-9d43-a8c7235a1b03 緊接著,就會得到一串很像是 64 掛的內容, 不看不知道,一看嚇一跳,取得資料中會包含錯誤資訊,對應錯誤的上下卦,但畢竟是電腦,有錯很正常,這才是我認識的 ChatGPT (這邊也有試過 Claude 也有相同問題)。 校正回歸 此時經驗就非常重要,透過 AI 協助我們進行資料編寫比對,但不是單純的比對,而是要先想清楚自己的目標是什麼。 64 卦,兩兩相對。 64 卦,每個卦象不重複。 基礎於一開始 『懶』的狀態 , 首先直覺性的,是將比對錯誤的 json 直接丟入,原本預計透過 chain of thought 的方式,讓 llm 進行重複確認,但 ... 測試發現,需要透過 llm 產出原生資料越大時,隱藏的重複錯誤性會隨之提高。 llm 不轉,我轉 因此,這邊的解法朝向糾錯為主。 首先回到目的性,我們需要得到的結果是 完整的 64 卦象 取得對應的正確上下卦位置。 當我們有這樣明

Redis 已經不再免費了嗎?Redis is no longer free software ?

  根據Redis Source Available License 2.0 (RSALv2)的條款,這份授權協議提供了一定程度的使用、複製、分發、使其可用、以及創建衍生作品的自由,但這些自由受到特定限制,特別是關於將軟體功能作為服務提供給第三方或分發軟體的方式,這可能限制了軟體的自由共享和再分發。 根據自由軟體基金會(Free Software Foundation, FSF)和開源倡議組織(Open Source Initiative, OSI)定義的自由軟體和開源軟體的標準,一個軟體要被認為是“自由軟體”或“開源軟體”,它需要允許用戶在任何目的下運行軟體、研究和修改軟體、以及自由地重新分發複製品,有時還包括創建和分發衍生作品的自由。 RSALv2設置了一些重要的使用和分發限制,特別是關於禁止將軟體或其修改版本作為服務提供給第三方的限制,這可能不符合FSF和OSI對自由軟體或開源軟體的定義。這些限制主要是為了保護Redis Ltd.的商業利益,同時允許使用者在某些條件下使用和修改軟體。 因此,雖然RSALv2提供了一些使用和修改軟體的自由,但它由於上述限制,可能不會被廣泛認定為符合“自由軟體”或“開源軟體”的嚴格定義。它更像是一種介於傳統封閉源代碼軟體和開放源碼軟體之間的“源可用”授權模式。 主觀想法 怎麼開源的狀態下還是需要商業利益的支持,只有在商業模式下才能走得長久,這段協議會影響到的基本上三大公有雲 Azure / AWS / Google Cloud Platform 絕對首當其衝,但如果以服務提供商的角色,能夠跟這樣的開源坐下來好好談談,也許這樣的 Agreement 可能對於 Redis 後續的生態發展才會是好的方式? 就讓我們持續看下去! Ref: https://lwn.net/Articles/966133/ https://redis.com/blog/redis-adopts-dual-source-available-licensing/ https://redis.com/legal/rsalv2-agreement/