providers: wip add providers

This commit is contained in:
0xMRTT 2023-04-29 17:30:07 +02:00
parent 8abbc26560
commit 781aed2132
5 changed files with 115 additions and 0 deletions

0
src/provider/__init__.py Normal file
View File

40
src/provider/baichat.py Normal file
View File

@ -0,0 +1,40 @@
from .base import BaseProvider
from baichat_py import BaiChat
class BaiChatProvider:
def __init__(self, win, app, *args, **kwargs):
super().__init__(win, app, *args, **kwargs)
self.chat = BaiChat(sync=True)
def ask(self, prompt):
try:
response = self.chat.sync_ask(self.prompt)
except KeyError:
self.win.banner.set_revealed(False)
return ""
except socket.gaierror:
self.win.banner.set_revealed(True)
return ""
else:
self.win.banner.set_revealed(False)
self.win.bot_text_view.get_buffer().set_text(response)
return response
@property
def require_api_key(self):
return False
def preferences(self):
self.no_preferences()
def about(self):
about = Adw.AboutWindow(
transient_for=self.props.active_window,
application_name="Bai Chat",
developer_name="Theb.ai",
developers=["0xMRTT https://github.com/0xMRTT"],
license_type=Gtk.License.GPL_3_0,
version=version,
copyright="© 2023 0xMRTT",
)

25
src/provider/base.py Normal file
View File

@ -0,0 +1,25 @@
class BavarderProvider:
def __init__(self, win, app, *args, **kwargs):
self.win = win
self.banner = win.banner
self.bot_text_view = win.bot_text_view
self.app = app
self.chat = None
super().__init__(*args, **kwargs)
def ask(self, prompt):
raise NotImplementedError()
@property
def require_api_key(self):
raise NotImplementedError()
def preferences(self):
raise NotImplementedError()
def about(self):
raise NotImplementedError()
def no_preferences(self):
pass

View File

@ -0,0 +1,50 @@
from .base import BaseProvider
from hgchat import HGChat
from gi.repository import Gtk, Adw
class HuggingChatProvider(BaseProvider):
def __init__(self, win, app, *args, **kwargs):
super().__init__(win, app, *args, **kwargs)
self.chat = HGChat()
def ask(self, prompt):
try:
response = self.chat.ask(self.prompt)
except KeyError:
self.win.banner.set_revealed(False)
return ""
except socket.gaierror:
self.win.banner.set_revealed(True)
return ""
else:
self.win.banner.set_revealed(False)
r = ""
for i in response:
char = i["token"]["text"]
if char == "</s>":
r += "\n"
else:
r += char
self.win.bot_text_view.get_buffer().set_text(r)
return r
@property
def require_api_key(self):
return False
def preferences(self):
self.no_preferences()
def about(self):
about = Adw.AboutWindow(
transient_for=self.props.active_window,
application_name="Hugging Chat",
developer_name="Hugging Face",
developers=["0xMRTT https://github.com/0xMRTT"],
license_type=Gtk.License.GPL_3_0,
version=version,
copyright="© 2023 0xMRTT",
)

0
src/provider/meson.build Normal file
View File