ai-forever's picture
Update app.py
47d75db verified
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()