File size: 2,596 Bytes
231c049 7c06e97 d648fe6 b27e104 231c049 d648fe6 b27e104 d648fe6 b27e104 d648fe6 b27e104 d648fe6 b27e104 d648fe6 b27e104 d648fe6 434b328 7c06e97 d648fe6 a6407c2 d648fe6 231c049 b27e104 231c049 b27e104 d648fe6 231c049 d648fe6 231c049 d648fe6 a6407c2 d648fe6 4af653a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
from typing import List
import gradio as gr
import base64
from src.manager.manager import GeminiManager, Mode
from enum import Enum
_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):
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,)
})
yield "", history
for messages in model_manager.run(history):
yield "", messages
with gr.Blocks(css=css, fill_width=True, fill_height=True) as demo:
model_manager = GeminiManager(
gemini_model="gemini-2.0-flash", modes=[mode for mode in Mode])
def update_model(modeIndexes: List[int]):
modes = [Mode(i+1) for i in modeIndexes]
print(f"Selected modes: {modes}")
model_manager.set_modes(modes)
with gr.Column(scale=1):
with gr.Row(scale=0):
gr.Markdown(_header_html)
model_dropdown = gr.Dropdown(
choices=[mode.name for mode in Mode],
value=model_manager.get_current_modes,
interactive=True,
type="index",
multiselect=True,
label="Select Modes",
)
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()
|