Skip to content

Commit

Permalink
Reformat code using PyCharm
Browse files Browse the repository at this point in the history
  • Loading branch information
AymaneHrouch committed Apr 27, 2023
1 parent 86e0fbe commit f1594cf
Show file tree
Hide file tree
Showing 33 changed files with 672 additions and 663 deletions.
185 changes: 95 additions & 90 deletions forefront/__init__.py
Original file line number Diff line number Diff line change
@@ -1,51 +1,54 @@
from tls_client import Session
from forefront.mail import Mail
from time import time, sleep
from json import loads
from re import match
from forefront.typing import ForeFrontResponse
from time import time, sleep
from uuid import uuid4

from requests import post
from json import loads
from tls_client import Session

from forefront.mail import Mail
from forefront.typing import ForeFrontResponse


class Account:
@staticmethod
def create(proxy = None, logging = False):
def create(proxy=None, logging=False):

proxies = {
'http': 'http://' + proxy,
'https': 'http://' + proxy } if proxy else False
'https': 'http://' + proxy} if proxy else False

start = time()

mail = Mail(proxies)
mail_token = None
mail_adress = mail.get_mail()
#print(mail_adress)
client = Session(client_identifier='chrome110')
mail = Mail(proxies)
mail_token = None
mail_adress = mail.get_mail()

# print(mail_adress)

client = Session(client_identifier='chrome110')
client.proxies = proxies
client.headers = {
"origin": "https://accounts.forefront.ai",
"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",
"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",
}
response = client.post('https://clerk.forefront.ai/v1/client/sign_ups?_clerk_js_version=4.32.6',
data = {
"email_address": mail_adress
}
)

response = client.post('https://clerk.forefront.ai/v1/client/sign_ups?_clerk_js_version=4.32.6',
data={
"email_address": mail_adress
}
)

trace_token = response.json()['response']['id']
if logging: print(trace_token)

response = client.post(f"https://clerk.forefront.ai/v1/client/sign_ups/{trace_token}/prepare_verification?_clerk_js_version=4.32.6",
data = {
"strategy" : "email_code",
response = client.post(
f"https://clerk.forefront.ai/v1/client/sign_ups/{trace_token}/prepare_verification?_clerk_js_version=4.32.6",
data={
"strategy": "email_code",
}
)
)

if logging: print(response.text)

if not 'sign_up_attempt' in response.text:
Expand All @@ -59,89 +62,91 @@ def create(proxy = None, logging = False):

if mail_token:
break

if logging: print(mail_token)

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.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'
})

if logging: print(response.json())
token = response.json()['client']['sessions'][0]['last_active_token']['jwt']

token = response.json()['client']['sessions'][0]['last_active_token']['jwt']

with open('accounts.txt', 'a') as f:
f.write(f'{mail_adress}:{token}\n')

if logging: print(time() - start)

return token


class StreamingCompletion:
@staticmethod
def create(
token = None,
chatId = None,
prompt = '',
actionType = 'new',
defaultPersona = '607e41fe-95be-497e-8e97-010a59b2e2c0', # default
model = 'gpt-4') -> ForeFrontResponse:
token=None,
chatId=None,
prompt='',
actionType='new',
defaultPersona='607e41fe-95be-497e-8e97-010a59b2e2c0', # default
model='gpt-4') -> ForeFrontResponse:

if not token: raise Exception('Token is required!')
if not chatId: chatId = str(uuid4())

headers = {
'authority' : 'chat-server.tenant-forefront-default.knative.chi.coreweave.com',
'accept' : '*/*',
'accept-language' : 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
'authorization' : 'Bearer ' + token,
'cache-control' : 'no-cache',
'content-type' : 'application/json',
'origin' : 'https://chat.forefront.ai',
'pragma' : 'no-cache',
'referer' : 'https://chat.forefront.ai/',
'sec-ch-ua' : '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
'sec-ch-ua-mobile' : '?0',
'authority': 'chat-server.tenant-forefront-default.knative.chi.coreweave.com',
'accept': '*/*',
'accept-language': 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
'authorization': 'Bearer ' + token,
'cache-control': 'no-cache',
'content-type': 'application/json',
'origin': 'https://chat.forefront.ai',
'pragma': 'no-cache',
'referer': 'https://chat.forefront.ai/',
'sec-ch-ua': '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
'sec-ch-ua-mobile': '?0',
'sec-ch-ua-platform': '"macOS"',
'sec-fetch-dest' : 'empty',
'sec-fetch-mode' : 'cors',
'sec-fetch-site' : 'cross-site',
'user-agent' : 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
'sec-fetch-dest': 'empty',
'sec-fetch-mode': 'cors',
'sec-fetch-site': 'cross-site',
'user-agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.0.0 Safari/537.36',
}

json_data = {
'text' : prompt,
'action' : actionType,
'parentId' : chatId,
'workspaceId' : chatId,
'messagePersona' : defaultPersona,
'model' : model
'text': prompt,
'action': actionType,
'parentId': chatId,
'workspaceId': chatId,
'messagePersona': defaultPersona,
'model': model
}

for chunk in post('https://chat-server.tenant-forefront-default.knative.chi.coreweave.com/chat',
headers=headers, json=json_data, stream=True).iter_lines():
headers=headers, json=json_data, stream=True).iter_lines():

if b'finish_reason":null' in chunk:
data = loads(chunk.decode('utf-8').split('data: ')[1])
data = loads(chunk.decode('utf-8').split('data: ')[1])
token = data['choices'][0]['delta'].get('content')

if token != None:
yield ForeFrontResponse({
'id' : chatId,
'object' : 'text_completion',
'created': int(time()),
'model' : model,
'choices': [{
'text' : token,
'index' : 0,
'logprobs' : None,
'finish_reason' : 'stop'
}],
'usage': {
'prompt_tokens' : len(prompt),
'completion_tokens' : len(token),
'total_tokens' : len(prompt) + len(token)
}
})
'id': chatId,
'object': 'text_completion',
'created': int(time()),
'model': model,
'choices': [{
'text': token,
'index': 0,
'logprobs': None,
'finish_reason': 'stop'
}],
'usage': {
'prompt_tokens': len(prompt),
'completion_tokens': len(token),
'total_tokens': len(prompt) + len(token)
}
})
25 changes: 13 additions & 12 deletions forefront/mail.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from requests import Session
from string import ascii_letters
from random import choices
from string import ascii_letters

from requests import Session


class Mail:
def __init__(self, proxies: dict = None) -> None:
Expand All @@ -23,27 +25,27 @@ def __init__(self, proxies: dict = None) -> None:
"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",
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 = {
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"]

Expand All @@ -52,4 +54,3 @@ def get_message(self, message_id: str):

def get_message_content(self, message_id: str):
return self.get_message(message_id)["text"]

37 changes: 18 additions & 19 deletions forefront/typing.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ class ForeFrontResponse:
class Completion:
class Choices:
def __init__(self, choice: dict) -> None:
self.text = choice['text']
self.content = self.text.encode()
self.index = choice['index']
self.logprobs = choice['logprobs']
self.finish_reason = choice['finish_reason']
self.text = choice['text']
self.content = self.text.encode()
self.index = choice['index']
self.logprobs = choice['logprobs']
self.finish_reason = choice['finish_reason']

def __repr__(self) -> str:
return f'''<__main__.APIResponse.Completion.Choices(\n text = {self.text.encode()},\n index = {self.index},\n logprobs = {self.logprobs},\n finish_reason = {self.finish_reason})object at 0x1337>'''

Expand All @@ -16,22 +16,21 @@ def __init__(self, choices: dict) -> None:

class Usage:
def __init__(self, usage_dict: dict) -> None:
self.prompt_tokens = usage_dict['prompt_tokens']
self.completion_tokens = usage_dict['completion_tokens']
self.total_tokens = usage_dict['total_tokens']
self.prompt_tokens = usage_dict['prompt_tokens']
self.completion_tokens = usage_dict['completion_tokens']
self.total_tokens = usage_dict['total_tokens']

def __repr__(self):
return f'''<__main__.APIResponse.Usage(\n prompt_tokens = {self.prompt_tokens},\n completion_tokens = {self.completion_tokens},\n total_tokens = {self.total_tokens})object at 0x1337>'''

def __init__(self, response_dict: dict) -> None:

self.response_dict = response_dict
self.id = response_dict['id']
self.object = response_dict['object']
self.created = response_dict['created']
self.model = response_dict['model']
self.completion = self.Completion(response_dict['choices'])
self.usage = self.Usage(response_dict['usage'])
self.response_dict = response_dict
self.id = response_dict['id']
self.object = response_dict['object']
self.created = response_dict['created']
self.model = response_dict['model']
self.completion = self.Completion(response_dict['choices'])
self.usage = self.Usage(response_dict['usage'])

def json(self) -> dict:
return self.response_dict
return self.response_dict
Loading

0 comments on commit f1594cf

Please sign in to comment.