diff options
author | 9fo <71867245+9fo@users.noreply.github.com> | 2023-04-28 01:05:06 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-04-28 01:05:06 +0200 |
commit | 789d60ef1cd4031efe39a1d9d2db5d123f53dfb3 (patch) | |
tree | fc24e4571cf2f4527e9dee9f06be19148fd73ef4 /openaihosted/__init__.py | |
parent | moving to finished too (diff) | |
download | gpt4free-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 |
Diffstat (limited to '')
-rw-r--r-- | openaihosted/__init__.py | 60 |
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 |