Merge pull request #441 from hamza1312/main

Forefront fixed
This commit is contained in:
t.me/xtekky 2023-05-04 19:13:08 +01:00 committed by GitHub
commit 4a26913b6e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 32 additions and 55 deletions

4
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,4 @@
{
"editor.tabCompletion": "on",
"diffEditor.codeLens": true
}

View File

@ -1,49 +1,27 @@
import os
import pickle
from json import loads
from xtempmail import Email
from re import findall
from typing import Optional, Generator
from faker import Faker
from time import time, sleep
from typing import Generator, Optional
from uuid import uuid4
from fake_useragent import UserAgent
from pymailtm import MailTm, Message
from requests import post
from tls_client import Session
from .typing import ForeFrontResponse
class Account:
COOKIES_FILE_NAME = 'cookies.pickle'
@staticmethod
def login(proxy: Optional[str] = None, logging: bool = False) -> str:
if not os.path.isfile(Account.COOKIES_FILE_NAME):
return Account.create(proxy, logging)
with open(Account.COOKIES_FILE_NAME, 'rb') as f:
cookies = pickle.load(f)
proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else False
client = Session(client_identifier='chrome110')
client.proxies = proxies
client.cookies.update(cookies)
if Account.is_cookie_enabled(client):
response = client.get('https://clerk.forefront.ai/v1/client?_clerk_js_version=4.38.4')
return response.json()['response']['sessions'][0]['last_active_token']['jwt']
else:
return Account.create(proxy, logging)
@staticmethod
def create(proxy: Optional[str] = None, logging: bool = False, save_cookies: bool = False) -> str:
def create(proxy: Optional[str] = None, logging: bool = False):
proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else False
faker = Faker()
name = (faker.name().replace(' ', '_')).lower()
start = time()
mail_client = MailTm().get_account()
mail_address = mail_client.address
mail_client = Email(name=name)
mail_address = mail_client.email
client = Session(client_identifier='chrome110')
client.proxies = proxies
@ -66,7 +44,10 @@ class Account:
response = client.post(
f'https://clerk.forefront.ai/v1/client/sign_ups/{trace_token}/prepare_verification?_clerk_js_version=4.38.4',
data={'strategy': 'email_link', 'redirect_url': 'https://accounts.forefront.ai/sign-up/verify'},
data={
'strategy': 'email_link',
'redirect_url': 'https://accounts.forefront.ai/sign-up/verify'
},
)
if logging:
@ -74,31 +55,23 @@ class Account:
if 'sign_up_attempt' not in response.text:
return 'Failed to create account!'
while True:
sleep(1)
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]
verification_url = None
new_message = mail_client.get_new_message(5)
for msg in new_message:
verification_url = findall(r'https:\/\/clerk\.forefront\.ai\/v1\/verify\?token=\w.+', msg.text)[0]
if verification_url:
break
if verification_url is None or not verification_url:
raise RuntimeError('Error while obtaining verfication URL!')
if logging:
print(verification_url)
response = client.get(verification_url)
response = client.get('https://clerk.forefront.ai/v1/client?_clerk_js_version=4.38.4')
token = response.json()['response']['sessions'][0]['last_active_token']['jwt']
if save_cookies:
with open(Account.COOKIES_FILE_NAME, 'wb') as f:
pickle.dump(client.cookies, f)
with open('accounts.txt', 'a') as f:
f.write(f'{mail_address}:{token}\n')
@ -107,11 +80,6 @@ class Account:
return token
@staticmethod
def is_cookie_enabled(client: Session) -> bool:
response = client.get('https://chat.forefront.ai/')
return 'window.startClerk' in response.text
class StreamingCompletion:
@staticmethod
@ -122,14 +90,14 @@ class StreamingCompletion:
action_type='new',
default_persona='607e41fe-95be-497e-8e97-010a59b2e2c0', # default
model='gpt-4',
proxy=None,
proxy=None
) -> Generator[ForeFrontResponse, None, None]:
if not token:
raise Exception('Token is required!')
if not chat_id:
chat_id = str(uuid4())
proxies = {'http': 'http://' + proxy, 'https': 'http://' + proxy} if proxy else None
proxies = { 'http': 'http://' + proxy, 'https': 'http://' + proxy } if proxy else None
headers = {
'authority': 'chat-server.tenant-forefront-default.knative.chi.coreweave.com',
@ -197,7 +165,7 @@ class Completion:
action_type='new',
default_persona='607e41fe-95be-497e-8e97-010a59b2e2c0', # default
model='gpt-4',
proxy=None,
proxy=None
) -> ForeFrontResponse:
text = ''
final_response = None
@ -208,7 +176,7 @@ class Completion:
action_type=action_type,
default_persona=default_persona,
model=model,
proxy=proxy,
proxy=proxy
):
if response:
final_response = response
@ -220,3 +188,4 @@ class Completion:
raise Exception('Unable to get the response, Please try again')
return final_response

4
gpt4free/test.py Normal file
View File

@ -0,0 +1,4 @@
import forefront
token = forefront.Account.create()
response = forefront.Completion.create(token=token, prompt='Hello!')
print(response)