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 = """