summaryrefslogtreecommitdiffstats
path: root/openaihosted
diff options
context:
space:
mode:
authornoptuno <repollo.marrero@gmail.com>2023-04-28 12:33:51 +0200
committernoptuno <repollo.marrero@gmail.com>2023-04-28 12:33:51 +0200
commit396d7e11b2623cf05c3b0fd4ff9b6cce667835fd (patch)
tree4d7f4531e082deba4fb6bac7e5b221d887e066d9 /openaihosted
parentRemove ignored files from repository (diff)
parentMerge pull request #241 from ethanx40/main (diff)
downloadgpt4free-396d7e11b2623cf05c3b0fd4ff9b6cce667835fd.tar
gpt4free-396d7e11b2623cf05c3b0fd4ff9b6cce667835fd.tar.gz
gpt4free-396d7e11b2623cf05c3b0fd4ff9b6cce667835fd.tar.bz2
gpt4free-396d7e11b2623cf05c3b0fd4ff9b6cce667835fd.tar.lz
gpt4free-396d7e11b2623cf05c3b0fd4ff9b6cce667835fd.tar.xz
gpt4free-396d7e11b2623cf05c3b0fd4ff9b6cce667835fd.tar.zst
gpt4free-396d7e11b2623cf05c3b0fd4ff9b6cce667835fd.zip
Diffstat (limited to '')
-rw-r--r--openaihosted/__init__.py60
-rw-r--r--openaihosted/readme.md10
2 files changed, 70 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
diff --git a/openaihosted/readme.md b/openaihosted/readme.md
new file mode 100644
index 00000000..acd60bab
--- /dev/null
+++ b/openaihosted/readme.md
@@ -0,0 +1,10 @@
+### Example: `openaihosted`) <a name="example-openaihosted"></a>
+
+
+```python
+# import library
+import openaihosted
+
+res = openaihosted.Completion.create(systemprompt="U are ChatGPT", text="What is 4+4", assistantprompt="U are a helpful assistant.")['response']
+print(res) ## Responds with the answer
+```