summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--README.md1
-rw-r--r--gpt4free/italygpt/README.md18
-rw-r--r--gpt4free/italygpt/__init__.py28
3 files changed, 47 insertions, 0 deletions
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 <a name="best-sites"></a>
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