最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

chatgpt接口開發(fā)筆記1:completions接口

2023-04-26 01:29 作者:單純的饒同學(xué)  | 我要投稿

chatgpt接口開發(fā)筆記1:completions接口

個人博客地址:?https://note.raokun.top
擁抱ChatGPT,國內(nèi)訪問網(wǎng)站:https://www.playchat.top

序:寫這一系列文章的動機(jī)來源于在部署Chanzhaoyu/**chatgpt-web**項目時發(fā)現(xiàn),體驗并不好,會存在多人同時提問時回答會夾斷,上下文接不上的現(xiàn)象。同時希望搭建的項目能實現(xiàn)前后端分離。于是用webapi寫了一套后端接口。我會把我在對接openai的接口開發(fā)的經(jīng)驗分享給大家。

completions接口

目前我們用到最多的接口就是completions接口


POST ?https://api.openai.com/v1/chat/completions

官方給出的入?yún)⑹纠秊椋?/p>

curl


curl https://api.openai.com/v1/chat/completions \ ?-H "Content-Type: application/json" \ ?-H "Authorization: Bearer $OPENAI_API_KEY" \ ?-d '{ ? ?"model": "gpt-3.5-turbo", ? ?"messages": [{"role": "user", "content": "Hello!"}] ?}'

header部分:

  • Authorization 身份驗證 $OPENAI_API_KEY 替換成你用到的key

請求體:

  • model 使用的模型,這里使用的是gpt 3.5的模型

  • messages 會話

**注意點:這里的messages 是接口的核心,分為三類:user、assistant、system **

同時,我們可以

  • 添加max_tokens 用于控制回復(fù)內(nèi)容的最大長度,一般可以設(shè)置為2000

  • 添加stream 用于控制接口是返回json字符串還是返回stream的流(stream可以實現(xiàn)打字機(jī)效果)

  • 添加presence_penalty或frequency_penalty 用于控制回復(fù)的開放程度,官方稱為懲罰機(jī)制

返回參數(shù)官方示例:

json


{ ?"id": "chatcmpl-123", ?"object": "chat.completion", ?"created": 1677652288, ?"choices": [{ ? ?"index": 0, ? ?"message": { ? ? ?"role": "assistant", ? ? ?"content": "\n\nHello there, how may I assist you today?", ? ?}, ? ?"finish_reason": "stop" ?}], ?"usage": { ? ?"prompt_tokens": 9, ? ?"completion_tokens": 12, ? ?"total_tokens": 21 ?} }

重點參數(shù)解析:

  • created 回復(fù)時間的時間戳

  • message 回復(fù)內(nèi)容,回復(fù)內(nèi)容的role固定為assistant

  • finish_reason 結(jié)果完成原因 可能是"stop"(代表沒有更多的建議),“cutoff”(代表建議被截斷),或者"completion"(代表建議完成)

  • prompt_tokens:消息中包含的單詞數(shù)量

  • completion_tokens:結(jié)果中包含的單詞數(shù)量

  • total_tokens:消息中總共包含的單詞數(shù)量

如何控制上下文

相信很多部署過chatgpt-web的同學(xué)都有遇到過上下文不連續(xù),接不上的情況。其原因在于會話的數(shù)據(jù)是存在前端緩存里的,返回消息時出現(xiàn)了夾斷,前端獲取不到被夾斷報錯的上一次的聊天回復(fù)的內(nèi)容。

看過chatgpt-web的源碼的同學(xué)應(yīng)該發(fā)現(xiàn)了,在發(fā)起聊天請求時,會傳會話id給接口。我開始也是以為id是上下文的判斷依據(jù)。后來在開發(fā)接口時才注意到OpenAI的接口并沒有Id這樣的參數(shù)。這說明會話的id并不是上下文的檢索條件。

通過測試實現(xiàn),我總結(jié)了下:

上下文的依據(jù)與會話id,還有你使用的key都是沒有關(guān)系的,它只與你的message參數(shù)有關(guān)。

實現(xiàn)精確的上下文

為了實現(xiàn)精確的上下文,你可以在發(fā)起請求時,將接口回復(fù)的內(nèi)容一并帶上。因為message 是一個集合,如下:

json


"messages": [{ ? ? ?"role": "assistant", ? ? ?"content": "\n\nHello there, how may I assist you today?", ? ?}{"role": "user", "content": "Hello!"}]

如果條件允許可以多加點(大于等于2),同時這肯定是消耗更多的余額的。

到此,你應(yīng)該對completions接口已經(jīng)有了充足的認(rèn)識了。


chatgpt接口開發(fā)筆記1:completions接口的評論 (共 條)

分享到微博請遵守國家法律
乌兰察布市| 巴楚县| 九龙坡区| 平度市| 吴旗县| 普兰店市| 勃利县| 高淳县| 汾西县| 屏东市| 清水县| 游戏| 武强县| 建瓯市| 凤台县| 牡丹江市| 正蓝旗| 万宁市| 定襄县| 庄河市| 麻江县| 许昌县| 武邑县| 应用必备| 长泰县| 邵东县| 陕西省| 柘荣县| 庄浪县| 彭水| 麟游县| 额济纳旗| 沈丘县| 辽宁省| 宾阳县| 宝鸡市| 阳东县| 绥德县| 淮阳县| 鄂伦春自治旗| 大石桥市|