1
0
Fork 0

added a site and some refratoring

This commit is contained in:
t.me/xtekky 2023-04-30 12:42:21 +01:00
parent d1ac26833a
commit e02094de5b
8 changed files with 88 additions and 42 deletions

View file

@ -5,6 +5,7 @@ from gpt4free import forefront
from gpt4free import quora from gpt4free import quora
from gpt4free import theb from gpt4free import theb
from gpt4free import you from gpt4free import you
from gpt4free import usesless
class Provider(Enum): class Provider(Enum):
@ -15,6 +16,7 @@ class Provider(Enum):
ForeFront = 'fore_front' ForeFront = 'fore_front'
Theb = 'theb' Theb = 'theb'
CoCalc = 'cocalc' CoCalc = 'cocalc'
UseLess = 'useless'
class Completion: class Completion:
@ -22,6 +24,7 @@ class Completion:
@staticmethod @staticmethod
def create(provider: Provider, prompt: str, **kwargs) -> str: def create(provider: Provider, prompt: str, **kwargs) -> str:
""" """
Invokes the given provider with given prompt and addition arguments and returns the string response 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) return Completion.__theb_service(prompt, **kwargs)
elif provider == Provider.CoCalc: elif provider == Provider.CoCalc:
return Completion.__cocalc_service(prompt, **kwargs) return Completion.__cocalc_service(prompt, **kwargs)
elif provider == Provider.UseLess:
return Completion.__useless_service(prompt, **kwargs)
else: else:
raise Exception('Provider not exist, Please try again') raise Exception('Provider not exist, Please try again')
@staticmethod
def __useless_service(prompt: str, **kwargs) -> str:
return usesless.Completion.create(prompt = prompt, **kwargs)
@staticmethod @staticmethod
def __you_service(prompt: str, **kwargs) -> str: def __you_service(prompt: str, **kwargs) -> str:

View file

@ -23,6 +23,8 @@ class Completion:
temperature: float = 1, temperature: float = 1,
model: str = "gpt-3.5-turbo", model: str = "gpt-3.5-turbo",
): ):
print(parentMessageId, prompt)
json_data = { json_data = {
"openaiKey": "", "openaiKey": "",
"prompt": prompt, "prompt": prompt,
@ -40,12 +42,14 @@ class Completion:
url = "https://ai.usesless.com/api/chat-process" url = "https://ai.usesless.com/api/chat-process"
request = requests.post(url, headers=Completion.headers, json=json_data) request = requests.post(url, headers=Completion.headers, json=json_data)
content = request.content content = request.content
response = Completion.__response_to_json(content) response = Completion.__response_to_json(content)
return response return response
@classmethod @classmethod
def __response_to_json(cls, text) -> dict: def __response_to_json(cls, text) -> dict:
text = str(text.decode("utf-8")) text = str(text.decode("utf-8"))
split_text = text.rsplit("\n", 1)[1] split_text = text.rsplit("\n", 1)[1]
to_json = json.loads(split_text) to_json = json.loads(split_text)
return to_json return to_json

View file

@ -11,7 +11,6 @@ import pickle
conversations_file = "conversations.pkl" conversations_file = "conversations.pkl"
def load_conversations(): def load_conversations():
try: try:
with open(conversations_file, "rb") as f: with open(conversations_file, "rb") as f:

View file

@ -10,4 +10,4 @@ selenium
fake-useragent fake-useragent
twocaptcha twocaptcha
https://github.com/AI-Yash/st-chat/archive/refs/pull/24/head.zip https://github.com/AI-Yash/st-chat/archive/refs/pull/24/head.zip
pydantic pydantic

27
testing/useless_test.py Normal file
View file

@ -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"]

View file

@ -1,59 +1,66 @@
import requests import requests
import json import json
from queue import Queue, Empty
from threading import Thread
from json import loads
from re import findall
class Completion: class Completion:
def request(prompt: str): def request(prompt: str):
'''TODO: some sort of authentication + upload PDF from URL or local file '''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" token = "your_token_here"
chat_id = "your_chat_id_here" chat_id = "your_chat_id_here"
url = "https://chat-pr4yueoqha-ue.a.run.app/" url = "https://chat-pr4yueoqha-ue.a.run.app/"
payload = json.dumps({ payload = json.dumps({
"v": 2, "v": 2,
"chatSession": { "chatSession": {
"type": "join", "type": "join",
"chatId": chat_id "chatId": chat_id
}, },
"history": [ "history": [
{ {
"id": "VNsSyJIq_0", "id": "VNsSyJIq_0",
"author": "p_if2GPSfyN8hjDoA7unYe", "author": "p_if2GPSfyN8hjDoA7unYe",
"msg": "<start>", "msg": "<start>",
"time": 1682672009270 "time": 1682672009270
}, },
{ {
"id": "Zk8DRUtx_6", "id": "Zk8DRUtx_6",
"author": "uplaceholder", "author": "uplaceholder",
"msg": prompt, "msg": prompt,
"time": 1682672181339 "time": 1682672181339
} }
] ]
}) })
# TODO: fix headers, use random user-agent, streaming response, etc # TODO: fix headers, use random user-agent, streaming response, etc
headers = { headers = {
'authority': 'chat-pr4yueoqha-ue.a.run.app', 'authority': 'chat-pr4yueoqha-ue.a.run.app',
'accept': '*/*', 'accept': '*/*',
'accept-language': 'en-US,en;q=0.9', 'accept-language': 'en-US,en;q=0.9',
'atoken': token, 'atoken': token,
'content-type': 'application/json', 'content-type': 'application/json',
'origin': 'https://www.chatpdf.com', 'origin': 'https://www.chatpdf.com',
'referer': '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': '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
'sec-ch-ua-mobile': '?0', 'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"Windows"', 'sec-ch-ua-platform': '"Windows"',
'sec-fetch-dest': 'empty', 'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors', 'sec-fetch-mode': 'cors',
'sec-fetch-site': 'cross-site', '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' '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 Completion.stream_completed = True
return {'response': response} return {'response': response}