這篇寫的有點遲了,前陣子ChatGPT正火的時候,懶病發作一直拖延。今天對ChatGPT做一個簡單的討論,也是把學習的心得和大家分享一下。
首先什麼是GPT,英文全稱是Generative Pretrained Transformers (生成式預訓練轉換器)。GPT是一個預先訓練好的,用生成的方式,把輸入文字轉化成輸出文字的轉換器。
這個轉換的過程,有點完形填空,或是根據提示寫一篇800字作文的意思。
GPT並不是橫空出世的新鮮玩意,它已經經歷了數代的演進,從GPT-1,GPT-2,GPT-3一直到現在最新的GPT-4。
那麼GPT是如何工作的呢?一般認爲至少需要兩步。
- 一個訓練好的模型(Model)
- 來自用戶輸入的提示(Prompt)
如下圖的舉例,用戶輸入的提示“Translate Hello to Spanish”,經過OpenAI預訓練好的模型轉換後,生成出文字“Hola”。
可能小夥伴會有疑問,Prompt在上面這個流程中,起到了哪些作用呢?大體上有三點:
- 由用戶輸入給到模型(Model)
- 指導模型(Model)如何生成Competions
- 提供上下文(Context)讓模型(Model)更精確地輸出
下面就是一個代碼示例中的Prompt,首先定義了模型(Model)的角色上下文(Context),給定了輸出的數量要求,以及語言的要求。
var system = """ You are a professional .NET programmer. When you answer .NET questions, you always give examples. You will speak in Chinese. """;
上面這個提示(Prompt)其實還不完整,它只給出了上下文(Context),卻沒有對GPT提出問題或安排任務。
一個完整的提示(Prompt)的結構包含兩部分:
- 上下文(Context)
- 問題或任務(Query / Task)
private string System { get; set; } = @"You are an AI assistant that helps people find information."; private string Prompt { get; set; } = "明天的天氣如何?";
上面是一個完整的提示(Prompt),但並不是一個高質量的提示(Prompt)。高質量的提示具有以下幾點:
- 清晰且具體
- 給定輸出的樣例
- 提供有價值的上下文(Context)
上面這種模糊不明確的提示,會導致ChatGPT向你詢問具體的地區……
所以一個清晰且具體的提示,至少要包含查詢天氣的地區,如果能給定輸出的樣例就更好了。
如果再提供有價值的上下文,回答又會變得不一樣。
看過了提示(Prompt),讓我們再來了解一下完成(Completions)。其實這裏翻譯成“補完”感覺更貼切。Completions是由GPT這樣的模型根據提示生成的響應或者說結果。
所以GPT乾的事情,總結下來就是:
模型(Model)根據人類給出的提示(Prompt),進行補完(Completions)。
所以GPT的原型應該是凌波麗?(大霧)
今天和各位小夥伴進行了GPT的一些閒扯淡,下一篇我們來學習ChatGPT又是個啥。
歡迎各位大佬批評指正。
以下鏈接,是MS Learn上Windows開發的入門課程,單個課程三十分鐘到60分鐘不等,想要補充基礎知識的同學點這裏: