import os import random import gradio as gr def describe_product(image) -> str: if image is None: return "a premium product" img_path = image.get("path") if isinstance(image, dict) else str(image) img_url = image.get("url", "") if isinstance(image, dict) else str(image) try: from gradio_client import Client, handle_file source = img_path if (img_path and os.path.exists(img_path)) else img_url if not source: return "a premium product" client = Client("vikhyatk/moondream2", verbose=False) result = client.predict( handle_file(source), "Describe this product briefly and concisely. What is it?", api_name="/answer_question", ) return str(result).strip() if result else "a premium product" except Exception: return "a premium product" def craft_marketing_prompt(caption: str) -> str: if not caption: caption = "a premium product" caption = caption.strip().rstrip(".") styles = [ ( f"Professional product advertisement photograph of {caption}, " "studio lighting, clean white background, commercial photography, " "ultra-sharp, 8K quality" ), ( f"Cinematic product shot of {caption}, dramatic lighting, " "aspirational lifestyle context, premium brand aesthetic, " "shot on Hasselblad, magazine cover quality" ), ( f"Bold marketing campaign visual of {caption}, vibrant colors, " "dynamic composition, modern editorial style, " "award-winning commercial photography" ), ] return random.choice(styles) demo = gr.Workflow(bind=[describe_product, craft_marketing_prompt]) if __name__ == "__main__": demo.launch()