跳到主要內容

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 ,結果很棒,很開心,但無奈荷包不允許。

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

留言

這個網誌中的熱門文章

[CSS] z-index 在不同瀏覽器繼承問題

今天會討論到這個課題,是因為要實做一個Popup dialog,所以我們希望的結果如下圖。 可是在IE7 卻發生了這樣的情況。 Popup不論怎麼設定z-index都無法浮在最上層,我們看一下html架構發生什麼事情。

[教學] 快快樂樂刪除CodeIgniter index.php

預設的CI網址預設都設定為index.php同一層級,因此所有的程式都必須指定index.php導向才能開始,例如 http://localhost/ci/index.php/welcome/test http://localhost/ci/welcome/test 本文將說明如何將惱人的index.php消除,還你一個漂亮的URL。 設定開始: 接下來說明如何使用rewrite方式將惱人的index.php去除。 rewrite不清楚的人,煩請先自行google 首先要先確定Apache的 mod_rewrite 有 開啟 ,如果沒有開啟請設定好之後重新啟動apache。 接著,在根目錄底下建立一個新檔案,檔名為 .htaccess ,裡面程式碼如下: <IfModule mod_rewrite.c> RewriteEngine On RewriteBase / RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^(.*)$ index.php/$1 [L] </IfModule> 接著到 application/config/config.php ,開啟檔案修改 $config['index_page'] = ""; 注意: /index.php/$1 要根據你目錄,例如 http://localhost/index.php ,網站根目錄為 /ci/index.php 則要寫成 /ci/index.php/$1 接著至CI目錄下,尋找 config\config.php , 修改一下裡面的檔案,修改如下: $config['index_page'] = ""; 存檔後,如此一來大功告成。 參考資料 官方網站說明

[教學] Mojito 安裝與入門,install mojito for beginner.

mojito ,最近終於從 YDN 對外公開此專案,這個套件主要用於解決前端多重裝置及瀏覽器端的問題,後端服務採取 node.js ,因此使用上必定要先準備以下幾個元素 準備素材 c++ complier git Node.js > 0.4.x NPM > 1.0.x 安裝方式 git clone git://github.com/yahoo/mojito.git cd mojito/source sudo npm install -g . npm install . 以上四個簡單的步驟,就可以把 mojito module 完整安裝到服務器上,接著就可以開始進入 mojito 的世界 使用方式 mojito 提供了完整的 command line 給開發者使用,接著先建立一個基本 hello world 專案,跟著以下步驟完成第一個專案。首先建立一個 mojito application, mojito create app hello cd hello 切換到目錄之後,再接著建立自己的 mojit,這邊的 mojit 就像是一個應用(application)可能會包含許多個獨立網站體,擁有獨立架構的 MVC ,包含內部設定等,詳細資料可以參考官方的 說明 ,建立 mojit mojito create mojit HelloMojit 輸入指令後,會看到顯示結果如下, creating mojit called 'HelloMojit' (using "default" archetype) ✔ mojit: HelloMojit created! ✔ mojito done. 接著修改 application.json 這個 mojit 設定檔案,讓剛才新建立的 hellp application 指定底下有一個 mojit -> HelloMojit ,讓應用可以去執行 mojit controller ,修改如下, [ { "settings": [ "master" ], "appPort": 8666, "specs": { ...