From b82e787d4fd4ee8be2ce69dadc3cfc590443987a Mon Sep 17 00:00:00 2001 From: "valerii@valeriis-air.(none)" Date: Sat, 29 Apr 2023 21:38:34 +0300 Subject: [PATCH 1/4] 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 372f29a..e122051 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"} From 60d4ca8e24346577d5ffe617977e3447961b8cdc Mon Sep 17 00:00:00 2001 From: "valerii@valeriis-air.(none)" Date: Sun, 30 Apr 2023 00:08:43 +0300 Subject: [PATCH 2/4] 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 0000000..3afd6cd --- /dev/null +++ b/docker-compose.yaml @@ -0,0 +1,9 @@ +version: "3.9" + +services: + gpt4free: + build: + context: . + dockerfile: Dockerfile + ports: + - "8501:8501" From e34f4bab61816e2ec245edad16d03d6f225118bb Mon Sep 17 00:00:00 2001 From: "valerii@valeriis-air.(none)" Date: Sun, 30 Apr 2023 00:10:39 +0300 Subject: [PATCH 3/4] 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 0445951..b0443a1 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 From 656f2ff262432283cdf47ec02742837d39c582c1 Mon Sep 17 00:00:00 2001 From: "valerii@valeriis-air.(none)" Date: Sun, 30 Apr 2023 00:11:55 +0300 Subject: [PATCH 4/4] 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 b0443a1..3366bb3 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