summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorvalerii@valeriis-air.(none) <valery.chirkov99@gmail.com>2023-04-29 20:38:34 +0200
committervalerii@valeriis-air.(none) <valery.chirkov99@gmail.com>2023-04-29 20:38:34 +0200
commitb82e787d4fd4ee8be2ce69dadc3cfc590443987a (patch)
treeb03b7362f4f338fd709810bfb47e5ea2e4223b84
parentUpdate README.md (diff)
downloadgpt4free-b82e787d4fd4ee8be2ce69dadc3cfc590443987a.tar
gpt4free-b82e787d4fd4ee8be2ce69dadc3cfc590443987a.tar.gz
gpt4free-b82e787d4fd4ee8be2ce69dadc3cfc590443987a.tar.bz2
gpt4free-b82e787d4fd4ee8be2ce69dadc3cfc590443987a.tar.lz
gpt4free-b82e787d4fd4ee8be2ce69dadc3cfc590443987a.tar.xz
gpt4free-b82e787d4fd4ee8be2ce69dadc3cfc590443987a.tar.zst
gpt4free-b82e787d4fd4ee8be2ce69dadc3cfc590443987a.zip
-rw-r--r--gpt4free/cocalc/__init__.py50
1 files 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"}