Spaces:
Runtime error
Runtime error
| import gradio as gr | |
| import os | |
| from huggingface_hub import login | |
| import requests | |
| import base64 | |
| from PIL import Image | |
| import io | |
| # Login to Hugging Face | |
| if os.getenv("HF_TOKEN"): | |
| login(token=os.getenv("HF_TOKEN")) | |
| def generate_image_mlx(prompt, negative_prompt, num_inference_steps, guidance_scale, width, height, seed): | |
| """Generate image using MLX via Hugging Face Inference API""" | |
| try: | |
| print(f"Generating image with prompt: {prompt}") | |
| # Use Hugging Face Inference API with MLX | |
| api_url = "https://api-inference.huggingface.co/models/stabilityai/stable-diffusion-xl-base-1.0" | |
| headers = {"Authorization": f"Bearer {os.getenv('HF_TOKEN')}"} | |
| payload = { | |
| "inputs": prompt, | |
| "parameters": { | |
| "negative_prompt": negative_prompt, | |
| "num_inference_steps": num_inference_steps, | |
| "guidance_scale": guidance_scale, | |
| "width": width, | |
| "height": height, | |
| "seed": seed if seed else None | |
| } | |
| } | |
| response = requests.post(api_url, headers=headers, json=payload) | |
| if response.status_code == 200: | |
| # Convert response to PIL Image | |
| image = Image.open(io.BytesIO(response.content)) | |
| print("Image generated successfully with MLX!") | |
| return image | |
| else: | |
| print(f"API request failed: {response.status_code} - {response.text}") | |
| return None | |
| except Exception as e: | |
| print(f"Error generating image: {str(e)}") | |
| return None | |
| # Create Gradio interface | |
| with gr.Blocks(title="Silicon Photonics Image Generator") as demo: | |
| gr.Markdown("# π¬ Silicon Photonics Image Generator") | |
| gr.Markdown("Generate technical diagrams and visualizations for silicon photonics using MLX-powered inference.") | |
| gr.Markdown("**π Powered by MLX for ultra-fast Apple Silicon performance!**") | |
| with gr.Row(): | |
| with gr.Column(): | |
| prompt = gr.Textbox( | |
| label="Prompt", | |
| value="A detailed technical diagram of a silicon waveguide showing light propagation", | |
| lines=3 | |
| ) | |
| negative_prompt = gr.Textbox( | |
| label="Negative Prompt", | |
| value="blurry, low quality, cartoon, artistic, hand-drawn, sketchy, unprofessional, low resolution", | |
| lines=2 | |
| ) | |
| with gr.Row(): | |
| num_inference_steps = gr.Slider(1, 50, value=20, label="Inference Steps") | |
| guidance_scale = gr.Slider(1.0, 20.0, value=7.0, label="Guidance Scale") | |
| with gr.Row(): | |
| width = gr.Slider(512, 1024, value=1024, step=64, label="Width") | |
| height = gr.Slider(512, 1024, value=1024, step=64, label="Height") | |
| seed = gr.Number(value=42, label="Seed (0 for random)") | |
| generate_btn = gr.Button("π¨ Generate Image", variant="primary") | |
| with gr.Column(): | |
| output_image = gr.Image(label="Generated Image", type="pil") | |
| # Example prompts | |
| gr.Markdown("### π‘ Example Prompts") | |
| examples = [ | |
| "A detailed technical diagram of a silicon waveguide showing light propagation", | |
| "Cross-section view of a silicon photonic integrated circuit with waveguides and couplers", | |
| "3D visualization of a silicon ring resonator for optical filtering", | |
| "Schematic diagram of a silicon photonic modulator with electrodes", | |
| "Top view of a silicon photonic array with multiple waveguides and couplers" | |
| ] | |
| gr.Examples( | |
| examples=[[ex] for ex in examples], | |
| inputs=[prompt] | |
| ) | |
| # Event handlers | |
| generate_btn.click( | |
| fn=generate_image_mlx, | |
| inputs=[prompt, negative_prompt, num_inference_steps, guidance_scale, width, height, seed], | |
| outputs=[output_image] | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |