5分鐘掃盲chatGPT與OpenAI編程(for 開發(fā)者)

一、chatGPT與OpenAI

ChatGPT 是 OpenAI 公司的一個技術(shù)產(chǎn)品系宫,chatGPT使用了 GPT(Generative Pre-trained Transformer)技術(shù)笛厦,是一個用于對話生成的預(yù)訓(xùn)練語言模型纳鼎,OpenAI還有很多其他模型。

(來自:chatGPT的解釋)

OpenAI是一家人工智能研究公司,它開發(fā)并提供了一系列人工智能技術(shù)和產(chǎn)品贱鄙,包括SDK開發(fā)包劝贸。

(來自:chatGPT的解釋)

可以理解為:

OpenAI提供的SDK能力更加豐富,而chatGPT是使用OpenAI的GPT技術(shù)實現(xiàn)的一款自然語言處理模型產(chǎn)品逗宁。

所以要接入chatGPT的能力映九,還是要看OpenAI所能提供的開放接口能力如何。

二瞎颗、OpenAI目前公開的幾款產(chǎn)品

2.1 chatGPT

我們可以通過https://chat.openai.com/chat 來打開chatGPT的在線聊天界面(需要先注冊件甥,目前不支持國內(nèi)注冊)

具體的chatGPT聊天的情況哼拔,這里不贅述了引有,chatGPT的實力目前在網(wǎng)絡(luò)上已經(jīng)被證實。

就目前個人使用的情況來看倦逐。目前在搜索知識相關(guān)的內(nèi)容譬正,用chatGPT之后,很少會再打開Baidu和Google僻孝。除非一些系統(tǒng)性的知識导帝,或者極個別業(yè)務(wù)類知識搜守谓。但是對于科普類穿铆、以及常見類知識,chatGPT的答復(fù)明顯要比搜索引擎更精準(zhǔn)斋荞,且十分清楚你意圖搜索的內(nèi)容是什么荞雏。

2.2 DALL·E

DALL·E 是 OpenAI 研發(fā)的一種新型的生成式預(yù)訓(xùn)練語言模型,它能夠從文字描述中生成全新的圖片平酿。它可以生成各種各樣的圖片凤优,從卡通形象到復(fù)雜的科技圖像,它是一種非常先進(jìn)且有趣的人工智能技術(shù)蜈彼。(來自:chatGPT的解釋)

我們打開網(wǎng)址:https://labs.openai.com/ 可以更直觀的看見這款產(chǎn)品筑辨。

2.3 GPT-3

GPT-3(Generative Pretrained Transformer 3):這是 OpenAI 最強(qiáng)大的 NLP 模型,擁有出色的語言生成能力幸逆。

(來自chatGPT的解釋)

網(wǎng)上流傳可以寫出論文的就是GPT-3這款產(chǎn)品棍辕,chatGPT實際也是應(yīng)用的GPT-3的"text-davinci-003"模型。

網(wǎng)址為:https://platform.openai.com/playground 右側(cè)Model選擇"text-davinci-003"还绘。

2.4 CLIP

CLIP(Contrastive Language-Image Pretraining):這是一種跨語言和圖像的模型楚昭,可以在圖像和文本間進(jìn)行對比。

這里不再介紹拍顷。官方網(wǎng)站是 clip.openai.com 但是我沒有打開抚太。

三、基于OpenAI的Demo開發(fā)

OpenAI接口文檔

https://platform.openai.com/docs/api-reference

從目前官方的接口文檔來看:OpenAI的原生接口支持Python和Node.js語言,但也同時支持RESTFul的API接口形式尿贫。所以目前其他語言可以通過Http的API請求形式电媳,來調(diào)用OpenAI的接口。

這里先以Python為例庆亡,嘗試調(diào)通一個接口匆背。

3.1 Model

在開始之前,我們需要理解的最關(guān)鍵的一個概念身冀,就是OpenAI的訓(xùn)練模型Model钝尸。

對于我們從來沒有接觸過人工智能技術(shù)的人來說,始終認(rèn)為人工智能開發(fā)一定是要自己訓(xùn)練的搂根,但是OpenAI完全降低了人工智能的業(yè)務(wù)開發(fā)門檻珍促,我們完全不需要神經(jīng)網(wǎng)絡(luò)当船、NLP取具、深度學(xué)習(xí)等人工智能領(lǐng)域工程師及算法工程師增显,就可以直接使用OpenAI訓(xùn)練好的強(qiáng)大模型為我們進(jìn)行業(yè)務(wù)賦能衣摩。

我們可以理解為OpenAI現(xiàn)在已經(jīng)有很多基礎(chǔ)能力相當(dāng)成熟的“AI大秘書”為我們進(jìn)行服務(wù)任连。

他們的名字分別是:davinci(達(dá)芬奇)错邦、curie(居里)土榴、babbage(巴貝奇)和ada(艾達(dá))等荸哟。

Model 擅長
Davinci 復(fù)雜的意圖锦积,因果關(guān)系芒帕,面向特定受眾的概括
Curie 語言翻譯,復(fù)雜分類丰介,文本情感背蟆,概括
Babbage 中等分類,語義搜索分類
Ada 文本解析哮幢,簡單分類带膀,地址校正,關(guān)鍵詞

注意:任何由更快的模型(如Ada)執(zhí)行的任務(wù)都可以由更強(qiáng)大的模型(如Curie或Davinci)執(zhí)行橙垢,所以只需要記住“達(dá)芬奇最強(qiáng)”即可垛叨。

綜上,在我們進(jìn)行使用OpenAI進(jìn)行業(yè)務(wù)接口開發(fā)時柜某,應(yīng)該嘗試不同的場景嗽元,選擇最適合的Model為我們提供分析能力。

當(dāng)然莺琳,OpenAI不僅僅只有這些模型还棱,在OpenAI的官方文檔上有說明可以給開發(fā)者提供的開發(fā)能力,如下:

這五大能力惭等,各自提供了接口讓開發(fā)者進(jìn)行接入和使用珍手。其中“Fine-tuning"將是定制化的model訓(xùn)練接口,當(dāng)然是你不希望使用OpenAI現(xiàn)有的"大秘書"。

全部Model模型List可見OpenAI官方文檔:https://platform.openai.com/docs/models/overview

在GPT-3模型中琳要,各個“AI大秘書”的最新版本和情況如下:

MODEL DESCRIPTION MAX REQUEST TRAINING DATA
text-davinci-003(達(dá)芬奇003) 最強(qiáng)的GPT-3模型寡具,可以完成其他模型不能完成的任務(wù),通常質(zhì)量更高稚补,輸出更長童叠,并且更好地遵循說明。還支持在文本中插入完成课幕。 4,000 tokens 2021年6月之前
text-curie-001(居里001) 非常有能力厦坛,但比davinci達(dá)芬奇快速且成本更低。 2,048 tokens 2019年10月之前
text-babbage-001(巴貝奇001) 能夠完成簡單任務(wù)乍惊,非扯沤眨快速,成本更低润绎。 2,048 tokens 2019年10月之前
text-ada-001(艾達(dá)001) 能夠完成非常簡單的任務(wù)撬碟,通常是GPT-3系列中最快的模型,成本最低莉撇。 2,048 tokens 2019年10月之前

3.2 基于"text-davinci-003"的text文本處理Demo(Python)

代碼很簡單呢蛤,如下:

1) openai的sdk

對于python來講,安裝openai環(huán)境十分的簡單棍郎,如下指令即可:

pip install openai

如果你用的Golang語言或其他語言其障,不需要安裝環(huán)境,直接調(diào)用官方的RESTFul接口即可坝撑。

2) API_KEY

這里面需要一個api_key静秆,api_key的獲取辦法是粮揉,首先要注冊O(shè)penAI賬號巡李,如果您之前已經(jīng)可以使用OpenAI產(chǎn)品,說明你已經(jīng)有了賬號扶认,然后在https://platform.openai.com/account/api-keys 網(wǎng)頁中侨拦,生成API_KEY即可。

3) propmt提示信息

prompt = "用Golang寫一個API-Server,且有一個路由/tal,給客戶端返回'你好TAL'的能力"

在文本Model中辐宾,就是我們的輸入問題文本狱从。

接下來,我們來執(zhí)行上述的python代碼叠纹,得到如下結(jié)果:

這樣就已經(jīng)基于"text-davinci-003"的能力得到了我們想要的答案季研,也證明我們Demo的調(diào)度是通過的。

四誉察、OpenAI的基于Golang接口開發(fā)及微信GPT案例

4.1 基礎(chǔ)結(jié)構(gòu)體定義

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 響應(yīng)體
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文本模型回復(fù)
//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模型,獲得我們得到的結(jié)果。這里的Demo運(yùn)行就不再展示驼卖。

然后氨肌,基于Golang的API能力再加上微信小程序的代理程序模塊(由于涉及到微信代理作弊程序,這里代碼省略)酌畜,可以代理本地微信程序的消息轉(zhuǎn)發(fā)怎囚,最終可以實現(xiàn)的效果如下:

目前也有第三方實現(xiàn)的Golang的GPT接口封裝,項目名稱為go-gpt3桥胞,開源代碼在

https://github.com/sashabaranov/go-gpt3 實現(xiàn)基本代碼如下:

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)
}

是的恳守,這很令人驚奇,你現(xiàn)在已經(jīng)具備使用人工能力開發(fā)業(yè)務(wù)了贩虾,且接口竟然如此的簡單井誉。至于model的選擇和參數(shù)和接口的選擇,詳細(xì)看OpenAI文檔就可以了整胃,本文是快速入門颗圣,這里就不再贅述了。

五屁使、有關(guān)接入OpenAI的功能假設(shè)模型

5.1 智能ToB運(yùn)營售前在岂、售后、技術(shù)支持系統(tǒng)

整體思路為蛮寂,應(yīng)用OpenAI提供的Files大文件訓(xùn)練和Fine-tune自定義業(yè)務(wù)Model能力蔽午。嘗試基于已有的成熟Model再疊加業(yè)務(wù)內(nèi)容,進(jìn)行簡單的知識補(bǔ)充即可酬蹋。

5.2 智能家庭助理

方案和上述方案類似及老,只不過需要將詳細(xì)的操作手冊換成常見的QA匯總文本。

六范抓、方案可行性評估

注:解決方案為基于OpenAI模型的假設(shè)方案骄恶,商業(yè)模式和產(chǎn)品可行請問你們的產(chǎn)品經(jīng)理。

先說下我這里的想到的幾個問題匕垫,進(jìn)行拋轉(zhuǎn):

1僧鲁、chatGPT如果在短時間內(nèi)在中國出現(xiàn)一個普及類的大眾產(chǎn)品問世,所以現(xiàn)在普通業(yè)務(wù)企業(yè)接入可能將毫無意義象泵,因為大家都會在那個普及的產(chǎn)品上去提問知識寞秃,就好比當(dāng)搜索引擎剛出來的時候,我們在自己的產(chǎn)品植入搜索引擎能力偶惠,短期有點效果春寿,長期是無意義的。最后大家都會到一個地方去搜索忽孽。

2绑改、對于OpenAI能力的性能問題以及回答問題的準(zhǔn)確性馋缅,目前還沒有商業(yè)應(yīng)用落地的真實數(shù)據(jù),第一口吃螃蟹還需要謹(jǐn)慎一些绢淀。

3萤悴、chatGPT就國內(nèi)來說,在幾個月之前就已經(jīng)有一小波熱提峰值皆的,但是很快就下去了覆履,但近期突然引起大家熱議,或有資本運(yùn)作及推動费薄,學(xué)習(xí)知識沒錯硝全,在沒有掌握充足的相關(guān)知識和應(yīng)用領(lǐng)域客觀調(diào)研下,要小心自己不要成為"韭菜"哦^_^楞抡。

4伟众、科學(xué)很重要,科學(xué)的普及更重要召廷,而普及才是最難的凳厢,引用AI來創(chuàng)造價值才是最難的。目前chatGPT只是展示了潛力竞慢,但潛力不能當(dāng)飯吃先紫,只有實力才能當(dāng)飯吃。目前chatGPT還是“流行話題”占比高一些筹煮,聊這個話題會顯得高級遮精,所以才喜歡聊,但又有多少人真的懂败潦,多少人真的了解且認(rèn)真思考過本冲,甚至又有多少人去試用一下。

原創(chuàng)作品

劉丹冰Aceld
技術(shù)知識庫 https://www.yuque.com/aceld
《Golang修養(yǎng)之路》
《8小時轉(zhuǎn)職Golang工程師》
《zinx-Golang輕量級Tcp服務(wù)器框架》
代表作品 《Lars-基于C++負(fù)載均衡遠(yuǎn)程服務(wù)器調(diào)度系統(tǒng)》
《libevent深入淺出》
《Nginx中文入門手冊》
《Linux上Lua應(yīng)用實戰(zhàn)與人工智能》
github https://github.com/aceld
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末劫扒,一起剝皮案震驚了整個濱河市檬洞,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌粟关,老刑警劉巖疮胖,帶你破解...
    沈念sama閱讀 206,126評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異闷板,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)院塞,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,254評論 2 382
  • 文/潘曉璐 我一進(jìn)店門遮晚,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人拦止,你說我怎么就攤上這事县遣∶拥撸” “怎么了?”我有些...
    開封第一講書人閱讀 152,445評論 0 341
  • 文/不壞的土叔 我叫張陵萧求,是天一觀的道長其兴。 經(jīng)常有香客問我,道長夸政,這世上最難降的妖魔是什么元旬? 我笑而不...
    開封第一講書人閱讀 55,185評論 1 278
  • 正文 為了忘掉前任,我火速辦了婚禮守问,結(jié)果婚禮上匀归,老公的妹妹穿的比我還像新娘。我一直安慰自己耗帕,他們只是感情好穆端,可當(dāng)我...
    茶點故事閱讀 64,178評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仿便,像睡著了一般体啰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗽仪,一...
    開封第一講書人閱讀 48,970評論 1 284
  • 那天狡赐,我揣著相機(jī)與錄音,去河邊找鬼钦幔。 笑死枕屉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的鲤氢。 我是一名探鬼主播搀擂,決...
    沈念sama閱讀 38,276評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼卷玉!你這毒婦竟也來了哨颂?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,927評論 0 259
  • 序言:老撾萬榮一對情侶失蹤相种,失蹤者是張志新(化名)和其女友劉穎威恼,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體寝并,經(jīng)...
    沈念sama閱讀 43,400評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡箫措,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 35,883評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了衬潦。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斤蔓。...
    茶點故事閱讀 37,997評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖镀岛,靈堂內(nèi)的尸體忽然破棺而出弦牡,到底是詐尸還是另有隱情友驮,我是刑警寧澤,帶...
    沈念sama閱讀 33,646評論 4 322
  • 正文 年R本政府宣布驾锰,位于F島的核電站卸留,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏椭豫。R本人自食惡果不足惜耻瑟,卻給世界環(huán)境...
    茶點故事閱讀 39,213評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望捻悯。 院中可真熱鬧匆赃,春花似錦、人聲如沸今缚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,204評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽姓言。三九已至瞬项,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間何荚,已是汗流浹背囱淋。 一陣腳步聲響...
    開封第一講書人閱讀 31,423評論 1 260
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留餐塘,地道東北人妥衣。 一個月前我還...
    沈念sama閱讀 45,423評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像戒傻,于是被迫代替她去往敵國和親税手。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,722評論 2 345

推薦閱讀更多精彩內(nèi)容