From b0dee1385d68bfa360a75be6003a73acd30adf38 Mon Sep 17 00:00:00 2001
From: hp256 <971748116@qq.com>
Date: Thu, 25 May 2023 10:41:45 +0800
Subject: [PATCH] Automatically obtain restNonce
---
gpt4free/hpgptai/__init__.py | 37 +++++++++++++++++++++++++++---------
1 file changed, 28 insertions(+), 9 deletions(-)
diff --git a/gpt4free/hpgptai/__init__.py b/gpt4free/hpgptai/__init__.py
index c8772a19..f5d1f0ed 100644
--- a/gpt4free/hpgptai/__init__.py
+++ b/gpt4free/hpgptai/__init__.py
@@ -5,20 +5,26 @@
@File :__init__.py.py
@IDE :PyCharm
"""
+import re
import json
-import requests
+import base64
import random
import string
+import requests
+from fake_useragent import UserAgent
+
class ChatCompletion:
@staticmethod
def create(
messages: list,
- context: str="Converse as if you were an AI assistant. Be friendly, creative.",
- restNonce:str="9d6d743bd3",
- proxy:str=None
+ context: str = "Converse as if you were an AI assistant. Be friendly, creative.",
+ restNonce: str = None,
+ proxy: str = None
):
url = "https://chatgptlogin.ac/wp-json/ai-chatbot/v1/chat"
+ if not restNonce:
+ restNonce = ChatCompletion.get_restNonce(proxy)
headers = {
"Content-Type": "application/json",
"X-Wp-Nonce": restNonce
@@ -27,7 +33,7 @@ class ChatCompletion:
data = {
"env": "chatbot",
"session": "N/A",
- "prompt": ChatCompletion.__build_prompt(context,messages),
+ "prompt": ChatCompletion.__build_prompt(context, messages),
"context": context,
"messages": messages,
"newMessage": messages[-1]["content"],
@@ -48,7 +54,6 @@ class ChatCompletion:
return res.json()
return res.text
-
@staticmethod
def randomStr():
return ''.join(random.choices(string.ascii_lowercase + string.digits, k=34))[:11]
@@ -66,12 +71,26 @@ class ChatCompletion:
prompt += '\n' + "AI: "
return prompt
-
+ @classmethod
+ def get_restNonce(cls, proxy: str = None):
+ url = "https://chatgptlogin.ac/"
+ headers = {
+ "Referer": "https://chatgptlogin.ac/",
+ "User-Agent": UserAgent().random
+ }
+ proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else None
+ res = requests.get(url, headers=headers, proxies=proxies)
+ src = re.search(
+ 'class="mwai-chat mwai-chatgpt">.*Send