Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/xtekky/gpt4free
Browse files Browse the repository at this point in the history
  • Loading branch information
xtekky committed Apr 30, 2023
2 parents e02094d + 7039575 commit 21c82d8
Show file tree
Hide file tree
Showing 7 changed files with 91 additions and 115 deletions.
45 changes: 24 additions & 21 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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 <a name="todo"></a>

Expand Down Expand Up @@ -102,6 +101,10 @@ Run
```
docker run -p 8501:8501 gpt4free:latest
```
Another way - docker-compose (no docker build/run needed)
```
docker-compose up -d
```

## Deploy using docker-compose

Expand Down
9 changes: 9 additions & 0 deletions docker-compose.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
version: "3.9"

services:
gpt4free:
build:
context: .
dockerfile: Dockerfile
ports:
- "8501:8501"
50 changes: 35 additions & 15 deletions gpt4free/cocalc/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,39 +9,59 @@ 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)

return session

@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"}
41 changes: 18 additions & 23 deletions gpt4free/forefront/__init__.py
Original file line number Diff line number Diff line change
@@ -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


Expand All @@ -19,11 +19,8 @@ def create(proxy: Optional[str] = None, logging: bool = False):

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
Expand All @@ -33,7 +30,7 @@ def create(proxy: Optional[str] = None, logging: bool = False):
}

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},
)

Expand All @@ -45,9 +42,10 @@ def create(proxy: Optional[str] = None, logging: bool = False):
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'
},
)

Expand All @@ -59,26 +57,23 @@ def create(proxy: Optional[str] = None, logging: bool = False):

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')
Expand Down
52 changes: 0 additions & 52 deletions gpt4free/forefront/mail.py

This file was deleted.

6 changes: 3 additions & 3 deletions gpt4free/you/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ response = you.Completion.create(
detailed=True,
include_links=True, )

print(response)
print(response.dict())

# {
# "response": "...",
Expand All @@ -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})
```
3 changes: 2 additions & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,5 @@ selenium
fake-useragent
twocaptcha
https://github.com/AI-Yash/st-chat/archive/refs/pull/24/head.zip
pydantic
pydantic
pymailtm

0 comments on commit 21c82d8

Please sign in to comment.