i135e1fi414i41tqe / webui.py
serhan's picture
Update webui.py
9bb422f
import gradio as gr
import xxhash
from gradio.components import _Keywords
from ai import AI
from config import Config
from contents import *
from storage import Storage
def webui(cfg: Config):
"""Run the web UI."""
Webui(cfg).run()
class Webui:
def __init__(self, cfg: Config):
self.cfg = cfg
self.ai = AI(cfg)
self.storage = Storage.create_storage(self.cfg) # Initialize storage here
def _save_to_storage(self, contents, hash_id):
print(f"Saving to storage {hash_id}")
print(f"Contents: \n{contents}")
self.storage = Storage.create_storage(self.cfg)
if self.storage.been_indexed(hash_id):
return 0
else:
embeddings, tokens = self.ai.create_embeddings(contents)
self.storage.add_all(embeddings, hash_id)
return tokens
def _get_hash_id(self, contents):
return xxhash.xxh3_128_hexdigest('\n'.join(contents))
def run(self):
with gr.Blocks(theme=gr.themes.Monochrome(), css="footer {visibility: hidden}") as demo:
hash_id_state = gr.State('dd771cb6c4718ace4c4c596f4792cfdd') # Initialize hash_id_state to 'dd771cb6c4718ace4c4c596f4792cfdd'
chat_page = gr.Column(visible=True) # Set chat_page to visible by default
with chat_page:
with gr.Row():
with gr.Column():
chatbot = gr.Chatbot(label="Kanunla Konuş")
msg = gr.Textbox(label="4857 Sayılı İş Kanunu ile ilgili tüm sorularınızı bekliyoruz.")
submit_box = gr.Button("Kanuna Sor", variant="primary")
def respond(message, chat_history, hash_id):
kw = self.ai.get_keywords(message)
if len(kw) == 0 or hash_id is None:
return "", chat_history
_, kw_ebd = self.ai.create_embedding(kw)
ctx = self.storage.get_texts(kw_ebd, hash_id)
print(f"Context: \n{ctx}")
bot_message = self.ai.completion(message, ctx)
chat_history.append((message, bot_message))
return "", chat_history, \
def reset():
return {
chat_page: gr.update(visible=True),
chatbot: gr.update(value=[]),
msg: gr.update(value=""),
hash_id_state: 'dd771cb6c4718ace4c4c596f4792cfdd',
}
msg.submit(respond, [msg, chatbot, hash_id_state], [msg, chatbot])
submit_box.click(respond, [msg, chatbot, hash_id_state], [msg, chatbot])
demo.title = "Kanuna Sor"
demo.launch(server_port=self.cfg.webui_port, server_name=self.cfg.webui_host, show_api=False)