From 8847f0a4fdb6e20887eb68f0b4c53a9321c34c2f Mon Sep 17 00:00:00 2001 From: KHELIFI Ahmed Aziz Date: Sat, 29 Apr 2023 15:51:16 +0100 Subject: fix you README --- gpt4free/you/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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}) ``` -- cgit v1.2.3 From afae71255fd626553af3ca9144055216a7456de5 Mon Sep 17 00:00:00 2001 From: Akash Mondal Date: Sat, 29 Apr 2023 20:52:29 +0530 Subject: forefront: update account creation logic * update account creation and verification as per latest forefont API * use official Mail TM library pymailtm, instead of maintaining custom API code --- gpt4free/forefront/__init__.py | 41 +++++++++++++++------------------ gpt4free/forefront/mail.py | 52 ------------------------------------------ requirements.txt | 1 + 3 files changed, 19 insertions(+), 75 deletions(-) delete mode 100644 gpt4free/forefront/mail.py diff --git a/gpt4free/forefront/__init__.py b/gpt4free/forefront/__init__.py index f0ca1a15..c5fd883b 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/requirements.txt b/requirements.txt index d30b29aa..62e92d56 100644 --- a/requirements.txt +++ b/requirements.txt @@ -11,3 +11,4 @@ fake-useragent twocaptcha https://github.com/AI-Yash/st-chat/archive/refs/pull/24/head.zip pydantic +pymailtm -- cgit v1.2.3 From b82e787d4fd4ee8be2ce69dadc3cfc590443987a Mon Sep 17 00:00:00 2001 From: "valerii@valeriis-air.(none)" Date: Sat, 29 Apr 2023 21:38:34 +0300 Subject: refactor(gpt4free/cocalc/__init__.py): Refactored init file, makes it cleaner and more robust. --- gpt4free/cocalc/__init__.py | 50 +++++++++++++++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 15 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"} -- cgit v1.2.3 From 60d4ca8e24346577d5ffe617977e3447961b8cdc Mon Sep 17 00:00:00 2001 From: "valerii@valeriis-air.(none)" Date: Sun, 30 Apr 2023 00:08:43 +0300 Subject: add(docker-compose) Added a docker-compose file --- docker-compose.yaml | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 docker-compose.yaml diff --git a/docker-compose.yaml b/docker-compose.yaml new file mode 100644 index 00000000..3afd6cdf --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,9 @@ +version: "3.9" + +services: + gpt4free: + build: + context: . + dockerfile: Dockerfile + ports: + - "8501:8501" -- cgit v1.2.3 From e34f4bab61816e2ec245edad16d03d6f225118bb Mon Sep 17 00:00:00 2001 From: "valerii@valeriis-air.(none)" Date: Sun, 30 Apr 2023 00:10:39 +0300 Subject: update(README) Added lines with docker-compose instructions --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 0445951e..b0443a1a 100644 --- a/README.md +++ b/README.md @@ -152,6 +152,10 @@ Run ``` docker run -p 8501:8501 gpt4free:latest ``` +Another way - docker-compose (no docker build/run needed) +``` +docker-compose up +``` ## ChatGPT clone > currently implementing new features and trying to scale it, please be patient it may be unstable -- cgit v1.2.3 From 656f2ff262432283cdf47ec02742837d39c582c1 Mon Sep 17 00:00:00 2001 From: "valerii@valeriis-air.(none)" Date: Sun, 30 Apr 2023 00:11:55 +0300 Subject: Update(README): Added -d flag for detached mode --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b0443a1a..3366bb31 100644 --- a/README.md +++ b/README.md @@ -154,7 +154,7 @@ docker run -p 8501:8501 gpt4free:latest ``` Another way - docker-compose (no docker build/run needed) ``` -docker-compose up +docker-compose up -d ``` ## ChatGPT clone -- cgit v1.2.3 From 27add5f4b2939e1ea2567ae7246f201701abe009 Mon Sep 17 00:00:00 2001 From: naa <44613678+naa7@users.noreply.github.com> Date: Sat, 29 Apr 2023 17:50:02 -0400 Subject: Delete unfinished/writesonic directory help deleting directory -> I am helping delete the directory of writesonic as per the takedown request. --- unfinished/writesonic/README.md | 53 ------------- unfinished/writesonic/__init__.py | 163 -------------------------------------- 2 files changed, 216 deletions(-) delete mode 100644 unfinished/writesonic/README.md delete mode 100644 unfinished/writesonic/__init__.py diff --git a/unfinished/writesonic/README.md b/unfinished/writesonic/README.md deleted file mode 100644 index a658a87c..00000000 --- a/unfinished/writesonic/README.md +++ /dev/null @@ -1,53 +0,0 @@ -### Example: `writesonic` (use like openai pypi package) - -```python -# import writesonic -import writesonic - -# create account (3-4s) -account = writesonic.Account.create(logging = True) - -# with loging: - # 2023-04-06 21:50:25 INFO __main__ -> register success : '{"id":"51aa0809-3053-44f7-922a...' (2s) - # 2023-04-06 21:50:25 INFO __main__ -> id : '51aa0809-3053-44f7-922a-2b85d8d07edf' - # 2023-04-06 21:50:25 INFO __main__ -> token : 'eyJhbGciOiJIUzI1NiIsInR5cCI6Ik...' - # 2023-04-06 21:50:28 INFO __main__ -> got key : '194158c4-d249-4be0-82c6-5049e869533c' (2s) - -# simple completion -response = writesonic.Completion.create( - api_key = account.key, - prompt = 'hello world' -) - -print(response.completion.choices[0].text) # Hello! How may I assist you today? - -# conversation - -response = writesonic.Completion.create( - api_key = account.key, - prompt = 'what is my name ?', - enable_memory = True, - history_data = [ - { - 'is_sent': True, - 'message': 'my name is Tekky' - }, - { - 'is_sent': False, - 'message': 'hello Tekky' - } - ] -) - -print(response.completion.choices[0].text) # Your name is Tekky. - -# enable internet - -response = writesonic.Completion.create( - api_key = account.key, - prompt = 'who won the quatar world cup ?', - enable_google_results = True -) - -print(response.completion.choices[0].text) # Argentina won the 2022 FIFA World Cup tournament held in Qatar ... -``` \ No newline at end of file diff --git a/unfinished/writesonic/__init__.py b/unfinished/writesonic/__init__.py deleted file mode 100644 index ce684912..00000000 --- a/unfinished/writesonic/__init__.py +++ /dev/null @@ -1,163 +0,0 @@ -from random import choice -from time import time - -from colorama import Fore, init; -from names import get_first_name, get_last_name -from requests import Session -from requests import post - -init() - - -class logger: - @staticmethod - def info(string) -> print: - import datetime - now = datetime.datetime.now() - return print( - f"{Fore.CYAN}{now.strftime('%Y-%m-%d %H:%M:%S')} {Fore.BLUE}INFO {Fore.MAGENTA}__main__ -> {Fore.RESET}{string}") - - -class SonicResponse: - 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'] - - 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>''' - - def __init__(self, choices: dict) -> None: - self.choices = [self.Choices(choice) for choice in choices] - - class Usage: - def __init__(self, usage_dict: dict) -> None: - self.prompt_tokens = usage_dict['prompt_chars'] - self.completion_tokens = usage_dict['completion_chars'] - self.total_tokens = usage_dict['total_chars'] - - 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']) - - def json(self) -> dict: - return self.response_dict - - -class Account: - session = Session() - session.headers = { - "connection": "keep-alive", - "sec-ch-ua": "\"Not_A Brand\";v=\"99\", \"Google Chrome\";v=\"109\", \"Chromium\";v=\"109\"", - "accept": "application/json, text/plain, */*", - "content-type": "application/json", - "sec-ch-ua-mobile": "?0", - "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36", - "sec-ch-ua-platform": "\"Windows\"", - "sec-fetch-site": "same-origin", - "sec-fetch-mode": "cors", - "sec-fetch-dest": "empty", - # "accept-encoding" : "gzip, deflate, br", - "accept-language": "en-GB,en-US;q=0.9,en;q=0.8", - "cookie": "" - } - - @staticmethod - def get_user(): - password = f'0opsYouGoTme@1234' - f_name = get_first_name() - l_name = get_last_name() - hosts = ['gmail.com', 'protonmail.com', 'proton.me', 'outlook.com'] - - return { - "email": f"{f_name.lower()}.{l_name.lower()}@{choice(hosts)}", - "password": password, - "confirm_password": password, - "full_name": f'{f_name} {l_name}' - } - - @staticmethod - def create(logging: bool = False): - while True: - try: - user = Account.get_user() - start = time() - response = Account.session.post("https://app.writesonic.com/api/session-login", json=user | { - "utmParams": "{}", - "visitorId": "0", - "locale": "en", - "userAgent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36", - "signInWith": "password", - "request_type": "signup", - }) - - if logging: - logger.info(f"\x1b[31mregister success\x1b[0m : '{response.text[:30]}...' ({int(time() - start)}s)") - logger.info(f"\x1b[31mid\x1b[0m : '{response.json()['id']}'") - logger.info(f"\x1b[31mtoken\x1b[0m : '{response.json()['token'][:30]}...'") - - start = time() - response = Account.session.post("https://api.writesonic.com/v1/business/set-business-active", - headers={"authorization": "Bearer " + response.json()['token']}) - key = response.json()["business"]["api_key"] - if logging: logger.info(f"\x1b[31mgot key\x1b[0m : '{key}' ({int(time() - start)}s)") - - return Account.AccountResponse(user['email'], user['password'], key) - - except Exception as e: - if logging: logger.info(f"\x1b[31merror\x1b[0m : '{e}'") - continue - - class AccountResponse: - def __init__(self, email, password, key): - self.email = email - self.password = password - self.key = key - - -class Completion: - def create( - api_key: str, - prompt: str, - enable_memory: bool = False, - enable_google_results: bool = False, - history_data: list = []) -> SonicResponse: - response = post('https://api.writesonic.com/v2/business/content/chatsonic?engine=premium', - headers={"X-API-KEY": api_key}, - json={ - "enable_memory": enable_memory, - "enable_google_results": enable_google_results, - "input_text": prompt, - "history_data": history_data}).json() - - return SonicResponse({ - 'id': f'cmpl-premium-{int(time())}', - 'object': 'text_completion', - 'created': int(time()), - 'model': 'premium', - - 'choices': [{ - 'text': response['message'], - 'index': 0, - 'logprobs': None, - 'finish_reason': 'stop' - }], - - 'usage': { - 'prompt_chars': len(prompt), - 'completion_chars': len(response['message']), - 'total_chars': len(prompt) + len(response['message']) - } - }) -- cgit v1.2.3 From c6619ffc3e3afbbc0b892e78ac080c06e8744f48 Mon Sep 17 00:00:00 2001 From: "t.me/xtekky" <98614666+xtekky@users.noreply.github.com> Date: Sun, 30 Apr 2023 12:18:28 +0100 Subject: Update README.md --- README.md | 41 ++++++++++++++++++++--------------------- 1 file changed, 20 insertions(+), 21 deletions(-) diff --git a/README.md b/README.md index 8a92c7c2..393281ff 100644 --- a/README.md +++ b/README.md @@ -19,27 +19,26 @@ Please note the following: 3. **Educational Purposes Only**: This repository and its content are provided strictly for educational purposes. By using the information and code provided, users acknowledge that they are using the APIs and models at their own risk and agree to comply with any applicable laws and regulations. ## Table of Contents - -| Section | Description | Link | Status | -| -------------------------------------------- | ---------------------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------------------- | --- | --- | -| **To do list** | List of tasks to be done | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#todo) | - | -| **Current Sites** | Current websites or platforms that can be used as APIs | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#current-sites) | - | -| **Best Sites for gpt4** | Recommended websites or platforms for gpt4 | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#best-sites) | - | -| **Streamlit GPT4Free GUI** | Web-based graphical user interface for interacting with gpt4free | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#streamlit-gpt4free-gui) | - | -| **Docker** | Instructions on how to run gpt4free in a Docker container | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#docker-instructions) | - | -| **ChatGPT clone** | A ChatGPT clone with new features and scalability | [![Link to Website](https://img.shields.io/badge/Link-Visit%20Site-blue)](https://chat.chatbot.sex/chat) | - | -| **How to install** | Instructions on how to install gpt4free | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#install) | - | -| **Legal Notice** | Legal notice or disclaimer | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#legal-notice) | - | -| **Copyright** | Copyright information | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#copyright) | - | -| **Star History** | Star History | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#star-history) | - | -| **Usage Examples** | | | | -| `theb` | Example usage for theb (gpt-3.5) | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](openai_rev/theb/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | -| `forefront` | Example usage for forefront (gpt-4) | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](gpt4free/forefront/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | | | -| `quora (poe)` | Example usage for quora | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](gpt4free/quora/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | -| `you` | Example usage for you | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](gpt4free/you/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | -| **Try it Out** | | | | -| Google Colab Jupyter Notebook | Example usage for gpt4free | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/DanielShemesh/gpt4free-colab/blob/main/gpt4free.ipynb) | - | -| replit Example (feel free to fork this repl) | Example usage for gpt4free | [![](https://img.shields.io/badge/Open%20in-Replit-1A1E27?logo=replit)](https://replit.com/@gpt4free/gpt4free-webui) | - | +| Section | Description | Link | Status | +| ------- | ----------- | ---- | ------ | +| **To do list** | List of tasks to be done | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#todo) | - | +| **Current Sites** | Current websites or platforms that can be used as APIs | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#current-sites) | - | +| **Best Sites for gpt4** | Recommended websites or platforms for gpt4 | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#best-sites) | - | +| **Streamlit GPT4Free GUI** | Web-based graphical user interface for interacting with gpt4free | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#streamlit-gpt4free-gui) | - | +| **Docker** | Instructions on how to run gpt4free in a Docker container | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#docker-instructions) | - | +| **ChatGPT clone** | A ChatGPT clone with new features and scalability | [![Link to Website](https://img.shields.io/badge/Link-Visit%20Site-blue)](https://chat.chatbot.sex/chat) | - | +| **How to install** | Instructions on how to install gpt4free | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#install) | - | +| **Legal Notice** | Legal notice or disclaimer | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#legal-notice) | - | +| **Copyright** | Copyright information | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#copyright) | - | +| **Star History** | Star History | [![Link to Section](https://img.shields.io/badge/Link-Go%20to%20Section-blue)](#star-history) | - | +| **Usage Examples** | | | | +| `theb` | Example usage for theb (gpt-3.5) | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](gpt4free/theb/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | +| `forefront` | Example usage for forefront (gpt-4) | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](gpt4free/forefront/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | || +| `quora (poe)` | Example usage for quora | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](gpt4free/quora/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | +| `you` | Example usage for you | [![Link to File](https://img.shields.io/badge/Link-Go%20to%20File-blue)](gpt4free/you/README.md) | ![Active](https://img.shields.io/badge/Active-brightgreen) | +| **Try it Out** | | | | +| Google Colab Jupyter Notebook | Example usage for gpt4free | [![Open in Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/DanielShemesh/gpt4free-colab/blob/main/gpt4free.ipynb) | - | +| replit Example (feel free to fork this repl) | Example usage for gpt4free | [![](https://img.shields.io/badge/Open%20in-Replit-1A1E27?logo=replit)](https://replit.com/@gpt4free/gpt4free-webui) | - | ## Todo -- cgit v1.2.3