跳到主要內容

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

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

留言

這個網誌中的熱門文章

RAG 和 Prompt 原理超簡單解說!想知道 AI 怎麼找答案看這篇

這篇文章是給對於你已經開始使用所謂的 ChatGPT / Claude / Gemini 之類的 AI 服務,甚至是 Siri (嘿丟,他也是一種 AI 應用服務喔) 簡單來說是非 技術人員, PM,小白,想要趕快惡補的人 ,直接花十分鐘可以看完的一篇科普業配文章。 或者是概念僅止於,AI 這東西會幻想,會有誤差,會對於生活有些幫助但沒有幫助的人們,做個簡單又不是太簡單的介紹,希望用一個非常入門的方式讓你們有個了解。 當然,這篇文章目的很簡單, 就是引流 ,如果你身邊有已經對於 Web 技術開發的人員,歡迎報名分享給他,年末出國不如學一技在身,參加今年我們舉辦最後一場 RAG 實作工作坊,報名連結 , https://exma.kktix.cc/events/ai-for-dev-course-rag-2 注意: 接下來每個大段落結束都會有一段工商導入,但文章絕對精彩,請注意! 為了讓各位容易想像,我們將整個世界的資訊,先濃縮到這本『西遊記』的世界觀當中,我們整個世界都在這個 『西遊記』 ,而 大型語言模型 我們用 『書精靈』 來描述。 PS. 我們先預設各位,應該都有聽過,西遊記!如果沒有聽過西遊記的,請右轉出去,謝謝! 先來談談向量 在《西遊記》的世界裡,我們可以把 向量想像成一種「內容座標」 ,讓系統知道每個角色、場景、法術等的 「位置」和「距離」 。向量幫助語言模型知道不同內容之間的關聯程度。 向量就像內容的「距離」和「位置」 比方說,唐三藏的 「位置」(向量)會接近「佛經」和「取經」 的概念,因為他一路上都是為了取經而前進。孫悟空的 向量位置則會更靠近「金箍棒」和「七十二變」 這些概念,因為這些是他的特徵。 相似內容靠得更近:像「佛經」和「取經」會靠近唐三藏的向量,因為它們彼此有很強的關聯。 相差較大內容會離得較遠:像「取經」和「妖怪」「妖怪的寶藏」就距離比較遠,因為妖怪的寶藏和取經的目標關聯性不大。 是誰決定的這些位置? 簡單來說,這些位置和關係是模型自己學出來的。語言模型會閱讀大量的資料和這世界觀的資訊,觀察哪些詞語經常一起出現,根據「共同出現的頻率」來決定它們的關係,並且自動生成向量。例如: 如果模型看到 「唐三藏」 總是和 「取經」 一起出現,它就會讓「唐三藏」的向量靠近「取經」。 ...

Vibe Coding:為什麼 Junior 更快上手?Senior 要如何追趕?

現象層面(市場觀察) 最近有篇文章討論 junior & senior 開發者在 AI 時代的角色轉變,非常熱門。 身為 Cympack 產品開發團隊 ,我們也一直關注這個議題,在閱讀這篇文章時觀察到一些有趣的現象,對我們來說,這正好反映出 AI 正在改變開發生態,junior 借力 AI 快速成長、senior 則需要在 「架構思維」 與 「多 agent 協作」 中找到新定位,其中有些啟發(insight) 可以跟大家分享。 為什麼 Junior 更容易上手 vibe coding? 心智負擔低 → Junior 沒有太多傳統 code workflow 的框架包袱 敢於嘗鮮 → Gen Z / 年輕工程師天生習慣用 prompt-based 工具、跟 LLM 互動 少「優雅程式設計」的束縛 → 不太糾結「這樣寫會不會不夠優雅」,反而 embrace 快速迭代、快速出成果 反觀 Senior: 熟悉大型系統設計 有豐富的「工程正統流程」知識(架構設計、測試策略、效能優化、設計模式) 對 AI 生成 code 的品質 / 維護性通常比較保留 部分 10+ 年資深工程師,對 prompt engineering 沒那麼熟練,還在觀望 技能面(未來的關鍵能力) Vibe coding 本質上 = prompt engineering + AI co-pilot 管理能力 能力項目 誰目前比較有優勢? Prompt 撰寫 / AI 互動 Junior 較強(熟悉 chat-based 流程) 系統設計 / 架構把關 Senior 較強 AI 生成 code 驗證 / Bug 察覺能力 Senior 較強(能看出潛在問題) 快速疊代 / Hackathon 式開發 Junior 較強 長期維護性 / 穩定性 Senior 較強 總結 Junior 確實更快適應 vibe coding,並且更習慣以 「chat-based coding」 的工作流開發。 Senior 擁有驗證 AI 產物與系統設計的深度能力,但若不主動練習 vibe coding,長期會逐漸落後於新一波開發潮流。 就如同在 GAI 技術年會分享,希望帶給各位的感受, 『與 AI 協...

v0 API 是什麼?怎麼用?一篇教你搞懂功能、價格,還能搭配 Cursor 玩出 vibe coding!

Vercel 的 v0 是一款 AI 驅動的前端開發工具,能夠將自然語言描述轉換為可部署的 React 元件和 UI 介面,支援 Tailwind CSS,並可直接部署至 Vercel 平台。此外,v0 提供 API 介面,讓開發者能將其整合至其他工具,如 Cursor IDE,進一步提升開發效率。 Vercel v0 API 介紹 v0 API 目前處於 Beta 階段,主要提供 v0-1.0-md 模型,具備以下特點: 多模態支援:接受文字與圖片(base64 編碼)輸入。  快速串流回應:提供低延遲的串流回應。  OpenAI 相容:遵循 OpenAI Chat Completions API 格式,易於整合至現有工具。  前端開發優化:特別針對 Next.js 和 Vercel 等現代前端框架進行優化。 要使用 v0 API,需訂閱 Premium 或 Team 方案 ,並啟用使用量計費。 使用方式 API 端點: POST https://api.v0.dev/v1/chat/completions 請求標頭: Authorization: Bearer YOUR_V0_API_KEY Content-Type: application/json 參數範例: { "model": "v0-1.0-md", "messages": [ { "role": "user", "content": "建立一個具有身份驗證功能的 Next.js AI 聊天機器人" } ], "stream": true } 您也可以使用官方的 AI SDK 進行整合: npm install ai @ai-sdk/vercel 範例程式 javascript import { generateText } from 'ai'; import { vercel } from '@ai-sdk/vercel'; const { text } = await generateText({ model: vercel...