From e02094de5baac85613855c8a6c9ae1298324ad0e Mon Sep 17 00:00:00 2001
From: "t.me/xtekky" <98614666+xtekky@users.noreply.github.com>
Date: Sun, 30 Apr 2023 12:42:21 +0100
Subject: added a site and some refratoring
---
gpt4free/__init__.py | 9 +++++
gpt4free/usesless/README.md | 23 +++++++++++
gpt4free/usesless/__init__.py | 55 ++++++++++++++++++++++++++
gui/streamlit_chat_app.py | 1 -
requirements.txt | 2 +-
test.py | 5 ---
testing/theb_test.py | 5 +++
testing/useless_test.py | 27 +++++++++++++
unfinished/chatpdf/__init__.py | 87 ++++++++++++++++++++++-------------------
unfinished/usesless/README.md | 23 -----------
unfinished/usesless/__init__.py | 51 ------------------------
11 files changed, 167 insertions(+), 121 deletions(-)
create mode 100644 gpt4free/usesless/README.md
create mode 100644 gpt4free/usesless/__init__.py
delete mode 100644 test.py
create mode 100644 testing/theb_test.py
create mode 100644 testing/useless_test.py
delete mode 100644 unfinished/usesless/README.md
delete mode 100644 unfinished/usesless/__init__.py
diff --git a/gpt4free/__init__.py b/gpt4free/__init__.py
index 5336c825..b4742b64 100644
--- a/gpt4free/__init__.py
+++ b/gpt4free/__init__.py
@@ -5,6 +5,7 @@ from gpt4free import forefront
from gpt4free import quora
from gpt4free import theb
from gpt4free import you
+from gpt4free import usesless
class Provider(Enum):
@@ -15,6 +16,7 @@ class Provider(Enum):
ForeFront = 'fore_front'
Theb = 'theb'
CoCalc = 'cocalc'
+ UseLess = 'useless'
class Completion:
@@ -22,6 +24,7 @@ class Completion:
@staticmethod
def create(provider: Provider, prompt: str, **kwargs) -> str:
+
"""
Invokes the given provider with given prompt and addition arguments and returns the string response
@@ -40,8 +43,14 @@ class Completion:
return Completion.__theb_service(prompt, **kwargs)
elif provider == Provider.CoCalc:
return Completion.__cocalc_service(prompt, **kwargs)
+ elif provider == Provider.UseLess:
+ return Completion.__useless_service(prompt, **kwargs)
else:
raise Exception('Provider not exist, Please try again')
+
+ @staticmethod
+ def __useless_service(prompt: str, **kwargs) -> str:
+ return usesless.Completion.create(prompt = prompt, **kwargs)
@staticmethod
def __you_service(prompt: str, **kwargs) -> str:
diff --git a/gpt4free/usesless/README.md b/gpt4free/usesless/README.md
new file mode 100644
index 00000000..13e9df8c
--- /dev/null
+++ b/gpt4free/usesless/README.md
@@ -0,0 +1,23 @@
+ai.usesless.com
+
+to do:
+
+- use random user agent in header
+- make the code better I guess (?)
+
+### Example: `usesless`
+
+```python
+import usesless
+
+message_id = ""
+while True:
+ prompt = input("Question: ")
+ if prompt == "!stop":
+ break
+
+ req = usesless.Completion.create(prompt=prompt, parentMessageId=message_id)
+
+ print(f"Answer: {req['text']}")
+ message_id = req["id"]
+```
diff --git a/gpt4free/usesless/__init__.py b/gpt4free/usesless/__init__.py
new file mode 100644
index 00000000..6029009d
--- /dev/null
+++ b/gpt4free/usesless/__init__.py
@@ -0,0 +1,55 @@
+import requests
+import json
+
+
+class Completion:
+ headers = {
+ "authority": "ai.usesless.com",
+ "accept": "application/json, text/plain, */*",
+ "accept-language": "en-US,en;q=0.5",
+ "cache-control": "no-cache",
+ "sec-fetch-dest": "empty",
+ "sec-fetch-mode": "cors",
+ "sec-fetch-site": "same-origin",
+ "user-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/112.0",
+ }
+
+ @staticmethod
+ def create(
+ systemMessage: str = "You are a helpful assistant",
+ prompt: str = "",
+ parentMessageId: str = "",
+ presence_penalty: float = 1,
+ temperature: float = 1,
+ model: str = "gpt-3.5-turbo",
+ ):
+ print(parentMessageId, prompt)
+
+ json_data = {
+ "openaiKey": "",
+ "prompt": prompt,
+ "options": {
+ "parentMessageId": parentMessageId,
+ "systemMessage": systemMessage,
+ "completionParams": {
+ "presence_penalty": presence_penalty,
+ "temperature": temperature,
+ "model": model,
+ },
+ },
+ }
+
+ url = "https://ai.usesless.com/api/chat-process"
+ request = requests.post(url, headers=Completion.headers, json=json_data)
+ content = request.content
+
+ response = Completion.__response_to_json(content)
+ return response
+
+ @classmethod
+ def __response_to_json(cls, text) -> dict:
+ text = str(text.decode("utf-8"))
+
+ split_text = text.rsplit("\n", 1)[1]
+ to_json = json.loads(split_text)
+ return to_json
diff --git a/gui/streamlit_chat_app.py b/gui/streamlit_chat_app.py
index fc5c8d8e..6abc9caf 100644
--- a/gui/streamlit_chat_app.py
+++ b/gui/streamlit_chat_app.py
@@ -11,7 +11,6 @@ import pickle
conversations_file = "conversations.pkl"
-
def load_conversations():
try:
with open(conversations_file, "rb") as f:
diff --git a/requirements.txt b/requirements.txt
index d30b29aa..366502b5 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -10,4 +10,4 @@ selenium
fake-useragent
twocaptcha
https://github.com/AI-Yash/st-chat/archive/refs/pull/24/head.zip
-pydantic
+pydantic
\ No newline at end of file
diff --git a/test.py b/test.py
deleted file mode 100644
index 0fd2ec8b..00000000
--- a/test.py
+++ /dev/null
@@ -1,5 +0,0 @@
-from gpt4free import theb
-
-for token in theb.Completion.create('hello world'):
- print(token, end='', flush=True)
- print('asdsos')
\ No newline at end of file
diff --git a/testing/theb_test.py b/testing/theb_test.py
new file mode 100644
index 00000000..0fd2ec8b
--- /dev/null
+++ b/testing/theb_test.py
@@ -0,0 +1,5 @@
+from gpt4free import theb
+
+for token in theb.Completion.create('hello world'):
+ print(token, end='', flush=True)
+ print('asdsos')
\ No newline at end of file
diff --git a/testing/useless_test.py b/testing/useless_test.py
new file mode 100644
index 00000000..9b613aac
--- /dev/null
+++ b/testing/useless_test.py
@@ -0,0 +1,27 @@
+from gpt4free import usesless
+
+message_id = ""
+while True:
+ prompt = input("Question: ")
+ if prompt == "!stop":
+ break
+
+ req = usesless.Completion.create(prompt=prompt, parentMessageId=message_id)
+
+ print(f"Answer: {req['text']}")
+ message_id = req["id"]
+
+
+import gpt4free
+
+message_id = ""
+while True:
+ prompt = input("Question: ")
+ if prompt == "!stop":
+ break
+
+ req = gpt4free.Completion.create(provider = gpt4free.Provider.UseLess,
+ prompt=prompt, parentMessageId=message_id)
+
+ print(f"Answer: {req['text']}")
+ message_id = req["id"]
\ No newline at end of file
diff --git a/unfinished/chatpdf/__init__.py b/unfinished/chatpdf/__init__.py
index 4c9d2d3e..30dc1d3e 100644
--- a/unfinished/chatpdf/__init__.py
+++ b/unfinished/chatpdf/__init__.py
@@ -1,59 +1,66 @@
import requests
import json
+from queue import Queue, Empty
+from threading import Thread
+from json import loads
+from re import findall
+
+
class Completion:
def request(prompt: str):
'''TODO: some sort of authentication + upload PDF from URL or local file
- Then you should get the atoken and chat ID
- '''
-
+ Then you should get the atoken and chat ID
+ '''
+
token = "your_token_here"
chat_id = "your_chat_id_here"
url = "https://chat-pr4yueoqha-ue.a.run.app/"
payload = json.dumps({
- "v": 2,
- "chatSession": {
- "type": "join",
- "chatId": chat_id
- },
- "history": [
- {
- "id": "VNsSyJIq_0",
- "author": "p_if2GPSfyN8hjDoA7unYe",
- "msg": "",
- "time": 1682672009270
- },
- {
- "id": "Zk8DRUtx_6",
- "author": "uplaceholder",
- "msg": prompt,
- "time": 1682672181339
- }
- ]
- })
-
+ "v": 2,
+ "chatSession": {
+ "type": "join",
+ "chatId": chat_id
+ },
+ "history": [
+ {
+ "id": "VNsSyJIq_0",
+ "author": "p_if2GPSfyN8hjDoA7unYe",
+ "msg": "",
+ "time": 1682672009270
+ },
+ {
+ "id": "Zk8DRUtx_6",
+ "author": "uplaceholder",
+ "msg": prompt,
+ "time": 1682672181339
+ }
+ ]
+ })
+
# TODO: fix headers, use random user-agent, streaming response, etc
headers = {
- 'authority': 'chat-pr4yueoqha-ue.a.run.app',
- 'accept': '*/*',
- 'accept-language': 'en-US,en;q=0.9',
- 'atoken': token,
- 'content-type': 'application/json',
- 'origin': 'https://www.chatpdf.com',
- 'referer': 'https://www.chatpdf.com/',
- 'sec-ch-ua': '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
- 'sec-ch-ua-mobile': '?0',
- 'sec-ch-ua-platform': '"Windows"',
- 'sec-fetch-dest': 'empty',
- 'sec-fetch-mode': 'cors',
- 'sec-fetch-site': 'cross-site',
- 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
- }
+ 'authority': 'chat-pr4yueoqha-ue.a.run.app',
+ 'accept': '*/*',
+ 'accept-language': 'en-US,en;q=0.9',
+ 'atoken': token,
+ 'content-type': 'application/json',
+ 'origin': 'https://www.chatpdf.com',
+ 'referer': 'https://www.chatpdf.com/',
+ 'sec-ch-ua': '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
+ 'sec-ch-ua-mobile': '?0',
+ 'sec-ch-ua-platform': '"Windows"',
+ 'sec-fetch-dest': 'empty',
+ 'sec-fetch-mode': 'cors',
+ 'sec-fetch-site': 'cross-site',
+ 'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36'
+ }
- response = requests.request("POST", url, headers=headers, data=payload).text
+ response = requests.request(
+ "POST", url, headers=headers, data=payload).text
Completion.stream_completed = True
return {'response': response}
diff --git a/unfinished/usesless/README.md b/unfinished/usesless/README.md
deleted file mode 100644
index 13e9df8c..00000000
--- a/unfinished/usesless/README.md
+++ /dev/null
@@ -1,23 +0,0 @@
-ai.usesless.com
-
-to do:
-
-- use random user agent in header
-- make the code better I guess (?)
-
-### Example: `usesless`
-
-```python
-import usesless
-
-message_id = ""
-while True:
- prompt = input("Question: ")
- if prompt == "!stop":
- break
-
- req = usesless.Completion.create(prompt=prompt, parentMessageId=message_id)
-
- print(f"Answer: {req['text']}")
- message_id = req["id"]
-```
diff --git a/unfinished/usesless/__init__.py b/unfinished/usesless/__init__.py
deleted file mode 100644
index 6f9a47ef..00000000
--- a/unfinished/usesless/__init__.py
+++ /dev/null
@@ -1,51 +0,0 @@
-import requests
-import json
-
-
-class Completion:
- headers = {
- "authority": "ai.usesless.com",
- "accept": "application/json, text/plain, */*",
- "accept-language": "en-US,en;q=0.5",
- "cache-control": "no-cache",
- "sec-fetch-dest": "empty",
- "sec-fetch-mode": "cors",
- "sec-fetch-site": "same-origin",
- "user-agent": "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/112.0",
- }
-
- @staticmethod
- def create(
- systemMessage: str = "You are a helpful assistant",
- prompt: str = "",
- parentMessageId: str = "",
- presence_penalty: float = 1,
- temperature: float = 1,
- model: str = "gpt-3.5-turbo",
- ):
- json_data = {
- "openaiKey": "",
- "prompt": prompt,
- "options": {
- "parentMessageId": parentMessageId,
- "systemMessage": systemMessage,
- "completionParams": {
- "presence_penalty": presence_penalty,
- "temperature": temperature,
- "model": model,
- },
- },
- }
-
- url = "https://ai.usesless.com/api/chat-process"
- request = requests.post(url, headers=Completion.headers, json=json_data)
- content = request.content
- response = Completion.__response_to_json(content)
- return response
-
- @classmethod
- def __response_to_json(cls, text) -> dict:
- text = str(text.decode("utf-8"))
- split_text = text.rsplit("\n", 1)[1]
- to_json = json.loads(split_text)
- return to_json
--
cgit v1.2.3