summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
author9fo <71867245+9fo@users.noreply.github.com>2023-04-28 01:05:06 +0200
committerGitHub <noreply@github.com>2023-04-28 01:05:06 +0200
commit789d60ef1cd4031efe39a1d9d2db5d123f53dfb3 (patch)
treefc24e4571cf2f4527e9dee9f06be19148fd73ef4
parentmoving to finished too (diff)
downloadgpt4free-789d60ef1cd4031efe39a1d9d2db5d123f53dfb3.tar
gpt4free-789d60ef1cd4031efe39a1d9d2db5d123f53dfb3.tar.gz
gpt4free-789d60ef1cd4031efe39a1d9d2db5d123f53dfb3.tar.bz2
gpt4free-789d60ef1cd4031efe39a1d9d2db5d123f53dfb3.tar.lz
gpt4free-789d60ef1cd4031efe39a1d9d2db5d123f53dfb3.tar.xz
gpt4free-789d60ef1cd4031efe39a1d9d2db5d123f53dfb3.tar.zst
gpt4free-789d60ef1cd4031efe39a1d9d2db5d123f53dfb3.zip
-rw-r--r--openaihosted/__init__.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/openaihosted/__init__.py b/openaihosted/__init__.py
new file mode 100644
index 00000000..c773b3f9
--- /dev/null
+++ b/openaihosted/__init__.py
@@ -0,0 +1,60 @@
+import json
+import re
+from fake_useragent import UserAgent
+
+import requests
+
+class Completion:
+ @staticmethod
+ def create(
+ systemprompt:str,
+ text:str,
+ assistantprompt:str
+ ):
+
+ data = [
+ {"role": "system", "content": systemprompt},
+ {"role": "user", "content": "hi"},
+ {"role": "assistant", "content": assistantprompt},
+ {"role": "user", "content": text},
+ ]
+ url = f'https://openai.a2hosted.com/chat?q={Completion.__get_query_param(data)}'
+
+ try:
+ response = requests.get(url, headers=Completion.__get_headers(), stream=True)
+ except:
+ return Completion.__get_failure_response()
+
+ sentence = ""
+
+ for message in response.iter_content(chunk_size=1024):
+ message = message.decode('utf-8')
+ msg_match, num_match = re.search(r'"msg":"([^"]+)"', message), re.search(r'\[DONE\] (\d+)', message)
+ if msg_match:
+ # Put the captured group into a sentence
+ sentence += msg_match.group(1)
+ return {
+ 'response': sentence
+ }
+
+ @classmethod
+ def __get_headers(cls) -> dict:
+ return {
+ 'authority': 'openai.a2hosted.com',
+ 'accept': 'text/event-stream',
+ 'accept-language': 'en-US,en;q=0.9,id;q=0.8,ja;q=0.7',
+ 'cache-control': 'no-cache',
+ 'sec-fetch-dest': 'empty',
+ 'sec-fetch-mode': 'cors',
+ 'sec-fetch-site': 'cross-site',
+ 'user-agent': UserAgent().random
+ }
+
+ @classmethod
+ def __get_failure_response(cls) -> dict:
+ return dict(response='Unable to fetch the response, Please try again.', links=[], extra={})
+
+ @classmethod
+ def __get_query_param(cls, conversation) -> str:
+ encoded_conversation = json.dumps(conversation)
+ return encoded_conversation.replace(" ", "%20").replace('"', '%22').replace("'", "%27") \ No newline at end of file