import gradio as gr import time from src.constructor import generate_presentation from src.prompt_configs import en_gigachat_config, ru_gigachat_config from src.gigachat import giga_generate # from src.kandinsky import api_k31_generate from src.kandinsky import generate_image from src.font import Font logs_dir = "logs" fonts_dir = "fonts" def create_presentation(description: str, slides_num: int, language: str, num_inference_steps: int, image_res: str): # Select the appropriate prompt configuration based on the selected language if language == "English": prompt_config = en_gigachat_config elif language == "Русский": prompt_config = ru_gigachat_config else: # set default to prevent interruptions in unexpected scenario prompt_config = en_gigachat_config font = Font(fonts_dir) font.set_random_font() output_dir = f'{logs_dir}/{int(time.time())}' if image_res == "192x336 & 256x256": image_size_coef = 0.25 elif image_res == "384x672 & 512x512": image_size_coef = 0.5 elif image_res == "576x1008 & 768x768": image_size_coef = 0.75 else: image_size_coef = 1.0 generate_presentation( llm_generate=giga_generate, # generate_image=api_k31_generate, generate_image=generate_image, prompt_config=prompt_config, description=description, slides_num=slides_num, font=font, output_dir=output_dir, num_inference_steps=num_inference_steps, image_size_coef=image_size_coef ) filename = f'{output_dir}/presentation.pptx' return filename # Updated examples to include language selection examples = [ ["How to explain to a cat that he is not in charge of the house: a study of owners", 6, "English"], ["Как объяснить коту, что он не главный в доме: исследование владельцев", 6, "Русский"], ["Basic concepts of economics", 7, "English"], ["Базовые понятия экономики", 7, "Русский"], ["Climate change", 6, "English"], ["Изменение климата", 6, "Русский"], ["The Secret Life of an Office Printer: Why It Prints when You're Not Looking", 6, "English"], ["Тайная жизнь офисного принтера: почему он печатает, когда ты не смотришь", 6, "Русский"], ["Artificial intelligence", 5, "English"], ["Искусственный интеллект", 5, "Русский"], ["Space exploration", 7, "English"], ["Космические исследования", 7, "Русский"], ["The future of renewable energy", 7, "English"], ["Будущее возобновляемой энергетики", 7, "Русский"], ["5 ways to understand that you are in IT, so that the slides are about bugs and caffeine", 6, "English"], ["5 способов понять, что ты в IT, чтобы в слайдах было про баги и кофеин", 6, "Русский"], ["The history of art movements", 6, "English"], ["История художественных движений", 6, "Русский"], ["The impact of social media", 6, "English"], ["Влияние социальных сетей", 6, "Русский"], ["Sustainable urban planning", 7, "English"], ["Устойчивое градостроительство", 7, "Русский"], ["Новшества в области медицинских технологий", 7, "Русский"], ["Innovations in healthcare technology", 7, "English"], ["Глобальные экономические тенденции", 5, "Русский"], ["Global economic trends", 5, "English"], ["Психология потребительского поведения", 6, "Русский"], ["The psychology of consumer behavior", 6, "English"], ["Преимущества осознанности и медитации", 7, "Русский"], ["The benefits of mindfulness and meditation", 7, "English"], ["Достижения в области автономных транспортных средств", 7, "Русский"], ["Advancements in autonomous vehicles", 7, "English"], ["Влияние изменений климатической политики", 5, "Русский"], ["The impact of climate policy changes", 5, "English"], ] iface = gr.Interface( fn=create_presentation, inputs=[ gr.Textbox( label="Presentation Description", placeholder="Enter the description for the presentation..." ), gr.Dropdown( label="Number of slides", choices=range(1, 8), value=5 ), gr.Dropdown( label="Language", choices=["English", "Русский"], value="English" ), gr.Slider( label="Number of diffusion steps", minimum=2, maximum=50, step=1, value=50, ), # gr.Slider( # label="scaling factor for image reduction", # minimum=0.25, # maximum=1.0, # step=0.05, # value=1.0, # ) gr.Dropdown( label="Image resolution", choices=["192x336 & 256x256", "384x672 & 512x512", "576x1008 & 768x768", "768x1344 & 1024x1024"], value="768x1344 & 1024x1024" ) ], outputs=gr.File( label="Download Presentation" ), title="Presentation Generator", description="Generate a presentation based on the provided description and selected language. Click the button to download the presentation.", css="footer {visibility: hidden}", allow_flagging="never", examples=examples ) iface.launch()