import gradio as gr from models import generate_image, MODEL_ID from config import APPLE_TENCENT_THEME def generate_image_with_auth(prompt: str, profile: gr.OAuthProfile | None): """ Wrapper function that checks if user is logged in before generating image. """ if profile is None: raise gr.Error("Click Sign in with Hugging Face button to use this app for free") # User is logged in, proceed with image generation return generate_image(prompt) def create_ui(): with gr.Blocks(title=f"Tencent HunyuanImage-3.0 Demo", theme=APPLE_TENCENT_THEME) as demo: gr.HTML( f"
" f"

Tencent {MODEL_ID.split('/')[-1]}

" f"

Generate images using Tencent's state-of-the-art model hosted by FAL AI.

" f"

⚠️ You must Sign in with Hugging Face using the button to use this app.

" f"Built with anycoder" f"
" ) # Add login button - required for OAuth gr.LoginButton() with gr.Row(): with gr.Column(scale=1): prompt_input = gr.Textbox( label="Prompt", placeholder="e.g., A detailed watercolor painting of a small red fox sleeping on a pile of autumn leaves.", lines=4 ) generate_btn = gr.Button("🎨 Generate Image", variant="primary") with gr.Column(scale=1): output_image = gr.Image( label="Generated Image", height=512, width=512, interactive=False, show_download_button=True ) # Set up the event listener - note the function now takes OAuthProfile generate_btn.click( fn=generate_image_with_auth, inputs=[prompt_input], outputs=[output_image], queue=False, api_name=False, show_api=False, ) # Example usage guidance with queue features disabled gr.Examples( examples=[ "A detailed watercolor painting of a small red fox sleeping on a pile of autumn leaves." ], inputs=prompt_input, outputs=output_image, fn=generate_image, # Examples use the original function cache_examples=False, api_name=False, show_api=False, ) return demo if __name__ == "__main__": app = create_ui() # Launch without special auth parameters # OAuth is enabled via Space metadata (hf_oauth: true in README.md) app.launch( show_api=False, enable_monitoring=False, quiet=True, )