diff options
author | noptuno <repollo.marrero@gmail.com> | 2023-04-28 12:33:51 +0200 |
---|---|---|
committer | noptuno <repollo.marrero@gmail.com> | 2023-04-28 12:33:51 +0200 |
commit | 396d7e11b2623cf05c3b0fd4ff9b6cce667835fd (patch) | |
tree | 4d7f4531e082deba4fb6bac7e5b221d887e066d9 /openaihosted | |
parent | Remove ignored files from repository (diff) | |
parent | Merge pull request #241 from ethanx40/main (diff) | |
download | gpt4free-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__.py | 60 | ||||
-rw-r--r-- | openaihosted/readme.md | 10 |
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 +``` |