
理解 Composition API Vue 的基礎(chǔ)與模式
GPT-3(Generative Pretrained Transformer 3):這是 OpenAI 最強(qiáng)大的 NLP 模型,擁有出色的語(yǔ)言生成能力。
(來(lái)自chatGPT的解釋?zhuān)?/p>
網(wǎng)上流傳可以寫(xiě)出論文的就是GPT-3這款產(chǎn)品,chatGPT實(shí)際也是應(yīng)用GPT-3的”text-davinci-003″模型。
網(wǎng)址為:https://platform.openai.com/playground?右側(cè)Model選擇”text-davinci-003″。
CLIP(Contrastive Language-Image Pretraining):這是一種跨語(yǔ)言和圖像的模型,可以在圖像和文本間進(jìn)行對(duì)比。
這里不再介紹。官方網(wǎng)站是?clip.openai.com?但是我沒(méi)有打開(kāi)。
platform.openai.com/doc
從目前官方的接口文檔來(lái)看:OpenAI的原生接口支持Python和Node.js語(yǔ)言,但也同時(shí)支持RESTFul的API接口形式。所以目前其他語(yǔ)言可以通過(guò)Http的API請(qǐng)求形式,來(lái)調(diào)用OpenAI的接口。
這里先以Python為例,嘗試調(diào)通一個(gè)接口。
在開(kāi)始之前,我們需要理解的最關(guān)鍵的一個(gè)概念,就是OpenAI的訓(xùn)練模型Model。
對(duì)于我們從來(lái)沒(méi)有接觸過(guò)人工智能技術(shù)的人來(lái)說(shuō),始終認(rèn)為人工智能開(kāi)發(fā)一定是要自己訓(xùn)練的,但是OpenAI完全降低了人工智能的業(yè)務(wù)開(kāi)發(fā)門(mén)檻,我們完全不需要神經(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大秘書(shū)”為我們進(jìn)行服務(wù)。
他們的名字分別是:davinci(達(dá)芬奇)、curie(居里)、babbage(巴貝奇)和ada(艾達(dá))等。
Model | 擅長(zhǎng) |
---|---|
Davinci | 復(fù)雜的意圖,因果關(guān)系,面向特定受眾的概括 |
Curie | 語(yǔ)言翻譯,復(fù)雜分類(lèi),文本情感,概括 |
Babbage | 中等分類(lèi),語(yǔ)義搜索分類(lèi) |
Ada | 文本解析,簡(jiǎn)單分類(lèi),地址校正,關(guān)鍵詞 |
注意:任何由更快的模型(如Ada)執(zhí)行的任務(wù)都可以由更強(qiáng)大的模型(如Curie或Davinci)執(zhí)行,所以只需要記住“達(dá)芬奇最強(qiáng)”即可。
綜上,在我們進(jìn)行使用OpenAI進(jìn)行業(yè)務(wù)接口開(kāi)發(fā)時(shí),應(yīng)該嘗試不同的場(chǎng)景,選擇最適合的Model為我們提供分析能力。
當(dāng)然,OpenAI不僅僅只有這些模型,在OpenAI的官方文檔上有說(shuō)明可以給開(kāi)發(fā)者提供的開(kāi)發(fā)能力,如下:
這五大能力,各自提供了接口讓開(kāi)發(fā)者進(jìn)行接入和使用。其中“Fine-tuning”將是定制化的model訓(xùn)練接口,當(dāng)然是你不希望使用OpenAI現(xiàn)有的”大秘書(shū)”。
全部Model模型List可見(jiàn)OpenAI官方文檔:platform.openai.com/doc
在GPT-3模型中,各個(gè)“AI大秘書(shū)”的最新版本和情況如下:
代碼很簡(jiǎn)單,如下:
1) openai的sdk
對(duì)于python來(lái)講,安裝openai環(huán)境十分的簡(jiǎn)單,如下指令即可:
pip install openai
如果你用的Golang語(yǔ)言或其他語(yǔ)言,不需要安裝環(huán)境,直接調(diào)用官方的RESTFul接口即可。
2) API_KEY
這里面需要一個(gè)api_key,api_key的獲取辦法是,首先要注冊(cè)O(shè)penAI賬號(hào),如果您之前已經(jīng)可以使用OpenAI產(chǎn)品,說(shuō)明你已經(jīng)有了賬號(hào),然后在platform.openai.com/acc?網(wǎng)頁(yè)中,生成API_KEY即可。
3) propmt提示信息
prompt = "用Golang寫(xiě)一個(gè)API-Server,且有一個(gè)路由/tal,給客戶端返回'你好TAL'的能力"
在文本Model中,就是我們的輸入問(wèn)題文本。
接下來(lái),我們來(lái)執(zhí)行上述的python代碼,得到如下結(jié)果:
這樣就已經(jīng)基于”text-davinci-003″的能力得到了我們想要的答案,也證明我們Demo的調(diào)度是通過(guò)的。
const BASEURL = "https://api.openai.com/v1/"
// ChatGPTResponseBody 請(qǐng)求體
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請(qǐng)求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申請(qǐng)的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
}
我們依然可以通過(guò)上述封裝的Golang接口去請(qǐng)求OpenAI的Model模型,獲得我們得到的結(jié)果。這里的Demo運(yùn)行就不再展示。
然后,基于Golang的API能力再加上微信小程序的代理程序模塊(由于涉及到微信代理作弊程序,這里代碼省略),可以代理本地微信程序的消息轉(zhuǎn)發(fā),最終可以實(shí)現(xiàn)的效果如下:
目前也有第三方實(shí)現(xiàn)的Golang的GPT接口封裝,項(xiàng)目名稱(chēng)為go-gpt3。
開(kāi)源代碼在?github.com/sashabaranov?,實(shí)現(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: "隨便說(shuō)說(shuō)",
}
resp, err := c.CreateCompletion(ctx, req)
if err != nil {
return
}
fmt.Println(resp.Choices[0].Text)
}
是的,這很令人驚奇,你現(xiàn)在已經(jīng)具備使用人工能力開(kāi)發(fā)業(yè)務(wù)了,且接口竟然如此的簡(jiǎn)單。至于model的選擇和參數(shù)和接口的選擇,詳細(xì)看OpenAI文檔就可以了,本文是快速入門(mén),這里就不再贅述了。
整體思路為,應(yīng)用OpenAI提供的Files大文件訓(xùn)練和Fine-tune自定義業(yè)務(wù)Model能力。嘗試基于已有的成熟Model再疊加業(yè)務(wù)內(nèi)容,進(jìn)行簡(jiǎn)單的知識(shí)補(bǔ)充即可。
方案和上述方案類(lèi)似,只不過(guò)需要將詳細(xì)的操作手冊(cè)換成常見(jiàn)的QA匯總文本。
注:解決方案為基于OpenAI模型的初探方案,商業(yè)模式和產(chǎn)品可行請(qǐng)問(wèn)你們的產(chǎn)品經(jīng)理。
先說(shuō)下我這里的想到的幾個(gè)問(wèn)題,進(jìn)行拋轉(zhuǎn):
1、chatGPT如果在短時(shí)間內(nèi)在中國(guó)出現(xiàn)一個(gè)普及類(lèi)的大眾產(chǎn)品問(wèn)世,所以現(xiàn)在普通業(yè)務(wù)企業(yè)接入可能將毫無(wú)意義,因?yàn)榇蠹叶紩?huì)在那個(gè)普及的產(chǎn)品上去提問(wèn)知識(shí),就好比當(dāng)搜索引擎剛出來(lái)的時(shí)候,我們?cè)谧约旱漠a(chǎn)品植入搜索引擎能力,短期有點(diǎn)效果,長(zhǎng)期是無(wú)意義的。最后大家都會(huì)到一個(gè)地方去搜索。
2、對(duì)于OpenAI能力的性能問(wèn)題以及回答問(wèn)題的準(zhǔn)確性,目前還沒(méi)有商業(yè)應(yīng)用落地的真實(shí)數(shù)據(jù),第一口吃螃蟹還需要謹(jǐn)慎一些。
3、chatGPT就國(guó)內(nèi)來(lái)說(shuō),在幾個(gè)月之前就已經(jīng)有一小波熱提峰值,但是很快就下去了,但近期突然引起大家熱議,或有資本運(yùn)作及推動(dòng),學(xué)習(xí)知識(shí)沒(méi)錯(cuò),在沒(méi)有掌握充足的相關(guān)知識(shí)和應(yīng)用領(lǐng)域客觀調(diào)研下,要小心自己不要成為”韭菜”哦~^_^~。
4、科學(xué)很重要,科學(xué)的普及更重要,而普及才是最難的,引用AI來(lái)創(chuàng)造價(jià)值才是最難的。目前chatGPT只是展示了潛力,但潛力不能當(dāng)飯吃,只有實(shí)力才能當(dāng)飯吃。目前chatGPT還是“流行話題”占比高一些,聊這個(gè)話題會(huì)顯得高級(jí),所以才喜歡聊,但又有多少人真的懂,多少人真的了解且認(rèn)真思考過(guò),甚至又有多少人去試用一下。
本文章轉(zhuǎn)載微信公眾號(hào)@劉丹冰Aceld
對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力
一鍵對(duì)比試用API 限時(shí)免費(fèi)