5 分鐘掃盲 ChatGPT 與 OpenAI 編程
一、chatGPT 與 OpenAI
ChatGPT 是 OpenAI 公司的一個技術產品,chatGPT 使用了 GPT(Generative Pre-trained Transformer)技術,是一個用於對話生成的預訓練語言模型,OpenAI 還有很多其他模型。
(來自:chatGPT 的解釋)
OpenAI 是一家人工智能研究公司,它開發並提供了一系列人工智能技術和產品,包括 SDK 開發包。
(來自:chatGPT 的解釋)
可以理解爲:
OpenAI 提供的 SDK 能力更加豐富,而 chatGPT 是使用 OpenAI 的 GPT 技術實現的一款自然語言處理模型產品。
所以要接入 chatGPT 的能力,還是要看 OpenAI 所能提供的開放接口能力如何。
二、OpenAI 目前公開的幾款產品
2.1 chatGPT
我們可以通過 chat.openai.com/chat 來打開 chatGPT 的在線聊天界面 (需要先註冊,目前不支持國內註冊)。
具體的 chatGPT 聊天的情況,這裏不贅述了,chatGPT 的實力目前在網絡上已經被證實。
就目前個人使用的情況來看。目前在搜索知識相關的內容,用 chatGPT 之後,很少會再打開 Baidu 和 Google。除非一些系統性的知識,或者極個別業務類知識搜索。但是對於科普類、以及常見類知識,chatGPT 的答覆明顯要比搜索引擎更精準,且十分清楚你意圖搜索的內容是什麼。
2.2 DALL·E
DALL·E 是 OpenAI 研發的一種新型的生成式預訓練語言模型,它能夠從文字描述中生成全新的圖片。它可以生成各種各樣的圖片,從卡通形象到複雜的科技圖像,它是一種非常先進且有趣的人工智能技術。
(來自:chatGPT 的解釋)
我們打開網址:labs.openai.com 可以更直觀看見這款產品。
2.3 GPT-3
GPT-3(Generative Pretrained Transformer 3):這是 OpenAI 最強大的 NLP 模型,擁有出色的語言生成能力。
(來自 chatGPT 的解釋)
網上流傳可以寫出論文的就是 GPT-3 這款產品,chatGPT 實際也是應用 GPT-3 的 "text-davinci-003" 模型。
網址爲:https://platform.openai.com/playground 右側 Model 選擇 "text-davinci-003"。
2.4 CLIP
CLIP(Contrastive Language-Image Pretraining):這是一種跨語言和圖像的模型,可以在圖像和文本間進行對比。
這裏不再介紹。官方網站是 clip.openai.com 但是我沒有打開。
三、基於 OpenAI 的 Demo 開發
OpenAI 接口文檔
platform.openai.com/doc
從目前官方的接口文檔來看:OpenAI 的原生接口支持 Python 和 Node.js 語言,但也同時支持 RESTFul 的 API 接口形式。所以目前其他語言可以通過 Http 的 API 請求形式,來調用 OpenAI 的接口。
這裏先以 Python 爲例,嘗試調通一個接口。
3.1 Model
在開始之前,我們需要理解的最關鍵的一個概念,就是 OpenAI 的訓練模型 Model。
對於我們從來沒有接觸過人工智能技術的人來說,始終認爲人工智能開發一定是要自己訓練的,但是 OpenAI 完全降低了人工智能的業務開發門檻,我們完全不需要神經網絡、NLP、深度學習等人工智能領域工程師及算法工程師,就可以直接使用 OpenAI 訓練好的強大模型爲我們進行業務賦能。
我們可以理解爲 OpenAI 現在已經有很多基礎能力相當成熟的 “AI 大祕書” 爲我們進行服務。
他們的名字分別是:davinci(達芬奇)、curie(居里)、babbage(巴貝奇) 和 ada(艾達) 等。
注意:任何由更快的模型(如 Ada)執行的任務都可以由更強大的模型(如 Curie 或 Davinci)執行,所以只需要記住 “達芬奇最強” 即可。
綜上,在我們進行使用 OpenAI 進行業務接口開發時,應該嘗試不同的場景,選擇最適合的 Model 爲我們提供分析能力。
當然,OpenAI 不僅僅只有這些模型,在 OpenAI 的官方文檔上有說明可以給開發者提供的開發能力,如下:
這五大能力,各自提供了接口讓開發者進行接入和使用。其中 “Fine-tuning" 將是定製化的 model 訓練接口,當然是你不希望使用 OpenAI 現有的 "大祕書"。
全部 Model 模型 List 可見 OpenAI 官方文檔:platform.openai.com/doc
在 GPT-3 模型中,各個 “AI 大祕書” 的最新版本和情況如下:
3.2 基於 "text-davinci-003" 的 text 文本處理 Demo(Python)
代碼很簡單,如下:
- openai 的 sdk
對於 python 來講,安裝 openai 環境十分的簡單,如下指令即可:
pip install openai
如果你用的 Golang 語言或其他語言,不需要安裝環境,直接調用官方的 RESTFul 接口即可。
- API_KEY
這裏面需要一個 api_key,api_key 的獲取辦法是,首先要註冊 OpenAI 賬號,如果您之前已經可以使用 OpenAI 產品,說明你已經有了賬號,然後在 platform.openai.com/acc 網頁中,生成 API_KEY 即可。
- propmt 提示信息
prompt = "用Golang寫一個API-Server,且有一個路由/tal,給客戶端返回'你好TAL'的能力"
在文本 Model 中,就是我們的輸入問題文本。
接下來,我們來執行上述的 python 代碼,得到如下結果:
這樣就已經基於 "text-davinci-003" 的能力得到了我們想要的答案,也證明我們 Demo 的調度是通過的。
四、OpenAI 的基於 Golang 接口開發及微信 GPT 案例
4.1 基礎結構體定義
const BASEURL = "https://api.openai.com/v1/"
// ChatGPTResponseBody 請求體
type ChatGPTResponseBody struct {
ID string `json:"id"`
Object string `json:"object"`
Created int `json:"created"`
Model string `json:"model"`
Choices []ChoiceItem `json:"choices"`
Usage map[string]interface{} `json:"usage"`
}
type ChoiceItem struct {
Text string `json:"text"`
Index int `json:"index"`
Logprobs int `json:"logprobs"`
FinishReason string `json:"finish_reason"`
}
// ChatGPTRequestBody 響應體
type ChatGPTRequestBody struct {
Model string `json:"model"`
Prompt string `json:"prompt"`
MaxTokens int `json:"max_tokens"`
Temperature float32 `json:"temperature"`
TopP int `json:"top_p"`
FrequencyPenalty int `json:"frequency_penalty"`
PresencePenalty int `json:"presence_penalty"`
}
4.2 Golang 的 OpenAI 請求 RESTful 接口封裝
// Completions gtp文本模型回覆
//curl https://api.openai.com/v1/completions
//-H "Content-Type: application/json"
//-H "Authorization: Bearer your chatGPT key"
//-d '{"model": "text-davinci-003", "prompt": "你好,Aceld", "temperature": 0, "max_tokens": 7}'
func Completions(msg string) (string, error) {
requestBody := ChatGPTRequestBody{
Model: "text-davinci-003",
Prompt: msg,
MaxTokens: 1024,
Temperature: 0.7,
TopP: 1,
FrequencyPenalty: 0,
PresencePenalty: 0,
}
requestData, err := json.Marshal(requestBody)
if err != nil {
return "", err
}
log.Printf("request gtp json string : %v", string(requestData))
req, err := http.NewRequest("POST", BASEURL+"completions", bytes.NewBuffer(requestData))
if err != nil {
return "", err
}
apiKey := "XXXXXXXXXX申請的API_KEYXXXXXXXXXX"
req.Header.Set("Content-Type", "application/json")
req.Header.Set("Authorization", "Bearer "+apiKey)
client := &http.Client{}
response, err := client.Do(req)
if err != nil {
return "", err
}
defer response.Body.Close()
if response.StatusCode != 200 {
return "", errors.New(fmt.Sprintf("status code != 200, code is %d", response.StatusCode))
}
body, err := ioutil.ReadAll(response.Body)
if err != nil {
return "", err
}
gptResponseBody := &ChatGPTResponseBody{}
log.Println(string(body))
err = json.Unmarshal(body, gptResponseBody)
if err != nil {
return "", err
}
var reply string
if len(gptResponseBody.Choices) > 0 {
reply = gptResponseBody.Choices[0].Text
}
log.Printf("response text: %s \n", reply)
return reply, nil
}
我們依然可以通過上述封裝的 Golang 接口去請求 OpenAI 的 Model 模型,獲得我們得到的結果。這裏的 Demo 運行就不再展示。
然後,基於 Golang 的 API 能力再加上微信小程序的代理程序模塊_(__由於涉及到微信代理作弊程序,這裏代碼省略)_,可以代理本地微信程序的消息轉發,最終可以實現的效果如下:
目前也有第三方實現的 Golang 的 GPT 接口封裝,項目名稱爲 go-gpt3。
開源代碼在 github.com/sashabaranov ,實現基本代碼如下:
package main
import (
"context"
"fmt"
gogpt "github.com/sashabaranov/go-gpt3"
)
func main() {
c := gogpt.NewClient("XXXXXXX your API KEY XXXXXXXX")
ctx := context.Background()
req := gogpt.CompletionRequest{
Model: gogpt.GPT3Ada,
MaxTokens: 5,
Prompt: "隨便說說",
}
resp, err := c.CreateCompletion(ctx, req)
if err != nil {
return
}
fmt.Println(resp.Choices[0].Text)
}
是的,這很令人驚奇,你現在已經具備使用人工能力開發業務了,且接口竟然如此的簡單。 至於 model 的選擇和參數和接口的選擇,詳細看 OpenAI 文檔就可以了,本文是快速入門,這裏就不再贅述了。
五、有關接入 OpenAI 的功能假設模型
5.1 智能 ToB 運營售前、售後、技術支持系統
整體思路爲,應用 OpenAI 提供的 Files 大文件訓練和 Fine-tune 自定義業務 Model 能力。嘗試基於已有的成熟 Model 再疊加業務內容,進行簡單的知識補充即可。
5.2 智能家庭助理
方案和上述方案類似,只不過需要將詳細的操作手冊換成常見的 QA 彙總文本。
六、方案可行性評估
注: 解決方案爲基於 OpenAI 模型的初探方案,商業模式和產品可行請問你們的產品經理。
先說下我這裏的想到的幾個問題,進行拋轉:
1、chatGPT 如果在短時間內在中國出現一個普及類的大衆產品問世,所以現在普通業務企業接入可能將毫無意義,因爲大家都會在那個普及的產品上去提問知識,就好比當搜索引擎剛出來的時候,我們在自己的產品植入搜索引擎能力,短期有點效果,長期是無意義的。最後大家都會到一個地方去搜索。
2、對於 OpenAI 能力的性能問題以及回答問題的準確性,目前還沒有商業應用落地的真實數據,第一口喫螃蟹還需要謹慎一些。
3、chatGPT 就國內來說,在幾個月之前就已經有一小波熱提峯值,但是很快就下去了,但近期突然引起大家熱議,或有資本運作及推動,學習知識沒錯,在沒有掌握充足的相關知識和應用領域客觀調研下,要小心自己不要成爲 "韭菜" 哦~^_^~。
4、科學很重要,科學的普及更重要,而普及纔是最難的,引用 AI 來創造價值纔是最難的。目前 chatGPT 只是展示了潛力,但潛力不能當飯喫,只有實力才能當飯喫。 目前 chatGPT 還是 “流行話題” 佔比高一些,聊這個話題會顯得高級,所以才喜歡聊,但又有多少人真的懂,多少人真的瞭解且認真思考過,甚至又有多少人去試用一下。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/xoL8ZVPtmGRPZ2ZkNWPFkA