国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(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接口的評論 (共 條)

分享到微博請遵守國家法律
崇信县| 壤塘县| 义马市| 德保县| 托克托县| 达日县| 尉犁县| 辉县市| 汝城县| 开封市| 始兴县| 分宜县| 娄底市| 定边县| 澎湖县| 长兴县| 新乐市| 汶川县| 永登县| 伊金霍洛旗| 扶沟县| 乐亭县| 乌兰浩特市| 普兰店市| 河东区| 合肥市| 四川省| 肃北| 确山县| 梅州市| 扶沟县| 瓮安县| 高雄县| 元阳县| 宁蒗| 东辽县| 华阴市| 赤城县| 饶河县| 东阿县| 奉化市|