Azure OpenAI 模型比較: GPT-3.5 Turbo vs. GPT-3.5 Turbo 指示

微軟九月公布的 Azure OpenAI 最新消息中提到: Azure OpenAI服務現在支援 GPT-3.5 Turbo 指示模型。

看到這個消息,不知道大家有沒有閃過這樣的想法: GPT-3.5 Turbo 指示? 難道跟 GPT-3.5 Turbo 是不一樣的模型嗎?它們之間有甚麼關聯呢?

今天這篇文章就是要來介紹這兩個模型的差別,搭配實際使用案例,我們就可以更清楚在甚麼樣情境下,更適合選擇使用哪個模型。

想知道更多 Azure OpenAI 服務 的最新消息可以在這裡找到:

Azure OpenAI 服務有哪些新功能? – Azure AI services

甚麼是 「GPT-3.5 Turbo 指示」?

GPT-3.5 Turbo 指示,英文為「GPT-3.5 Turbo Instruct」,此模型類似於「text-davinci-003,使用的是完成 API (Completion)

截至今日(2023/10/16),目前只有兩個區域能建立「GPT-3.5 Turbo 指示」: 美國東部(East US), 、瑞典中部(Sweden Central),模型的權杖上限(max token)為 4097 個 tokens。

但在六月時,Azure平台上架GPT-35 Turbo 和GPT-4等使用聊天完成(ChatCompletion) API的模型來取代使用完成(Completion) API舊有的模型。

這裡所提到的「text-davinci-003」也是其中之一,許多基於此模型所開發的應用程式也因此受到影響,程式碼也必須根據「聊天完成API」 進行修改。

完成(Completion)?聊天完成(ChatCompletion) ?

如果我們想要 Azure OpenAI 模型輸出的內容更符合預期的結果,那我們就一定要瞭解完成(Completion)和聊天完成(ChatCompletion) 這兩個 API 的不同之處。

單純的任務在使用 CompletionChatCompletion 兩種API時都可以達到相近的結果,但使用ChatCompletion,在構建提示(Prompt)時較具靈活性。

這個模型為聊天情境進行了優化,在功能上,ChatCompletion 有定義AI模型的系統訊息(System Message)選項,此外還內建了提供先前消息的結構,當然只要在系統消息中調整提示,ChatCompletion也可以用於非聊天場景。

使用Completion API 也可以達到類似的結果,但必須額外加上格式化提示,須通過所謂的元提示(meta prompt)來實現,以便AI模型理解前後提示間的關係。


完成(Completion) vs. 聊天完成(ChatCompletion) 比較表格

類別

完成(Completion

聊天完成(ChatCompletion

對話形式

單轉對話(Single-Turn),系統根據單個輸入提示生成回應。

多轉對話(Multi-Turn),系統會記錄對話歷史並生成回應。

模型

GPT-3.5 Turbo Instruct (前 text-davinci-003)

GPT-3.5 Turbo GPT-4

用途

更適合單個提示任務。

適用於具互動性的對話應用。

API設置

openai.Completion.create

openai.ChatCompletion.create

進階設置

提示設計和工程 (prompt design and engineering)

系統訊息及模板設計 (System message and System message template)

Azure OpenAI Studio Playground

聽起來好像還是有點模糊? 最好的方法就是直接到 Azure OpenAI Studio 來親自嘗試兩個模型:

先決條件:

  • Azure 訂閱
  • Azure OpenAI Service 資源
  • 部署「GPT-3.5 Turbo」 模型
  • 部署「GPT-3.5 Turbo Instruct 」模型

完成(Completion)

Untitled

聊天完成(ChatCompletion)

Untitled 1

按下「View code」我們可以看出,兩者之間程式碼也有區別:

完成(Completion) 程式碼:

  1. openai.Completion.create
  2. 使用者以Prompt(提示)來告訴模型要完成(Completion)甚麼結果

Untitled 2

聊天完成(ChatCompletion)程式碼:

  1. openai.ChatCompletion.create
  2. 賦予模型一個角色(system)
  3. 使用者(user)與模型(assistant)透過聊天形式進行溝通

Untitled 3

GPT-3.5 Turbo vs. GPT-3.5 Turbo 指示 模型表現

瞭解了兩個模型的基本概念以及差別後,接下來我們讓兩個模型執行5個任務,並用三個測量標準來判斷模型的表現,分別是:

  • CPU times: 程式在中央處理器(CPU)上運行的總時間。

  • Wall time:開始執行程式到程式完成的實際經過的時間。包括I/O操作、等待其他程序、系統調度等時間。

  • 模型完成(回覆): 模型所回覆的完整字串。


任務#1:是非題


題目(Prompt): Microsoft 有收購OpenAI 嗎?

模型名稱

CPU times

Wall time:

(Chat)Completion

gpt-35-turbo

31.2 ms

2.1 s

Microsoft 沒有完全收購 OpenAI,但在 2019 年,Microsoft 和 OpenAI 簽署了一份合作協議,雙方將共同開發人工智慧技術,並將 Microsoft Azure 作為 OpenAI 的首選雲平台。此外,Microsoft 也成為了 OpenAI 的獨家雲服務提供商。這份合作協議讓 Microsoft 能夠獲得 OpenAI 的技術和專業知識,並將其整合到自己的產品和服務中。

gpt-35-turbo-instruct

0 ns

1.74 s

目前尚未有任何消息表明Microsoft有收購OpenAI的計劃。OpenAI是一家獨立的人工智能研究機構,其創始人包括埃隆·馬斯克和其他知名企業家,並且與多家公司合作,包括Microsoft。但是,Microsoft並未公開表示有收購OpenAI的意向。


任務#2:同情心

題目(Prompt): 我好難過,你可以說些話鼓勵我嗎?

模型名稱

CPU times

Wall time:

(Chat)Completion

gpt-35-turbo

15.6 ms

3.44 s

當你感到難過時,請記住你不是孤單的。你有家人、朋友和支持你的人。也請記住,這種情緒是暫時的,你會度過這個難關。請相信自己,你有足夠的力量和勇氣去克服任何困難。不要害怕向他人尋求幫助,他們會很樂意幫助你。最重要的是,請保持積極的態度和信心,相信自己可以克服一切。

gpt-35-turbo-instruct

0 ns

2.19 s

當然可以!首先,我想告訴你,每個人都會遇到困難和挑戰,這是生活中不可避免的一部分。但是,重要的是要記住,你並不孤單,我們都在這裡支持你。你可以相信自己的能力,勇敢地面對困難,因為你有足夠的力量和智慧去克服它們。 此外,請記住,每一次挫折都是一次成長的機會。它可以幫助你學習更多,成為一個更強大的人。不要害怕犯錯,因為它們可以幫助你成長和進步。 最後,請相信自己,相信你的夢想和目標


任務#3:程式碼生成

題目(Prompt): 可以請你幫我寫個Python 函式, 讓我能讀取csv 檔案, 並回傳每兩行的內容嗎?

模型名稱

CPU times

Wall time:

(Chat)Completion

gpt-35-turbo

0 ns

4.48 s

當然可以,以下是一個可以讀取csv檔案並回傳每兩行內容的Python函式: python import csv def read_csv_file(file_path): with open(file_path, 'r') as csv_file: csv_reader = csv.reader(csv_file) rows = [] for row in csv_reader: rows.append(row) return [rows[i:i+2] for i in range(0, len(rows), 2)] 這個函式使用Python的csv模組來讀取csv檔案,並將每一行的內容存儲在一個列表中。然後,使用列表推導式來將相鄰的兩行組合成一個子列表,最後返回一個包含所有子列表的列表。 你可以使用以下代碼來測試這個函式: python file_path = 'example.csv' result = read_csv_file(file_path) print(result) 這個代碼會讀取名為example.csv的檔案,並將每兩行的內容組合成一個子列表,最後輸出結果。你可以根據自己的需求修改這個函式,例如更改每兩行讀取的方式或處理每行的內容。

gpt-35-turbo-instruct

0 ns

1.62 s

def read_csv(filename): # 開啟檔案 file = open(filename, ‘r’) # 讀取檔案內容 lines = file.readlines() # 關閉檔案 file.close() # 建立空的list來存放每兩行的內容 result = [] # 使用迴圈來讀取每兩行的內容 for i in range(0, len(lines), 2): # 將每兩行的內容加入result list中 result.append(lines[i].strip() + ‘,’ + lines[i+1].strip()) # 回傳結果 return result


任務#4:情感分析

題目(Prompt): 請提供以下段落的情感分析: “可口可樂公司第三財季股東應佔盈利28.25億美元,按年增長14%;經調整後每股盈利69美仙,多過市場預期。”

模型名稱

CPU times

Wall time:

(Chat)Completion

gpt-35-turbo

46.9 ms

1.16 s

正面情感。

gpt-35-turbo-instruct

31.2 ms

2.24 s

這段話表達了可口可樂公司在第三財季取得的良好業績,股東應佔盈利達到28.25億美元,同比增長14%,每股盈利也超過市場預期,達到69美仙。從情感分析的角度來看,這段話帶有積極的情緒,表明可口可樂公司在第三財季取得了令人滿意的成績,股東應該會感到高興和滿意。此外,提到每股盈利超過市場預期,也暗示著市場對可口可樂公司的未來表現持有信心,這也會讓投資者感到樂觀。


任務#5:摘要維基百科頁面

題目(Prompt): 搜尋:台北101,請告訴我5個有趣的事實:

模型名稱

CPU times

Wall time:

(Chat)Completion

gpt-35-turbo

0 ns

3.82 s

在COVID-19大流行期間,台北101被用作巨大的體溫計。該建築的LED燈會根據溫度變化顏色,藍色表示溫度低於37.5°C (99.5°F),呈現紅色則表示溫度高於37.5°C。這有助於提醒人們測量他們的體溫並警惕病毒的傳播。 台北101曾出現在多部電影和電視節目中,包括電影”露西”和”驚奇之旅19″。它還是多部紀錄片的主題,包括”台北101:建造最高塔”和”台北101:世界上最高的綠色建築”。該建築的獨特設計和工程使其成為遊客和建築愛好者的熱門目的地。 台北101共有101層,第91到101層由台北101天文台佔用。天文台提供台北及其周邊地區的全景,是受歡迎的旅遊景點。遊客可以乘坐高速電梯前往位於第91層的天文台,該天文台提供室內和室外觀景區。 台北101擁有多項世界紀錄,包括世界上最快的電梯、世界上最高的室外觀景台和世界上最大的新年前夕煙火表演。台北101的跨年煙火表演已成為一個重大活動,成千上萬的人聚集在周邊地區觀看表演。該表演包含超過30,000發煙火,持續幾分鐘,高潮迭起,照亮整座建築。

gpt-35-turbo-instruct

0 ns

1.52 s

101是台灣最受歡迎的旅遊景點。 1. 從2004年開幕到2009年,台北101是世界上最高的建築,直到被哈利發塔超越。 2. 台北101的電梯可以在短短37秒內從第5層移動到第89層,創下最快電梯速度紀錄。 3. 台北101是世界上最高和最大的綠色建築,於2011年根據LEED認證系統獲得Platinum證書評級。 4. 該建築的後現代建築風格結合了傳統的亞洲美學和現代的工業材料。 5. 台北101由台北金融中心公司擁有,並計劃在70年租約結束後於2067年歸還給台北市。

透過上面的任務我們可以看到,「GPT-3.5 Turbo」在CPU運算以及程式執行的時間都會較「GPT-3.5 Turbo 指示」來得多一些,至於在回覆的部分則是各有千秋,有各自的亮點,讀者比較喜歡哪一種呢?

結論

今天討論微軟Azure OpenAI中的兩個大型語言模型: 「GPT-3.5 Turbo」和「GPT-3.5 Turbo 指示」,雖然名字只差一點,使用的方式還是有些許差別。

而上述探討的「Completion API」和「ChatCompletion API」,其實就是決定 AI 回應我們的風格。

閱讀完這篇文章希望讀者能對這兩個模型以及個別的API回覆方式能有更多的認識,不同的模型和API適用於不同的場景。

理解它們的特點和適用情境,當未來讀者要應用Azure OpenAI在自己的程式上時,能夠更有信心地做出最佳選擇,為自己的應用程式發揮 AI 最大的潛能。























You may also like...

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。