Merge pull request #287 from valerii-chirkov/main
refactor(gpt4free/cocalc/__init__.py): Refactored init file
This commit is contained in:
commit
dfc9e01889
3 changed files with 48 additions and 15 deletions
|
@ -101,6 +101,10 @@ Run
|
||||||
```
|
```
|
||||||
docker run -p 8501:8501 gpt4free:latest
|
docker run -p 8501:8501 gpt4free:latest
|
||||||
```
|
```
|
||||||
|
Another way - docker-compose (no docker build/run needed)
|
||||||
|
```
|
||||||
|
docker-compose up -d
|
||||||
|
```
|
||||||
|
|
||||||
## Deploy using docker-compose
|
## Deploy using docker-compose
|
||||||
|
|
||||||
|
|
9
docker-compose.yaml
Normal file
9
docker-compose.yaml
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
version: "3.9"
|
||||||
|
|
||||||
|
services:
|
||||||
|
gpt4free:
|
||||||
|
build:
|
||||||
|
context: .
|
||||||
|
dockerfile: Dockerfile
|
||||||
|
ports:
|
||||||
|
- "8501:8501"
|
|
@ -9,29 +9,52 @@ class CoCalcResponse(BaseModel):
|
||||||
|
|
||||||
|
|
||||||
class Completion:
|
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
|
@staticmethod
|
||||||
def create(prompt: str, cookie_input: str) -> CoCalcResponse:
|
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
|
# Initialize a session with custom headers
|
||||||
session = Completion._initialize_session(cookie_input)
|
session = Completion._initialize_session(cookie_input)
|
||||||
|
|
||||||
# Set the data that will be submitted
|
# 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
|
try:
|
||||||
return Completion._submit_request(session, payload)
|
# 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
|
@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."""
|
"""Initialize a session with custom headers for the request."""
|
||||||
|
|
||||||
session = requests.Session()
|
session = requests.Session()
|
||||||
headers = {
|
headers = {
|
||||||
'Accept': '*/*',
|
"Accept": "*/*",
|
||||||
'Accept-Language': 'en-US,en;q=0.5',
|
"Accept-Language": "en-US,en;q=0.5",
|
||||||
'Origin': 'https://cocalc.com',
|
"Origin": "https://cocalc.com",
|
||||||
'Referer': 'https://cocalc.com/api/v2/openai/chatgpt',
|
"Referer": "https://cocalc.com/api/v2/openai/chatgpt",
|
||||||
'Cookie': conversation_cookie,
|
"Cookie": conversation_cookie,
|
||||||
'User-Agent': UserAgent().random,
|
"User-Agent": UserAgent().random,
|
||||||
}
|
}
|
||||||
session.headers.update(headers)
|
session.headers.update(headers)
|
||||||
|
|
||||||
|
@ -39,9 +62,6 @@ class Completion:
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def _create_payload(prompt: str, system_prompt: str) -> dict:
|
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
|
return {"input": prompt, "system": system_prompt, "tag": "next:index"}
|
||||||
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'])
|
|
||||||
|
|
Loading…
Reference in a new issue