commit
c5cdbaf6e1
7 changed files with 147 additions and 98 deletions
|
@ -1,21 +1,19 @@
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
|
|
||||||
class Completion:
|
class Completion:
|
||||||
def create(self, prompt="What is the square root of pi",
|
@staticmethod
|
||||||
system_prompt=("ASSUME I HAVE FULL ACCESS TO COCALC. ENCLOSE MATH IN $. "
|
def create(prompt:str, cookieInput:str) -> str:
|
||||||
"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
|
# Initialize a session with custom headers
|
||||||
session = self._initialize_session()
|
session = Completion._initialize_session(cookieInput)
|
||||||
|
|
||||||
# Set the data that will be submitted
|
# Set the data that will be submitted
|
||||||
payload = self._create_payload(prompt, system_prompt)
|
payload = Completion._create_payload(prompt, ("ASSUME I HAVE FULL ACCESS TO COCALC. "))
|
||||||
|
|
||||||
# Submit the request and return the results
|
# Submit the request and return the results
|
||||||
return self._submit_request(session, payload)
|
return Completion._submit_request(session, payload)
|
||||||
|
|
||||||
def _initialize_session(self) -> requests.Session:
|
@classmethod
|
||||||
|
def _initialize_session(cls, conversationCookie) -> requests.Session:
|
||||||
"""Initialize a session with custom headers for the request."""
|
"""Initialize a session with custom headers for the request."""
|
||||||
|
|
||||||
session = requests.Session()
|
session = requests.Session()
|
||||||
|
@ -24,14 +22,19 @@ class Completion:
|
||||||
'Accept-Language': 'en-US,en;q=0.5',
|
'Accept-Language': 'en-US,en;q=0.5',
|
||||||
'Origin': 'https://cocalc.com',
|
'Origin': 'https://cocalc.com',
|
||||||
'Referer': 'https://cocalc.com/api/v2/openai/chatgpt',
|
'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',
|
'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)
|
session.headers.update(headers)
|
||||||
|
|
||||||
return session
|
return session
|
||||||
|
|
||||||
def _create_payload(self, prompt: str, system_prompt: str) -> dict:
|
@classmethod
|
||||||
"""Create the payload with the given prompts."""
|
def _create_payload(
|
||||||
|
cls,
|
||||||
|
prompt: str,
|
||||||
|
system_prompt: str
|
||||||
|
) -> dict:
|
||||||
|
|
||||||
return {
|
return {
|
||||||
"input": prompt,
|
"input": prompt,
|
||||||
|
@ -39,9 +42,16 @@ class Completion:
|
||||||
"tag": "next:index"
|
"tag": "next:index"
|
||||||
}
|
}
|
||||||
|
|
||||||
def _submit_request(self, session: requests.Session, payload: dict) -> str:
|
@classmethod
|
||||||
"""Submit the request to the API and return the response."""
|
def _submit_request(
|
||||||
|
cls,
|
||||||
|
session: requests.Session,
|
||||||
|
payload: dict
|
||||||
|
) -> str:
|
||||||
|
|
||||||
response = session.post(
|
response = session.post(
|
||||||
"https://cocalc.com/api/v2/openai/chatgpt", json=payload).json()
|
"https://cocalc.com/api/v2/openai/chatgpt", json=payload).json()
|
||||||
return response
|
return {
|
||||||
|
"response":response["output"],
|
||||||
|
"success":response["success"]
|
||||||
|
}
|
20
cocalc/readme.md
Normal file
20
cocalc/readme.md
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
### Example: `cocalc` <a name="example-cocalc"></a>
|
||||||
|
|
||||||
|
|
||||||
|
```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);
|
||||||
|
```
|
60
openaihosted/__init__.py
Normal file
60
openaihosted/__init__.py
Normal file
|
@ -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")
|
10
openaihosted/readme.md
Normal file
10
openaihosted/readme.md
Normal file
|
@ -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
|
||||||
|
```
|
|
@ -1,7 +0,0 @@
|
||||||
import cocalc
|
|
||||||
|
|
||||||
response = cocalc.Completion.create(
|
|
||||||
prompt='hello world'
|
|
||||||
)
|
|
||||||
|
|
||||||
print(response)
|
|
|
@ -1,3 +0,0 @@
|
||||||
writegpt.ai
|
|
||||||
to do:
|
|
||||||
- code ref
|
|
|
@ -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))
|
|
Loading…
Reference in a new issue