hebrew-dentsit / app.py
borodache's picture
Upload app.py
7f4ca31 verified
raw
history blame
3.28 kB
import gradio as gr
import time
from rag_agent import RAGAgent
rag_agent = RAGAgent()
class ChatBot:
def __init__(self, rag_agent):
self.message_history = []
self.rag_agent = rag_agent
def get_response(self, message):
return self.rag_agent.get_response(message)
def chat(self, message, history):
time.sleep(1)
bot_response = self.get_response(message)
self.message_history.append((message, bot_response))
return bot_response
def create_chat_interface(rag_agent=rag_agent):
chatbot = ChatBot(rag_agent=rag_agent)
custom_css = """
#chatbot {
direction: rtl;
height: 400px;
}
.message {
font-size: 16px;
text-align: right;
}
.message-wrap {
direction: rtl !important;
}
.message-wrap > div {
direction: rtl !important;
text-align: right !important;
}
.input-box {
direction: rtl !important;
text-align: right !important;
}
.container {
direction: rtl;
}
.contain {
direction: rtl !important;
}
.bubble {
direction: rtl !important;
text-align: right !important;
}
textarea, input {
direction: rtl !important;
text-align: right !important;
}
.user-message, .bot-message {
direction: rtl !important;
text-align: right !important;
}
"""
with gr.Blocks(css=custom_css) as interface:
with gr.Column(elem_classes="container"):
gr.Markdown("ืจื•ืคื ืฉื™ื ื™ื™ื ืืœืงื˜ืจื•ื ื™", rtl=True)
chatbot_component = gr.Chatbot(
[],
elem_id="chatbot",
height=400,
rtl=True,
elem_classes="message-wrap"
)
with gr.Row():
submit_btn = gr.Button("ืฉืœื—", variant="primary")
txt = gr.Textbox(
show_label=False,
placeholder="ื”ืงืœื“ ืืช ื”ื”ื•ื“ืขื” ืฉืœืš ื›ืืŸ...",
container=False,
elem_classes="input-box",
rtl=True
)
clear_btn = gr.Button("ื ืงื” ืฆ'ืื˜")
def user_message(user_message, history):
return "", history + [[user_message, None]]
def bot_message(history):
user_message = history[-1][0]
bot_response = chatbot.chat(user_message, history)
history[-1][1] = bot_response
return history
txt_msg = txt.submit(user_message, [txt, chatbot_component], [txt, chatbot_component], queue=False).then(
bot_message, chatbot_component, chatbot_component
)
submit_btn.click(user_message, [txt, chatbot_component], [txt, chatbot_component], queue=False).then(
bot_message, chatbot_component, chatbot_component
)
clear_btn.click(lambda: None, None, chatbot_component, queue=False)
return interface
# Launch the interface
chat_interface = create_chat_interface(rag_agent=rag_agent)
chat_interface.launch(share=True)