from __future__ import annotations from transformers import AutoModelForCausalLM, AutoTokenizer from PIL import Image import gradio as gr from typing import Iterable from gradio.themes.base import Base from gradio.themes.utils import colors, fonts, sizes import time # Load the model and tokenizer model_id = "vikhyatk/moondream2" revision = "2024-05-20" model = AutoModelForCausalLM.from_pretrained( model_id, trust_remote_code=True, revision=revision ) tokenizer = AutoTokenizer.from_pretrained(model_id, revision=revision) def analyze_image_direct(name, count): # This is a placeholder function. You need to implement the logic based on your model's capabilities. # For demonstration, it returns a static response. return f"This is a placeholder answer for {name} with count {count}." class Seafoam(Base): def __init__( self, *, primary_hue: colors.Color | str = colors.emerald, secondary_hue: colors.Color | str = colors.blue, neutral_hue: colors.Color | str = colors.blue, spacing_size: sizes.Size | str = sizes.spacing_md, radius_size: sizes.Size | str = sizes.radius_md, text_size: sizes.Size | str = sizes.text_lg, font: fonts.Font | str | Iterable[fonts.Font | str] = ( fonts.GoogleFont("Quicksand"), "ui-sans-serif", "sans-serif", ), font_mono: fonts.Font | str | Iterable[fonts.Font | str] = ( fonts.GoogleFont("IBM Plex Mono"), "ui-monospace", "monospace", ), ): super().__init__( primary_hue=primary_hue, secondary_hue=secondary_hue, neutral_hue=neutral_hue, spacing_size=spacing_size, radius_size=radius_size, text_size=text_size, font=font, font_mono=font_mono, ) super().set( body_background_fill="repeating-linear-gradient(45deg, *primary_200, *primary_200 10px, *primary_50 10px, *primary_50 20px)", body_background_fill_dark="repeating-linear-gradient(45deg, *primary_800, *primary_800 10px, *primary_900 10px, *primary_900 20px)", button_primary_background_fill="linear-gradient(90deg, *primary_300, *secondary_400)", button_primary_background_fill_hover="linear-gradient(90deg, *primary_200, *secondary_300)", button_primary_text_color="white", button_primary_background_fill_dark="linear-gradient(90deg, *primary_600, *secondary_800)", slider_color="*secondary_300", slider_color_dark="*secondary_600", block_title_text_weight="600", block_border_width="3px", block_shadow="*shadow_drop_lg", button_shadow="*shadow_drop_lg", button_large_padding="32px", ) seafoam = Seafoam() with gr.Blocks(theme=seafoam) as demo: with gr.Row(): name_input = gr.Textbox(label="Name", placeholder="Enter your name here...") with gr.Row(): count_slider = gr.Slider(label="Count", minimum=0, maximum=100, step=1, value=0) with gr.Row(): submit_button = gr.Button("Submit") clear_button = gr.Button("Clear") output = gr.Textbox(label="Output") submit_button.click(fn=analyze_image_direct, inputs=[name_input, count_slider], outputs=output) clear_button.click(fn=lambda: ("", 0, ""), inputs=None, outputs=[name_input, count_slider, output]) demo.launch()