Heim > Artikel > Backend-Entwicklung > So verwenden Sie Python, um eine Verbindung zur OpenAi-API herzustellen und einen intelligenten QQ-Roboter zu implementieren
Dieses SDK
kann nicht nur zum Entwickeln von Robotern verwendet werden, sondern Sie können auch die gewünschten Effekte frei entwickeln. Wie Sie denken, handelt es sich um ein Toolkit, das Ihnen beim Erstellen eines Chuanchuan hilft ChatGPTDienst und Sitzung. SDK
不仅仅可以用于开发机器人,还可以自由的开发你所想要的效果,如你所想,他是一个工具包,帮你chuanchuan构建一个ChatGPT
服务和会话。
最近OpenAi
给他套上了一个Cloudflare
的CDN
服务,这个服务会去拦截非真机请求,现在已经可以破解了。
寻找合适的逆向SDK
原作者用的是这个。
整个包的文件并不是很多,喜欢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')
我们导入我们的逆向包。
from revChatGPT.revChatGPT import Chatbot
这是逆向包里面的源码,用于初始化一个服务,我们刚刚的类中调用了这个包。
然后去创建抛出这个服务的接口,方便被调用。
我们只要运行上面的代码就可以在7777端口直接与ChatGPT进行交互了。
我们使用接口工具测试一下,结果如下图,可以看到,接口正常工作并从ChatGPT得到了对话结果。
其中消息体:
{"msg": "你会数学吗"}
消息体是我们自定义的内容,你可以自己增加字段对接口进行功能扩展
本例子中的msg就是我们的发言内容
而接口返回的:
{ "code": 0, "data": "是的,我会数学。我是一个大型语言模型,我可以回答各种问题,包括数学问题。你有什么数学问题需要我帮助你解决吗?"}
这也是我们自己定义的,当code=0
时代表与ChatGPT
交互成功,此时data
为ChatGPT
反馈给我们的对话内容。而当code=1
时说明出现了错误,此时没有data
,但在msg
Vor kurzem hat OpenAi
einen CDN
-Dienst von Cloudflare
installiert. Dieser Dienst fängt nicht reale Maschinenanfragen ab. Er ist jetzt verfügbar. Gebrochen.
Python
mögen, können Sie es sich ansehen. Ich kann Java
nicht verstehen. Übung beginnt – Übungskapitel 1
Das im Code verwendete revChatGPT basiert auf der Quellcodebibliothek:
https://github.com/acheong08/ChatGPT
Unsere Python-Version erfordert > ;=3.8
, dann pip
direkt auf die neueste Version aktualisieren.
chat-gpt-qbot.py:
rrreeeWir importieren unsere Umkehrung Paket. 🎜rrreee🎜🎜🎜 Dies ist der Quellcode im Reverse-Paket, der zum Initialisieren eines Dienstes verwendet wird. Wir haben dieses Paket gerade in der Klasse aufgerufen. 🎜🎜 🎜🎜Um eine Schnittstelle zu erstellen, die diesen Dienst auslöst, kann er einfach aufgerufen werden. 🎜🎜Wir müssen nur den obigen Code ausführen, um direkt mit ChatGPT auf Port 7777 zu interagieren.code=0
ist, bedeutet dies, dass die Interaktion mit ChatGPT
erfolgreich ist. code> ist ChatGPT
code> Geben Sie uns Feedback zum Inhalt der Konversation. Bei code=1
tritt ein Fehler auf. Es sind keine Daten
vorhanden, aber die Fehlermeldung wird in msg
zurückgegeben. 🎜🎜🎜Jetzt haben wir eine Schnittstelle, die mit ChatGPT interagieren kann. 🎜🎜🎜Da wir eine Unterhaltung führen, benötigen wir ein Eingabefeld und eine Schaltfläche, mit der Sie eine Webseite erstellen können Rufen Sie diese Schnittstelle auf, es ist sehr einfach, wir werden hier nicht auf Details eingehen. 🎜🎜Was wir wirklich wollen, ist ein QQ-Roboter. Das Prinzip besteht darin, den QQ-Roboter die Nachricht abhören zu lassen, sie über unsere Schnittstelle an ChatGPT weiterzuleiten und dann den von ChatGPT zurückgegebenen Konversationsinhalt an den QQ-Benutzer zu senden dass ein Gespräch möglich ist. Der Roboter ist bereit. Die konkrete Methode wird weiter unten erläutert. 🎜🎜Übung geht weiter – Übungsteil 2🎜🎜🎜 Oben haben wir eine Schnittstelle implementiert und den ChatGPT-Konversationsinhalt mithilfe von Code erfolgreich erhalten. Als Nächstes werden wir die QQ-Roboter-bezogene Logik weiter verbessern. Achten Sie auf die Kommentare im Code. 🎜🎜🎜🎜🎜🎜🎜Um den optimierten Code (verbunden mit dem QQ-Roboter) bequemer mit dem vorherigen Code vergleichen zu können, habe ich einen lokalen Vergleich gestartet und den unveränderten Code weggelegt. 🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜🎜Möglicherweise verstehen Sie die Interaktionslogik des Roboters nicht, da wir unser Denken nicht einschränken. Wir können versuchen, andere Roboter-Frameworks wie Yunzai Robot zu implementieren selbst.
Wir verwenden go-cqhttp
. 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
套了一个CF
的CDN
,会拦截人机交互请求。
那我们现在,除了需要获取OpenAi
的session-token
,还需要获取cf_clearance
。
同时,我们还需要获取user-agent
。
前往控制台的网络标签里面查看,如果是空白,你发一句消息就可以。
复制之后写到配置文件中,也就是py/config.js
文件。
目前原创作者打包了两个版本,一个Linux的,麻烦在于cf
的CDN
交互令牌会在2H
内失效,我们需要手动获取并更新,麻烦。
另一个是window
版本,已经实现自动获取CloudflareCookie
go-cqhttp
, bevor Sie sie verstehen können, aber wir müssen flexibel lernen, wir müssen nur die Ideen verstehen und dann Sehen Sie sich die offizielle Dokumentation an, um herauszufinden, wie Sie es verwenden. Zu diesem Zeitpunkt verfügen diese Codes bereits über die Funktion, Freundschaftsanfragen, Gruppenanfragen zu bearbeiten und auf Nachrichten zu antworten.
Sie können sehen, dass wir im Vergleich zum vorherigen Artikel viel Code hinzugefügt und Kommentare hinzugefügt haben.In den ersten beiden Artikeln haben wir das Problem der Kommunikation mit ChatGPT und das Problem der QQ-Nachrichtenverarbeitung gelöst. Jetzt müssen wir uns mit der Überwachung von QQ-Nachrichten befassen .Natürlich spielt es keine Rolle, ob Sie diese Codes nicht verstehen. Sie können die entsprechenden Stellen entsprechend ändern meinen Artikel und verwende ihn direkt.
Kommen Sie und spielen Sie in der Original-Autoren-Q-Gruppe, ich bin auch dabei:
206867743
.Übung geht weiter – Übung Teil 3
Bei den aufgetretenen Updates und Problemen haben der ursprüngliche Autor und viele Autoren des Reverse-Pakets viele Inhalte aktualisiert. Werfen wir einen Blick auf den Update-Datensatz des ursprünglichen Autors:
2022-12-12 23:52
Eine Windows-spezifische Version hinzugefügt, die nur auf Windows-Computern oder -Servern verwendet werden kann. Sie kann Cloudflare-Cookies automatisch abrufen.2022-12-12 12:38 Inhalt aktualisieren Derzeit ist die CloudFlare-Konfiguration noch nicht bekannt. Wie oft müssen Sie die Firewall umgehen? 2022-12-10 00:23 Der aktualisierte Inhalt fügt hinzu, dass jeder private Chat-Roboter eine unabhängige Sitzung ist . Erhöhen Sie die Wortbeschränkung für Antworten (siehe Konfigurationsdatei). Wenn Sie die Sitzung zurücksetzen möchten, senden Sie den Roboter zurück: Einführung >
Für das Abhören von QQ-Nachrichten müssen wir keinen Code schreiben, da es bereits viele Open-Source-QQ-Roboter-Frameworks auf dem Markt gibt. Hier verwenden wir go-cqhttp
Offizielle Dokumentation: go-cqhttp
Wenn Sie interessiert sind, können Sie die offizielle Dokumentation lesen. Wenn Sie sie nicht lesen möchten, lesen Sie einfach meinen Artikel.
ChatGPT
, wie bereits erwähnt, mit einem CDN
von CF
ausgestattet ist, der Mensch-Computer-Interaktionsanfragen abfängt. 🎜🎜🎜🎜🎜 Zusätzlich zum Erhalt des session-token
von OpenAi
müssen wir nun auch cf_clearance
erhalten. 🎜🎜Gleichzeitig müssen wir auch user-agent
erhalten. 🎜🎜 🎜🎜Gehe zu. Überprüfen Sie die Registerkarte „Netzwerk“ der Konsole. Wenn sie leer ist, können Sie einfach eine Nachricht senden. 🎜🎜Kopieren Sie es und schreiben Sie es in die Konfigurationsdatei, die Datei py/config.js
. 🎜🎜Derzeit hat der ursprüngliche Autor zwei Versionen gepackt, eine für Linux. Das Problem besteht darin, dass das CDN
-Interaktionstoken von cf
innerhalb von 2H
abläuft > Wir müssen es manuell abrufen und aktualisieren, was mühsam ist. 🎜🎜Die andere ist die window
-Version, die automatisch CloudflareCookie
erhalten hat. 🎜🎜Konfigurationsanleitung🎜🎜🎜🎜🎜Diese Version kann nur unter Windows verwendet werden, jeder Windows-Computer oder Server funktioniert. 🎜🎜🎜 Unterstützt immer noch nur Token. 🎜🎜🎜Das System öffnet automatisch Google Chrome, um Cloufflare-bezogene Cookies zu erhalten. Bei der ersten Ausführung ist möglicherweise eine manuelle Überprüfung erforderlich. Klicken Sie daher bitte sorgfältig. 🎜🎜🎜🎜Beachten Sie, dass das Skript nur Google Chrome öffnen kann und keine anderen Browser konfiguriert. 🎜🎜Andere Beschreibungen🎜🎜In der neuesten Version des Codes des Autors wurden auch einige neue Funktionen hinzugefügt. 🎜🎜🎜🎜🎜Recherchieren Sie selbst. 🎜Dann denken auch viele Autoren von Reverse-Paketen über eine perfekte Lösung nach, warten wir also langsam!
Dann schauen Sie sich bitte diesen Satz an:
Das obige ist der detaillierte Inhalt vonSo verwenden Sie Python, um eine Verbindung zur OpenAi-API herzustellen und einen intelligenten QQ-Roboter zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!