hashiruAI / main.py
helloparthshah's picture
Files are working!
a6407c2
raw
history blame
2.58 kB
import gradio as gr
import base64
from src.manager.manager import GeminiManager
_logo_bytes = open("HASHIRU_LOGO.png", "rb").read()
_logo_b64 = base64.b64encode(_logo_bytes).decode()
_header_html = f"""
<div style="
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
width: 30%;
">
<img src="data:image/png;base64,{_logo_b64}" width="40" class="logo"/>
<h1>
HASHIRU AI
</h1>
</div>
"""
css = """
.logo { margin-right: 20px; }
"""
def run_model(message, history):
print(f"User: {message}")
print(f"History: {history}")
if 'text' in message:
history.append({
"role": "user",
"content": message['text']
})
if 'files' in message:
for file in message['files']:
history.append({
"role": "user",
"content": (file,)
})
print(f"History: {history}")
yield "", history
for messages in model_manager.run(history):
yield "", messages
def update_model(model_name):
print(f"Model changed to: {model_name}")
pass
with gr.Blocks(css=css, fill_width=True, fill_height=True) as demo:
model_manager = GeminiManager(gemini_model="gemini-2.0-flash")
with gr.Column(scale=1):
with gr.Row(scale=0):
gr.Markdown(_header_html)
model_dropdown = gr.Dropdown(
choices=[
"HASHIRU",
"Static-HASHIRU",
"Cloud-Only HASHIRU",
"Local-Only HASHIRU",
"No-Economy HASHIRU",
],
value="HASHIRU",
interactive=True,
)
model_dropdown.change(
fn=update_model, inputs=model_dropdown, outputs=[])
with gr.Row(scale=1):
chatbot = gr.Chatbot(
avatar_images=("HASHIRU_2.png", "HASHIRU.png"),
type="messages",
show_copy_button=True,
editable="user",
scale=1,
render_markdown=True,
placeholder="Type your message here...",
)
gr.ChatInterface(fn=run_model,
type="messages",
chatbot=chatbot,
additional_outputs=[chatbot],
save_history=True,
editable=True,
multimodal=True,)
if __name__ == "__main__":
demo.launch()