MyPerfumeStudio / app.py
mohamedshawkat654's picture
Update app.py
0889022 verified
Raw
History Blame Contribute Delete
2.35 kB
import torch
from diffusers import StableDiffusionXLPipeline, DPMSolverMultistepScheduler
import gradio as gr
from openai import OpenAI
import os
import spaces # المكتبة السحرية للـ GPU المجاني
# 1. إعداد العميل (تأكد إنك ضفت المفتاح في الـ Secrets باسم OPENROUTER_API_KEY)
api_key = os.getenv("OPENROUTER_API_KEY")
client = OpenAI(base_url="https://openrouter.ai/api/v1", api_key=api_key)
# 2. تحميل الموديل (بيتحمل على الـ CPU في الأول وده عادي)
model_id = "SG161222/RealVisXL_V5.0_Lightning"
pipe = StableDiffusionXLPipeline.from_pretrained(
model_id,
torch_dtype=torch.float16,
variant="fp16",
use_safetensors=True
)
pipe.scheduler = DPMSolverMultistepScheduler.from_config(pipe.scheduler.config, use_karras_sigmas=True)
# 3. دالة التوليد (لاحظ سطر @spaces.GPU)
@spaces.GPU(duration=60)
def generate_image(user_idea):
# السطر ده هو السر: بينقل الموديل للكارت "وقت الضغط على الزرار" فقط
pipe.to("cuda")
system_rules = "Expert in cinematic photography. Transform idea to 8k advertising prompt. Return ONLY English."
try:
response = client.chat.completions.create(
model="google/gemini-2.0-flash-001",
messages=[{"role": "system", "content": system_rules}, {"role": "user", "content": user_idea}]
)
hyper_prompt = response.choices[0].message.content.strip()
except:
hyper_prompt = user_idea
# توليد الصورة
image = pipe(
prompt=hyper_prompt,
negative_prompt="cartoon, anime, plastic, blurry, lowres, text, watermark",
num_inference_steps=7,
guidance_scale=2.0
).images[0]
return image, hyper_prompt
# 4. واجهة Gradio
with gr.Blocks() as demo:
gr.Markdown("# 💎 Luxury AI Studio")
with gr.Row():
with gr.Column():
inp = gr.Textbox(label="أوصف فكرتك بالبلدي")
btn = gr.Button("توليد التصميم ✨", variant="primary")
with gr.Column():
out_img = gr.Image(label="النتيجة")
out_prompt = gr.Markdown()
btn.click(generate_image, inputs=[inp], outputs=[out_img, out_prompt])
demo.launch()