From 2b4079f8a9acc4ce70c6e4b3b7fa99f4c5bc9738 Mon Sep 17 00:00:00 2001 From: Hikeri <95499256+hikeri@users.noreply.github.com> Date: Thu, 27 Apr 2023 22:56:43 +0300 Subject: [PATCH 01/14] Update __init__.py --- forefront/__init__.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/forefront/__init__.py b/forefront/__init__.py index 44f5d44..615057f 100644 --- a/forefront/__init__.py +++ b/forefront/__init__.py @@ -38,9 +38,12 @@ class Account: "email_address": mail_adress } ) - - trace_token = response.json()['response']['id'] - if logging: print(trace_token) + + try: + trace_token = response.json()['response']['id'] + if logging: print(trace_token) + except KeyError: + return 'Failed to create account!' response = client.post( f"https://clerk.forefront.ai/v1/client/sign_ups/{trace_token}/prepare_verification?_clerk_js_version=4.32.6", From bca970ebc73cfbcd6f152feb5f51418abdc6b5e4 Mon Sep 17 00:00:00 2001 From: 9fo <71867245+9fo@users.noreply.github.com> Date: Thu, 27 Apr 2023 16:03:27 -0700 Subject: [PATCH 02/14] moving to finished --- unfinished/openaihosted/README.md | 3 --- unfinished/openaihosted/__init__.py | 41 ----------------------------- 2 files changed, 44 deletions(-) delete mode 100644 unfinished/openaihosted/README.md delete mode 100644 unfinished/openaihosted/__init__.py diff --git a/unfinished/openaihosted/README.md b/unfinished/openaihosted/README.md deleted file mode 100644 index 60b5ea7..0000000 --- a/unfinished/openaihosted/README.md +++ /dev/null @@ -1,3 +0,0 @@ -writegpt.ai -to do: -- code ref diff --git a/unfinished/openaihosted/__init__.py b/unfinished/openaihosted/__init__.py deleted file mode 100644 index ba4d398..0000000 --- a/unfinished/openaihosted/__init__.py +++ /dev/null @@ -1,41 +0,0 @@ -import json -import re - -import requests - -headers = { - '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': 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/113.0.0.0 Safari/537.36 Edg/113.0.0.0', -} - - -def create_query_param(conversation): - encoded_conversation = json.dumps(conversation) - return encoded_conversation.replace(" ", "%20").replace('"', '%22').replace("'", "%27") - - -user_input = input("Enter your message: ") - -data = [ - {"role": "system", "content": "You are a helpful assistant."}, - {"role": "user", "content": "hi"}, - {"role": "assistant", "content": "Hello! How can I assist you today?"}, - {"role": "user", "content": user_input}, -] - -query_param = create_query_param(data) -url = f'https://openai.a2hosted.com/chat?q={query_param}' - -response = requests.get(url, headers=headers, stream=True) - -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: print(msg_match.group(1)) - if num_match: print(num_match.group(1)) From e2de6a01fe2ace2bf706f39902c7ae1ac3e395f1 Mon Sep 17 00:00:00 2001 From: 9fo <71867245+9fo@users.noreply.github.com> Date: Thu, 27 Apr 2023 16:03:43 -0700 Subject: [PATCH 03/14] moving to finished too --- unfinished/cocalc/__init__.py | 47 -------------------------------- unfinished/cocalc/cocalc_test.py | 7 ----- 2 files changed, 54 deletions(-) delete mode 100644 unfinished/cocalc/__init__.py delete mode 100644 unfinished/cocalc/cocalc_test.py diff --git a/unfinished/cocalc/__init__.py b/unfinished/cocalc/__init__.py deleted file mode 100644 index 2b73fc9..0000000 --- a/unfinished/cocalc/__init__.py +++ /dev/null @@ -1,47 +0,0 @@ -import requests - - -class Completion: - def create(self, prompt="What is the square root of pi", - system_prompt=("ASSUME I HAVE FULL ACCESS TO COCALC. ENCLOSE MATH IN $. " - "INCLUDE THE LANGUAGE DIRECTLY AFTER THE TRIPLE BACKTICKS " - "IN ALL MARKDOWN CODE BLOCKS. How can I do the following using CoCalc?")) -> str: - # Initialize a session with custom headers - session = self._initialize_session() - - # Set the data that will be submitted - payload = self._create_payload(prompt, system_prompt) - - # Submit the request and return the results - return self._submit_request(session, payload) - - def _initialize_session(self) -> requests.Session: - """Initialize a session with custom headers for the request.""" - - session = requests.Session() - headers = { - 'Accept': '*/*', - 'Accept-Language': 'en-US,en;q=0.5', - 'Origin': 'https://cocalc.com', - 'Referer': 'https://cocalc.com/api/v2/openai/chatgpt', - 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36', - } - session.headers.update(headers) - - return session - - def _create_payload(self, prompt: str, system_prompt: str) -> dict: - """Create the payload with the given prompts.""" - - return { - "input": prompt, - "system": system_prompt, - "tag": "next:index" - } - - def _submit_request(self, session: requests.Session, payload: dict) -> str: - """Submit the request to the API and return the response.""" - - response = session.post( - "https://cocalc.com/api/v2/openai/chatgpt", json=payload).json() - return response diff --git a/unfinished/cocalc/cocalc_test.py b/unfinished/cocalc/cocalc_test.py deleted file mode 100644 index d626651..0000000 --- a/unfinished/cocalc/cocalc_test.py +++ /dev/null @@ -1,7 +0,0 @@ -import cocalc - -response = cocalc.Completion.create( - prompt='hello world' -) - -print(response) From 789d60ef1cd4031efe39a1d9d2db5d123f53dfb3 Mon Sep 17 00:00:00 2001 From: 9fo <71867245+9fo@users.noreply.github.com> Date: Thu, 27 Apr 2023 16:05:06 -0700 Subject: [PATCH 04/14] openaihosted finished --- openaihosted/__init__.py | 60 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 openaihosted/__init__.py diff --git a/openaihosted/__init__.py b/openaihosted/__init__.py new file mode 100644 index 0000000..c773b3f --- /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 From ac92b8a2ad4d2aa6b6e471ced50799bc5992254b Mon Sep 17 00:00:00 2001 From: 9fo <71867245+9fo@users.noreply.github.com> Date: Thu, 27 Apr 2023 16:07:01 -0700 Subject: [PATCH 05/14] refactored cocalc too --- cocalc/__init__.py | 57 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 cocalc/__init__.py diff --git a/cocalc/__init__.py b/cocalc/__init__.py new file mode 100644 index 0000000..5a32274 --- /dev/null +++ b/cocalc/__init__.py @@ -0,0 +1,57 @@ +import requests + +class Completion: + @staticmethod + def create(prompt:str, cookieInput:str) -> str: + # Initialize a session with custom headers + session = Completion._initialize_session(cookieInput) + + # Set the data that will be submitted + payload = Completion._create_payload(prompt, ("ASSUME I HAVE FULL ACCESS TO COCALC. ")) + + # Submit the request and return the results + return Completion._submit_request(session, payload) + + @classmethod + def _initialize_session(cls, conversationCookie) -> requests.Session: + """Initialize a session with custom headers for the request.""" + + session = requests.Session() + headers = { + 'Accept': '*/*', + 'Accept-Language': 'en-US,en;q=0.5', + 'Origin': 'https://cocalc.com', + 'Referer': 'https://cocalc.com/api/v2/openai/chatgpt', + 'Cookie': conversationCookie, + 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36', + } + session.headers.update(headers) + + return session + + @classmethod + def _create_payload( + cls, + prompt: str, + system_prompt: str + ) -> dict: + + return { + "input": prompt, + "system": system_prompt, + "tag": "next:index" + } + + @classmethod + def _submit_request( + cls, + session: requests.Session, + payload: dict + ) -> str: + + response = session.post( + "https://cocalc.com/api/v2/openai/chatgpt", json=payload).json() + return { + "response":response["output"], + "success":response["success"] + } \ No newline at end of file From 7c5398e6e1c08e75ff65a5f026e112c38ca32d49 Mon Sep 17 00:00:00 2001 From: 9fo <71867245+9fo@users.noreply.github.com> Date: Thu, 27 Apr 2023 16:12:04 -0700 Subject: [PATCH 06/14] Created readme for openaihosted --- openaihosted/readme.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 openaihosted/readme.md diff --git a/openaihosted/readme.md b/openaihosted/readme.md new file mode 100644 index 0000000..acd60ba --- /dev/null +++ b/openaihosted/readme.md @@ -0,0 +1,10 @@ +### Example: `openaihosted`) + + +```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 +``` From 78e338b5de9e23c531a0df9b3249b55c21a66a86 Mon Sep 17 00:00:00 2001 From: 9fo <71867245+9fo@users.noreply.github.com> Date: Thu, 27 Apr 2023 16:20:34 -0700 Subject: [PATCH 07/14] Create readme.md --- cocalc/readme.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 cocalc/readme.md diff --git a/cocalc/readme.md b/cocalc/readme.md new file mode 100644 index 0000000..903fac7 --- /dev/null +++ b/cocalc/readme.md @@ -0,0 +1,20 @@ +### Example: `cocalc` + + +```python +# import library +import cocalc + +cocalc.Completion.create(prompt="How are you!", cookieInput="cookieinput") ## Tutorial +``` + +### How to grab cookie input +```js +# input this into ur developer tools console and the exact response u get from this u put into ur cookieInput! +var cookies = document.cookie.split("; "); +var cookieString = ""; +for (var i = 0; i < cookies.length; i++) { + cookieString += cookies[i] + "; "; +} +console.log(cookieString); +``` From 9fc341a6c87e53b6fe42d77df30f902a41460055 Mon Sep 17 00:00:00 2001 From: 9fo <71867245+9fo@users.noreply.github.com> Date: Thu, 27 Apr 2023 16:20:50 -0700 Subject: [PATCH 08/14] fixed # --- cocalc/readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cocalc/readme.md b/cocalc/readme.md index 903fac7..0409533 100644 --- a/cocalc/readme.md +++ b/cocalc/readme.md @@ -10,7 +10,7 @@ cocalc.Completion.create(prompt="How are you!", cookieInput="cookieinput") ## Tu ### How to grab cookie input ```js -# input this into ur developer tools console and the exact response u get from this u put into ur cookieInput! +// input this into ur developer tools console and the exact response u get from this u put into ur cookieInput! var cookies = document.cookie.split("; "); var cookieString = ""; for (var i = 0; i < cookies.length; i++) { From 15d0150ceefbc0b683ee778d32b6207574ac1f0e Mon Sep 17 00:00:00 2001 From: digger-yu Date: Fri, 28 Apr 2023 09:09:39 +0800 Subject: [PATCH 09/14] Update README.md Modified the style of warning --- quora/README.md | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/quora/README.md b/quora/README.md index 1acd4a6..2467927 100644 --- a/quora/README.md +++ b/quora/README.md @@ -1,4 +1,5 @@ -#### warning !!! + +> ⚠ Warning !!! poe.com added security and can detect if you are making automated requests. You may get your account banned if you are using this api. The normal non-driver api is also currently not very stable @@ -16,7 +17,7 @@ models = { } ``` -#### !! new: bot creation +### New: bot creation ```python # import quora (poe) package @@ -43,7 +44,7 @@ for response in quora.StreamingCompletion.create( print(response.completion.choices[0].text) ``` -#### Normal Response: +### Normal Response: ```python response = quora.Completion.create(model = 'gpt-4', @@ -53,7 +54,7 @@ response = quora.Completion.create(model = 'gpt-4', print(response.completion.choices[0].text) ``` -#### Update Use This For Poe +### Update Use This For Poe ```python from quora import Poe From 81480d0c7ea8f68e206258e3ccd1d36149faf861 Mon Sep 17 00:00:00 2001 From: naa <44613678+naa7@users.noreply.github.com> Date: Thu, 27 Apr 2023 23:48:55 -0400 Subject: [PATCH 10/14] added an if-statement for ending loop Instead of pressing Ctrl+c to end program. It is easier and less messy for ending chatbot --- you/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/you/README.md b/you/README.md index dbce37a..25c2008 100644 --- a/you/README.md +++ b/you/README.md @@ -25,7 +25,8 @@ chat = [] while True: prompt = input("You: ") - + if prompt == 'q': + break response = you.Completion.create( prompt=prompt, chat=chat) @@ -33,4 +34,4 @@ while True: print("Bot:", response["response"]) chat.append({"question": prompt, "answer": response["response"]}) -``` \ No newline at end of file +``` From 210f8958ce4e89f56873dce792d3147735bd4bc3 Mon Sep 17 00:00:00 2001 From: naa <44613678+naa7@users.noreply.github.com> Date: Thu, 27 Apr 2023 23:51:52 -0400 Subject: [PATCH 11/14] updated README.md A print statement to add a newline after iterating through the loop --- theb/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/theb/README.md b/theb/README.md index 982c34a..ca978fc 100644 --- a/theb/README.md +++ b/theb/README.md @@ -8,4 +8,5 @@ import theb # simple streaming completion for token in theb.Completion.create('hello world'): print(token, end='', flush=True) -``` \ No newline at end of file +print("") +``` From 51697d3216a29c143d241d028f8b4102e40246ac Mon Sep 17 00:00:00 2001 From: naa <44613678+naa7@users.noreply.github.com> Date: Fri, 28 Apr 2023 00:10:34 -0400 Subject: [PATCH 12/14] Updated README.md There is no need for logging as it takes so much space of terminal window. Also, added a print statement to add a line at the end of the Bot's response. --- forefront/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/forefront/README.md b/forefront/README.md index 5b084af..a2be818 100644 --- a/forefront/README.md +++ b/forefront/README.md @@ -4,7 +4,7 @@ import forefront # create an account -token = forefront.Account.create(logging=True) +token = forefront.Account.create(logging=False) print(token) # get a response @@ -12,4 +12,5 @@ for response in forefront.StreamingCompletion.create(token = token, prompt = 'hello world', model='gpt-4'): print(response.completion.choices[0].text, end = '') -``` \ No newline at end of file +print("") +``` From 6719bee133ce8202129e19aa2c728259206684b7 Mon Sep 17 00:00:00 2001 From: Marvin <115476150+Fubge@users.noreply.github.com> Date: Fri, 28 Apr 2023 08:54:40 +0200 Subject: [PATCH 13/14] Update README.md : typo fix small typos fixed --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a37dc9b..14bf0d9 100644 --- a/README.md +++ b/README.md @@ -80,14 +80,14 @@ Please note the following: - [`/you`](./you/README.md) ## Install -download or clone this GitHub repo +Download or clone this GitHub repo install requirements with: ```sh pip3 install -r requirements.txt ``` ## To start gpt4free GUI -move `streamlit_app.py` from `./gui` to the base folder +Move `streamlit_app.py` from `./gui` to the base folder then run: `streamlit run streamlit_app.py` or `python3 -m streamlit run streamlit_app.py` From ec33603bb7dd9f13049b114a093717dc7a399d28 Mon Sep 17 00:00:00 2001 From: ethanx40 <93695126+ethanx40@users.noreply.github.com> Date: Fri, 28 Apr 2023 15:41:07 +0800 Subject: [PATCH 14/14] need escape unicode answer to support Chinese --- gui/streamlit_app.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/gui/streamlit_app.py b/gui/streamlit_app.py index 4e0a618..8251be2 100644 --- a/gui/streamlit_app.py +++ b/gui/streamlit_app.py @@ -37,9 +37,10 @@ question_text_area = st.text_area( '🤖 Ask Any Question :', placeholder='Explain quantum computing in 50 words') if st.button('🧠 Think'): answer = get_answer(question_text_area) + escaped = answer.encode('utf-8').decode('unicode-escape') # Display answer st.caption("Answer :") - st.markdown(answer) + st.markdown(escaped) # Hide Streamlit footer hide_streamlit_style = """