目錄
實作開始-實作篇第一
實踐繼續-實踐篇第二
實務繼續-實作篇第三
簡介
首頁 後端開發 Python教學 怎麼使用Python對接OpenAi API實現智慧QQ機器人

怎麼使用Python對接OpenAi API實現智慧QQ機器人

Apr 28, 2023 pm 10:46 PM
python api openai

怎麼使用Python對接OpenAi API實現智慧QQ機器人

這些SDK不只可以用來開發機器人,還可以自由的開發你想要的效果,如你所想,他是一個工具包,幫你chuanchuan建構一個ChatGPT服務和會話。

最近OpenAi給他套上了一個CloudflareCDN服務,這個服務會去攔截非真機請求,現在已經可以破解了。

怎麼使用Python對接OpenAi API實現智慧QQ機器人

尋找合適的逆向SDK

怎麼使用Python對接OpenAi API實現智慧QQ機器人

原作者用的是這​​個。

怎麼使用Python對接OpenAi API實現智慧QQ機器人

整個套件的檔案並不是很多,喜歡Python的可以去看看,我這個Java看不太懂。

實作開始-實作篇第一

程式碼中使用到的revChatGPT依賴原始碼庫:
https://github.com/acheong08/ChatGPT

#我們的Python版本,需要>=3.8,然後pip直接升級到最新版本。

下面程式碼的目的是與ChatGPT官方介面互動,注意安裝裡面用到的依賴
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')
登入後複製

怎麼使用Python對接OpenAi API實現智慧QQ機器人

我們導入我們的逆向套件。

from revChatGPT.revChatGPT import Chatbot
登入後複製

怎麼使用Python對接OpenAi API實現智慧QQ機器人

這是逆向包裡面的源碼,用來初始化一個服務,我們剛剛的類別中呼叫了這個套件。

怎麼使用Python對接OpenAi API實現智慧QQ機器人

然後去建立拋出這個服務的接口,方便被呼叫。

我們只要執行上面的程式碼就可以在7777埠直接與ChatGPT互動了。
我們使用介面工具測試一下,結果如下圖,可以看到,介面正常工作並從ChatGPT得到了對話結果。

怎麼使用Python對接OpenAi API實現智慧QQ機器人

其中訊息體:

{"msg": "你会数学吗"}
登入後複製

訊息體是我們自訂的內容,你可以自己增加欄位對介面進行功能擴充
本例子中的msg就是我們的發言內容
而介面回傳的:

{ "code": 0, "data": "是的,我会数学。我是一个大型语言模型,我可以回答各种问题,包括数学问题。你有什么数学问题需要我帮助你解决吗?"}
登入後複製

這也是我們自己定義的,當code=0時代表與ChatGPT#互動成功,此時dataChatGPT回饋給我們的對話內容。而當code=1時說明出現了錯誤,此時沒有data,但在msg中回傳了錯誤訊息。

到這裡我們就擁有了一個可以和ChatGPT交互到接口,透過這個接口,我們就能與ChatGPT進行對話

既然進行對話,那就需要一個輸入框和一個按鈕,你可以做一個網頁來呼叫這個接口,這很簡單,我們不在這裡贅述了。

我們真正要做的是一個QQ機器人,其原理就是讓QQ機器人監聽到訊息,並透過我們的介面把訊息轉發給ChatGPT,然後再把ChatGPT回傳的對話內容傳送給QQ用戶,這樣一個可以對話的機器人就做好了,具體做法,下文繼續講解。

實踐繼續-實踐篇第二

上文我們實現了一個接口,用代碼成功獲取到了ChatGPT的對話內容,下面我們將繼續完善QQ機器人相關邏輯,注意看程式碼中的註解。

怎麼使用Python對接OpenAi API實現智慧QQ機器人

為了更方便的將優化後(接入QQ機器人)的程式碼,與之前的程式碼比較,我開啟一個本地比較,並收起了沒有變動的程式碼。

怎麼使用Python對接OpenAi API實現智慧QQ機器人

怎麼使用Python對接OpenAi API實現智慧QQ機器人

怎麼使用Python對接OpenAi API實現智慧QQ機器人

#

機器人的互動實現邏輯,這個你可能會看不懂,因為我們是使用了一個機器人框架,那其實我們不要局限自己的思想,我們可以嘗試自己修改使用其他機器人框架,比如雲仔機器人,邏輯去自己實作。

我們使用的是go-cqhttp

go-cqhttp幫助中心

所以說,這一寫更改,你得去了解這個go-cqhttp你才能看懂,不過我們要靈活學習,我們只需要了解思路便可,然後去官方文件找使用方法。

此時,這些程式碼已經擁有了處理好友請求、拉群請求、回覆訊息的功能。

可以看到,相對於上個文章,我們增加了很多程式碼,並且都加了註解

當然,這些程式碼看不懂沒關係,可以照著我的文章改一下對應的地方,直接用。

大家來原創作者Q群玩兒,我也在裡面:206867743

實務繼續-實作篇第三

前兩篇文章我們已經解決了和ChatGPT通訊的問題和QQ處理訊息的問題,現在我們就需要處理如何監聽QQ消息了。

在一次次的更新和遇到的問題中,原創作者和逆向套件的許多作者都更新了很多內容,我們看看原創作者的更新記錄:

2022-12-12 23:52 增加一個Windows專用版本,只能在Windows電腦或伺服器上使用,可以自動取得cloudflare Cookie 2022-12-12 12:38 更新內容增加CloudFlare配置,更新依賴,暫不支援帳號密碼,暫不知道CloudFlare配置多久需要更換一次,現在好像必須要翻牆了 2022-12-10 17:42 更新內容增加帳號密碼支持,可以不使用token ,直接使用帳號密碼2022-12-10 00:23 更新內容將每個QQ私聊區分,每個人私聊機器人都是一個獨立的會話將每個QQ群區分,每個QQ群是一個獨立的會話增加回覆字數限制,超過限制轉換成圖片回复(見配置文件)如果想要重置會話,對機器人發送:重置會話

簡介

監聽QQ訊息並不需要我們寫程式碼,因為市面上已經有很多開源QQ機器人框架,在這裡我們使用go-cqhttp
#官方文件: go-cqhttp
如果您有興趣的話,可以閱讀一下官方文檔,如果不想看,直接看我的文章就好。

前提條件您需要準備一個QQ號,不要使用自己大號您需要準備一個OpenAi的帳號,用來獲取Token一台伺服器(可選,如果您想讓機器人7x24小時在線的話,請準備一台,1核1G足以,外服最好)

注意:OpenAi(ChatGPT)的註冊方式B站有一堆視頻,隨便參考一個就行。

不會註冊也可以看看我部落格的文章:一文教你快速註冊OpenAi(ChatGPT)

(舊版)機器人搭建教學我也是寫過了:使用OpenGPT(ChatGPT)搭建QQ 機器人

但是!注意,先前說過,現在的ChatGPT套了一個CFCDN,會攔截人機互動請求。

怎麼使用Python對接OpenAi API實現智慧QQ機器人

那我們現在,除了需要取得OpenAisession-token,還需要取得cf_clearance

同時,我們還需要取得user-agent

怎麼使用Python對接OpenAi API實現智慧QQ機器人

前往控制台的網路標籤裡面查看,如果是空白,你發一句訊息就可以。

複製之後寫到設定檔中,也就是py/config.js檔。

目前原始作者打包了兩個版本,一個Linux的,麻煩在於cfCDN交互令牌會在2H內失效,我們需要手動獲取並更新,麻煩。

另一個是window版本,已經實作自動取得CloudflareCookie

設定指南

怎麼使用Python對接OpenAi API實現智慧QQ機器人

這個版本只能在Windows上使用,Windows電腦或伺服器都行。

依然只支持token。

系統會自動開啟Google瀏覽器取得Cloufflare相關Cookie,第一次執行時可能需要手動驗證,請注意點一下。

注意,腳本它只能開啟Google瀏覽器,沒配置其他瀏覽器。

其他描述

那在作者最新版本的程式碼裡面,也是新增了一部分功能。

怎麼使用Python對接OpenAi API實現智慧QQ機器人

自行研究。

然後很多逆向包作者也在想一個完美解決的辦法,我們慢慢等待吧!

怎麼使用Python對接OpenAi API實現智慧QQ機器人

然後,請看這句話:

怎麼使用Python對接OpenAi API實現智慧QQ機器人

以上是怎麼使用Python對接OpenAi API實現智慧QQ機器人的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您聽不到任何人,如何修復音頻
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解鎖Myrise中的所有內容
4 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

mysql 是否要付費 mysql 是否要付費 Apr 08, 2025 pm 05:36 PM

MySQL 有免費的社區版和收費的企業版。社區版可免費使用和修改,但支持有限,適合穩定性要求不高、技術能力強的應用。企業版提供全面商業支持,適合需要穩定可靠、高性能數據庫且願意為支持買單的應用。選擇版本時考慮的因素包括應用關鍵性、預算和技術技能。沒有完美的選項,只有最合適的方案,需根據具體情況謹慎選擇。

HadiDB:Python 中的輕量級、可水平擴展的數據庫 HadiDB:Python 中的輕量級、可水平擴展的數據庫 Apr 08, 2025 pm 06:12 PM

HadiDB:輕量級、高水平可擴展的Python數據庫HadiDB(hadidb)是一個用Python編寫的輕量級數據庫,具備高度水平的可擴展性。安裝HadiDB使用pip安裝:pipinstallhadidb用戶管理創建用戶:createuser()方法創建一個新用戶。 authentication()方法驗證用戶身份。 fromhadidb.operationimportuseruser_obj=user("admin","admin")user_obj.

mysql workbench 可以連接到 mariadb 嗎 mysql workbench 可以連接到 mariadb 嗎 Apr 08, 2025 pm 02:33 PM

MySQL Workbench 可以連接 MariaDB,前提是配置正確。首先選擇 "MariaDB" 作為連接器類型。在連接配置中,正確設置 HOST、PORT、USER、PASSWORD 和 DATABASE。測試連接時,檢查 MariaDB 服務是否啟動,用戶名和密碼是否正確,端口號是否正確,防火牆是否允許連接,以及數據庫是否存在。高級用法中,使用連接池技術優化性能。常見錯誤包括權限不足、網絡連接問題等,調試錯誤時仔細分析錯誤信息和使用調試工具。優化網絡配置可以提升性能

Navicat查看MongoDB數據庫密碼的方法 Navicat查看MongoDB數據庫密碼的方法 Apr 08, 2025 pm 09:39 PM

直接通過 Navicat 查看 MongoDB 密碼是不可能的,因為它以哈希值形式存儲。取回丟失密碼的方法:1. 重置密碼;2. 檢查配置文件(可能包含哈希值);3. 檢查代碼(可能硬編碼密碼)。

mysql 無法連接到本地主機怎麼解決 mysql 無法連接到本地主機怎麼解決 Apr 08, 2025 pm 02:24 PM

無法連接 MySQL 可能是由於以下原因:MySQL 服務未啟動、防火牆攔截連接、端口號錯誤、用戶名或密碼錯誤、my.cnf 中的監聽地址配置不當等。排查步驟包括:1. 檢查 MySQL 服務是否正在運行;2. 調整防火牆設置以允許 MySQL 監聽 3306 端口;3. 確認端口號與實際端口號一致;4. 檢查用戶名和密碼是否正確;5. 確保 my.cnf 中的 bind-address 設置正確。

mysql 需要互聯網嗎 mysql 需要互聯網嗎 Apr 08, 2025 pm 02:18 PM

MySQL 可在無需網絡連接的情況下運行,進行基本的數據存儲和管理。但是,對於與其他系統交互、遠程訪問或使用高級功能(如復制和集群)的情況,則需要網絡連接。此外,安全措施(如防火牆)、性能優化(選擇合適的網絡連接)和數據備份對於連接到互聯網的 MySQL 數據庫至關重要。

如何針對高負載應用程序優化 MySQL 性能? 如何針對高負載應用程序優化 MySQL 性能? Apr 08, 2025 pm 06:03 PM

MySQL數據庫性能優化指南在資源密集型應用中,MySQL數據庫扮演著至關重要的角色,負責管理海量事務。然而,隨著應用規模的擴大,數據庫性能瓶頸往往成為製約因素。本文將探討一系列行之有效的MySQL性能優化策略,確保您的應用在高負載下依然保持高效響應。我們將結合實際案例,深入講解索引、查詢優化、數據庫設計以及緩存等關鍵技術。 1.數據庫架構設計優化合理的數據庫架構是MySQL性能優化的基石。以下是一些核心原則:選擇合適的數據類型選擇最小的、符合需求的數據類型,既能節省存儲空間,又能提升數據處理速度

如何將 AWS Glue 爬網程序與 Amazon Athena 結合使用 如何將 AWS Glue 爬網程序與 Amazon Athena 結合使用 Apr 09, 2025 pm 03:09 PM

作為數據專業人員,您需要處理來自各種來源的大量數據。這可能會給數據管理和分析帶來挑戰。幸運的是,兩項 AWS 服務可以提供幫助:AWS Glue 和 Amazon Athena。

See all articles