From 4f55dd9dd6cde9b491bcabb44a56eb39889e4a70 Mon Sep 17 00:00:00 2001 From: Mark Hoekveen Date: Sat, 18 Mar 2023 17:48:36 +0100 Subject: [PATCH] 10% kans op nieuwe GPT --- Chatbot.py | 29 +++++++++++++++++++++++++++-- 1 file changed, 27 insertions(+), 2 deletions(-) diff --git a/Chatbot.py b/Chatbot.py index dc03b7b..caee4d3 100644 --- a/Chatbot.py +++ b/Chatbot.py @@ -2,6 +2,8 @@ import discord from discord.ext import commands import numpy as np import random +import requests +import asyncio from datetime import datetime import re @@ -283,11 +285,34 @@ class Chatbot(commands.Cog): async def respondToMessage(self, message): wordsToRespondTo = message.content.strip().split() - response = self.getResponseForMessage(wordsToRespondTo) + response = await self.getResponseForMessage(wordsToRespondTo) await message.channel.send(response) #Gets a response - def getResponseForMessage(self, wordsToRespondTo): + async def getResponseForMessage(self, wordsToRespondTo): + if random.random() > 0.9: + try: + # GPT request moet echt even in een non-blocking executortje, anders loopt de hele boel vast + return await self.bot.loop.run_in_executor(None,self.getResponseForMessageOnline, wordsToRespondTo) + except: + pass + else: + return self.getResponseForMessageLocal(wordsToRespondTo) + + def translateTo(self, language, text): + req = requests.post('http://gpt.hoekveen.net/translate', json={"text": text, "source_lang": "auto", "target_lang": language}) + print(req.json()) + return req.json()["translations"][0]["text"] + + def getResponseForMessageOnline(self, wordsToRespondTo): + text = self.translateTo("en", " ".join(wordsToRespondTo)) + req = requests.post('http://gpt.hoekveen.net/complete', json={"prompt": text, "max_tokens": 60}) + print(req.json()) + respons = req.json()["text"] + respons = respons[0:respons.rfind(".")+1] # Alles weg na de laatste punt + return self.translateTo("nl", respons) + + def getResponseForMessageLocal(self, wordsToRespondTo): MAX_N_WORDS = 100 #Don't use more words than this