| import gradio as gr | |
| from local_model import query_local | |
| from remote_model import query_remote, client | |
| import time | |
| def query(image, question, model_name): | |
| if model_name == "Local": | |
| return query_local(image, question) | |
| elif model_name == "Remote": | |
| return query_remote(image, question, client) | |
| return "No model selected" | |
| custom_css = """ | |
| .output-card { | |
| background-color: #f9fafb; | |
| border: 10px solid #e5e7eb; | |
| border-radius: 8px; | |
| padding: 40px; | |
| } | |
| """ | |
| with gr.Blocks(theme=gr.themes.Soft(), title="Qwen2-VL Analyst") as app: | |
| start_time = time.time() | |
| gr.Markdown( | |
| r""" | |
| ¯\_(ツ)_/¯ Intelligence: Upload an image and ask a question | |
| """ | |
| ) | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| img_input = gr.Image(type="pil", label="Upload Image", height=400) | |
| q_input = gr.Textbox(label="Question", lines=2) | |
| with gr.Row(): | |
| clear_btn = gr.Button("Clear", variant="secondary") | |
| submit_btn = gr.Button("Analyze Image", variant="primary") | |
| with gr.Column(scale=1): | |
| with gr.Row(): | |
| model_dropdown = gr.Dropdown( | |
| label="Select Model", choices=["Local", "Remote"], value="Local" | |
| ) | |
| gr.Markdown("Model Analysis:") | |
| with gr.Group(elem_classes="output-card"): | |
| output_box = gr.Markdown(value="Results...", line_breaks=True) | |
| submit_btn.click( | |
| fn=query, inputs=[img_input, q_input, model_dropdown], outputs=output_box | |
| ) | |
| q_input.submit( | |
| fn=query, inputs=[img_input, q_input, model_dropdown], outputs=output_box | |
| ) | |
| def clear_inputs(): | |
| return None, "", "" | |
| clear_btn.click( | |
| fn=clear_inputs, inputs=[], outputs=[img_input, q_input, output_box] | |
| ) | |
| app.launch() | |