diff options
author | t.me/xtekky <98614666+xtekky@users.noreply.github.com> | 2023-04-30 13:42:43 +0200 |
---|---|---|
committer | t.me/xtekky <98614666+xtekky@users.noreply.github.com> | 2023-04-30 13:42:43 +0200 |
commit | 21c82d873ab40d92b2302f7fcdc0975477eb9bec (patch) | |
tree | c70d64e5e0b14032f45cf3e17840c97ffbe54e8e /gpt4free | |
parent | added a site and some refratoring (diff) | |
parent | Merge pull request #292 from naa7/patch-8 (diff) | |
download | gpt4free-21c82d873ab40d92b2302f7fcdc0975477eb9bec.tar gpt4free-21c82d873ab40d92b2302f7fcdc0975477eb9bec.tar.gz gpt4free-21c82d873ab40d92b2302f7fcdc0975477eb9bec.tar.bz2 gpt4free-21c82d873ab40d92b2302f7fcdc0975477eb9bec.tar.lz gpt4free-21c82d873ab40d92b2302f7fcdc0975477eb9bec.tar.xz gpt4free-21c82d873ab40d92b2302f7fcdc0975477eb9bec.tar.zst gpt4free-21c82d873ab40d92b2302f7fcdc0975477eb9bec.zip |
Diffstat (limited to 'gpt4free')
-rw-r--r-- | gpt4free/cocalc/__init__.py | 50 | ||||
-rw-r--r-- | gpt4free/forefront/__init__.py | 41 | ||||
-rw-r--r-- | gpt4free/forefront/mail.py | 52 | ||||
-rw-r--r-- | gpt4free/you/README.md | 6 |
4 files changed, 56 insertions, 93 deletions
diff --git a/gpt4free/cocalc/__init__.py b/gpt4free/cocalc/__init__.py index 372f29a4..e122051a 100644 --- a/gpt4free/cocalc/__init__.py +++ b/gpt4free/cocalc/__init__.py @@ -9,29 +9,52 @@ class CoCalcResponse(BaseModel): class Completion:
+ """A class for generating text completions using CoCalc's GPT-based chatbot."""
+
+ API_ENDPOINT = "https://cocalc.com/api/v2/openai/chatgpt"
+ DEFAULT_SYSTEM_PROMPT = "ASSUME I HAVE FULL ACCESS TO COCALC. "
+
@staticmethod
def create(prompt: str, cookie_input: str) -> CoCalcResponse:
+ """
+ Generate a text completion for the given prompt using CoCalc's GPT-based chatbot.
+
+ Args:
+ prompt: The text prompt to complete.
+ cookie_input: The cookie required to authenticate the chatbot API request.
+
+ Returns:
+ A CoCalcResponse object containing the text completion and a boolean indicating
+ whether the request was successful.
+ """
+
# Initialize a session with custom headers
session = Completion._initialize_session(cookie_input)
# Set the data that will be submitted
- payload = Completion._create_payload(prompt, 'ASSUME I HAVE FULL ACCESS TO COCALC. ')
+ payload = Completion._create_payload(prompt, Completion.DEFAULT_SYSTEM_PROMPT)
- # Submit the request and return the results
- return Completion._submit_request(session, payload)
+ try:
+ # Submit the request and return the results
+ response = session.post(Completion.API_ENDPOINT, json=payload).json()
+ return CoCalcResponse(text=response['output'], status=response['success'])
+ except requests.exceptions.RequestException as e:
+ # Handle exceptions that may occur during the request
+ print(f"Error: {e}")
+ return CoCalcResponse(text="", status=False)
@classmethod
- def _initialize_session(cls, conversation_cookie) -> requests.Session:
+ def _initialize_session(cls, conversation_cookie: str) -> 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': conversation_cookie,
- 'User-Agent': UserAgent().random,
+ "Accept": "*/*",
+ "Accept-Language": "en-US,en;q=0.5",
+ "Origin": "https://cocalc.com",
+ "Referer": "https://cocalc.com/api/v2/openai/chatgpt",
+ "Cookie": conversation_cookie,
+ "User-Agent": UserAgent().random,
}
session.headers.update(headers)
@@ -39,9 +62,6 @@ class Completion: @staticmethod
def _create_payload(prompt: str, system_prompt: str) -> dict:
- return {'input': prompt, 'system': system_prompt, 'tag': 'next:index'}
+ """Create the payload for the API request."""
- @staticmethod
- def _submit_request(session: requests.Session, payload: dict) -> CoCalcResponse:
- response = session.post('https://cocalc.com/api/v2/openai/chatgpt', json=payload).json()
- return CoCalcResponse(text=response['output'], status=response['success'])
+ return {"input": prompt, "system": system_prompt, "tag": "next:index"}
diff --git a/gpt4free/forefront/__init__.py b/gpt4free/forefront/__init__.py index aa78cfa7..7a4f4f28 100644 --- a/gpt4free/forefront/__init__.py +++ b/gpt4free/forefront/__init__.py @@ -1,14 +1,14 @@ from json import loads -from re import match +from re import findall from time import time, sleep from typing import Generator, Optional from uuid import uuid4 from fake_useragent import UserAgent from requests import post +from pymailtm import MailTm, Message from tls_client import Session -from .mail import Mail from .typing import ForeFrontResponse @@ -19,11 +19,8 @@ class Account: start = time() - mail_client = Mail(proxies) - mail_token = None - mail_address = mail_client.get_mail() - - # print(mail_address) + mail_client = MailTm().get_account() + mail_address = mail_client.address client = Session(client_identifier='chrome110') client.proxies = proxies @@ -33,7 +30,7 @@ class Account: } response = client.post( - 'https://clerk.forefront.ai/v1/client/sign_ups?_clerk_js_version=4.32.6', + 'https://clerk.forefront.ai/v1/client/sign_ups?_clerk_js_version=4.38.4', data={'email_address': mail_address}, ) @@ -45,9 +42,10 @@ class Account: 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', + f'https://clerk.forefront.ai/v1/client/sign_ups/{trace_token}/prepare_verification?_clerk_js_version=4.38.4', data={ - 'strategy': 'email_code', + 'strategy': 'email_link', + 'redirect_url': 'https://accounts.forefront.ai/sign-up/verify' }, ) @@ -59,26 +57,23 @@ class Account: while True: sleep(1) - for _ in mail_client.fetch_inbox(): - if logging: - print(mail_client.get_message_content(_['id'])) - mail_token = match(r'(\d){5,6}', mail_client.get_message_content(_['id'])).group(0) + new_message: Message = mail_client.wait_for_message() + if logging: + print(new_message.data['id']) + + verification_url = findall(r'https:\/\/clerk\.forefront\.ai\/v1\/verify\?token=\w.+', new_message.text)[0] - if mail_token: + if verification_url: break if logging: - print(mail_token) + print(verification_url) - response = client.post( - f'https://clerk.forefront.ai/v1/client/sign_ups/{trace_token}/attempt_verification?_clerk_js_version=4.38.4', - data={'code': mail_token, 'strategy': 'email_code'}, - ) + response = client.get(verification_url) - if logging: - print(response.json()) + response = client.get('https://clerk.forefront.ai/v1/client?_clerk_js_version=4.38.4') - token = response.json()['client']['sessions'][0]['last_active_token']['jwt'] + token = response.json()['response']['sessions'][0]['last_active_token']['jwt'] with open('accounts.txt', 'a') as f: f.write(f'{mail_address}:{token}\n') diff --git a/gpt4free/forefront/mail.py b/gpt4free/forefront/mail.py deleted file mode 100644 index 2c00051c..00000000 --- a/gpt4free/forefront/mail.py +++ /dev/null @@ -1,52 +0,0 @@ -from random import choices -from string import ascii_letters - -from requests import Session - - -class Mail: - def __init__(self, proxies: dict = None) -> None: - self.client = Session() - self.client.proxies = proxies - self.client.headers = { - "host": "api.mail.tm", - "connection": "keep-alive", - "sec-ch-ua": "\"Google Chrome\";v=\"111\", \"Not(A:Brand\";v=\"8\", \"Chromium\";v=\"111\"", - "accept": "application/json, text/plain, */*", - "content-type": "application/json", - "sec-ch-ua-mobile": "?0", - "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36", - "sec-ch-ua-platform": "\"macOS\"", - "origin": "https://mail.tm", - "sec-fetch-site": "same-site", - "sec-fetch-mode": "cors", - "sec-fetch-dest": "empty", - "referer": "https://mail.tm/", - "accept-encoding": "gzip, deflate, br", - "accept-language": "en-GB,en-US;q=0.9,en;q=0.8", - } - - def get_mail(self) -> str: - token = ''.join(choices(ascii_letters, k=14)).lower() - init = self.client.post( - "https://api.mail.tm/accounts", json={"address": f"{token}@bugfoo.com", "password": token} - ) - - if init.status_code == 201: - resp = self.client.post("https://api.mail.tm/token", json={**init.json(), "password": token}) - - self.client.headers['authorization'] = 'Bearer ' + resp.json()['token'] - - return f"{token}@bugfoo.com" - - else: - raise Exception("Failed to create email") - - def fetch_inbox(self): - return self.client.get(f"https://api.mail.tm/messages").json()["hydra:member"] - - def get_message(self, message_id: str): - return self.client.get(f"https://api.mail.tm/messages/{message_id}").json() - - def get_message_content(self, message_id: str): - return self.get_message(message_id)["text"] diff --git a/gpt4free/you/README.md b/gpt4free/you/README.md index 11b4723e..e1917c6d 100644 --- a/gpt4free/you/README.md +++ b/gpt4free/you/README.md @@ -10,7 +10,7 @@ response = you.Completion.create( detailed=True, include_links=True, ) -print(response) +print(response.dict()) # { # "response": "...", @@ -32,7 +32,7 @@ while True: prompt=prompt, chat=chat) - print("Bot:", response["response"]) + print("Bot:", response.text) - chat.append({"question": prompt, "answer": response["response"]}) + chat.append({"question": prompt, "answer": response.text}) ``` |