python調用chatgpt OpenAi[ChatGPT] 使用Python對接OpenAi APi 實現智
文章大部分來自:
原文博客地址:
最近火熱全文的,被很多人玩出了花,我們在上可以看到幾個常見的逆向SDK包,這一篇我將以學習的方式來寫這一篇文章。
這些SDK不僅僅可以用于開發機器人,還可以自由的開發你所想要的效果,如你所想,他是一個工具包,幫你構建一個服務和會話。
最近給他套上了一個的CDN服務,這個服務會去攔截非真機請求,現在已經可以破解了。
尋找合適的逆向SDK
原作者用的是這個。
整個包的文件并不是很多,喜歡的可以去看看,我這個Java看不太懂。
實踐開始-實踐篇第一
代碼中使用到的依賴源碼庫:
我們的版本,需要>=3.8python調用chatgpt,然后pip直接升級到最新版本。
下面代碼的目的是與官方接口進行交互,注意安裝一下里面用到的依賴
chat-gpt-qbot.py:
import flask, json
from flask import request
from revChatGPT.revChatGPT import Chatbot
config = {
"session_token": "換成你自己的token"
}
# 創建一個服務,把當前這個python文件當做一個服務
server = flask.Flask(__name__)
chatbot = Chatbot(config, conversation_id=None)
def chat(msg):
message = chatbot.get_chat_response(msg)['message']
print(message)
return message
@server.route('/chat', methods=['post'])
def chatapi():
requestJson = request.get_data()
if requestJson is None or requestJson == "" or requestJson == {}:
resu = {'code': 1, 'msg': '請求內容不能為空'}
return json.dumps(resu, ensure_ascii=False)
data = json.loads(requestJson)
print(data)
try:
msg = chat(data['msg'])
except Exception as error:
print("接口報錯")
resu = {'code': 1, 'msg': '請求異常: ' + str(error)}
return json.dumps(resu, ensure_ascii=False)
else:
resu = {'code': 0, 'data': msg}
return json.dumps(resu, ensure_ascii=False)
if __name__ == '__main__':
server.run(port=7777, host='0.0.0.0')
我們導入我們的逆向包。
from revChatGPT.revChatGPT import Chatbot
這是逆向包里面的源碼,用于初始化一個服務,我們剛剛的類中調用了這個包。
然后去創建拋出這個服務的接口,方便被調用。
我們只要運行上面的代碼就可以在7777端口直接與進行交互了。
我們使用接口工具測試一下python調用chatgptpython調用chatgpt,結果如下圖,可以看到,接口正常工作并從得到了對話結果。
其中消息體:
{
"msg": "你會數學嗎"
}
消息體是我們自定義的內容,你可以自己增加字段對接口進行功能擴展
本例子中的msg就是我們的發言內容
而接口返回的:
{
"code": 0,
"data": "是的,我會數學。我是一個大型語言模型,我可以回答各種問題,包括數學問題。你有什么數學問題需要我幫助你解決嗎?"
}
這也是我們自己定義的,當code=0時代表與交互成功,此時data為反饋給我們的對話內容。而當code=1時說明出現了錯誤,此時沒有data,但在msg中返回了錯誤信息。
到這里我們就擁有了一個可以和交互到接口,通過這個接口,我們就能與進行對話
既然進行對話,那就需要一個輸入框和一個按鈕,你可以做一個網頁來調用這個接口,這很簡單,我們不在這里贅述了。
我們真正要做的是一個QQ機器人,其原理就是讓QQ機器人監聽到消息,并通過我們的接口把消息轉發給,然后再把返回的對話內容發送給QQ用戶,這樣一個可以對話的機器人就做好了,具體做法,下文繼續講解。
實踐繼續-實踐篇第二
上文我們實現了一個接口,用代碼成功獲取到了的對話內容,下面我們將繼續完善QQ機器人相關邏輯,注意看代碼中的注釋。
為了更方便的將優化后(接入QQ機器人)的代碼,與之前的代碼比較,我開啟一個本地比較,并收起了沒有變動的代碼。
機器人的交互實現邏輯,這個你可能會看不懂,因為我們是使用了一個機器人框架,那其實我們不要局限自己的思想,我們可以嘗試自己修改使用其他機器人框架,比如云仔機器人,邏輯去自己實現。
我們使用的是go-。
免責聲明:本文系轉載,版權歸原作者所有;旨在傳遞信息,不代表本站的觀點和立場和對其真實性負責。如需轉載,請聯系原作者。如果來源標注有誤或侵犯了您的合法權益或者其他問題不想在本站發布,來信即刪。
聲明:本站所有文章資源內容,如無特殊說明或標注,均為采集網絡資源。如若本站內容侵犯了原著者的合法權益,可聯系本站刪除。