From 611a565092e5ca22d76f6d2c9481a2f89031ea2f Mon Sep 17 00:00:00 2001 From: Hexye <65314629+HexyeDEV@users.noreply.github.com> Date: Mon, 1 May 2023 19:24:01 +0200 Subject: add italygpt.it --- README.md | 1 + gpt4free/italygpt/README.md | 18 ++++++++++++++++++ gpt4free/italygpt/__init__.py | 28 ++++++++++++++++++++++++++++ 3 files changed, 47 insertions(+) create mode 100644 gpt4free/italygpt/README.md create mode 100644 gpt4free/italygpt/__init__.py diff --git a/README.md b/README.md index 9fd505f2..42f2e007 100644 --- a/README.md +++ b/README.md @@ -87,6 +87,7 @@ Just API's from some language model sites. | [bard.google.com](https://bard.google.com) | custom / search | | [bing.com/chat](https://bing.com/chat) | GPT-4/3.5 | | [chat.forefront.ai/](https://chat.forefront.ai/) | GPT-4/3.5 | +| [italygpt.it](https://italygpt.it) | GPT-3.5 | ## Best sites diff --git a/gpt4free/italygpt/README.md b/gpt4free/italygpt/README.md new file mode 100644 index 00000000..984eff3a --- /dev/null +++ b/gpt4free/italygpt/README.md @@ -0,0 +1,18 @@ +### Example: `italygpt` + +```python +# create an instance +from gpt4free import italygpt +italygpt = italygpt.Completion() + +# initialize api +italygpt.init() + +# get an answer +italygpt.create(prompt="What is the meaning of life?") +print(italygpt.answer) # html formatted + +# keep the old conversation +italygpt.create(prompt="Are you a human?", messages=italygpt.messages) +print(italygpt.answer) +``` \ No newline at end of file diff --git a/gpt4free/italygpt/__init__.py b/gpt4free/italygpt/__init__.py new file mode 100644 index 00000000..27a965f1 --- /dev/null +++ b/gpt4free/italygpt/__init__.py @@ -0,0 +1,28 @@ +import requests, time, ast, json +from bs4 import BeautifulSoup +from hashlib import sha256 + +class Completion: + # answer is returned with html formatting + next_id = None + messages = [] + answer = None + + def init(self): + r = requests.get("https://italygpt.it") + soup = BeautifulSoup(r.text, "html.parser") + self.next_id = soup.find("input", {"name": "next_id"})["value"] + + def create(self, prompt: str, messages: list = []): + try: + r = requests.get("https://italygpt.it/question", params={"hash": sha256(self.next_id.encode()).hexdigest(), "prompt": prompt, "raw_messages": json.dumps(messages)}).json() + except: + r = requests.get("https://italygpt.it/question", params={"hash": sha256(self.next_id.encode()).hexdigest(), "prompt": prompt, "raw_messages": json.dumps(messages)}).text + if "too many requests" in r.lower(): + # rate limit is 17 requests per 1 minute + time.sleep(20) + return self.create(prompt, messages) + self.next_id = r["next_id"] + self.messages = ast.literal_eval(r["raw_messages"]) + self.answer = r["response"] + return self \ No newline at end of file -- cgit v1.2.3