File size: 6,019 Bytes
12c887a
d90acf0
 
 
 
c89e6c8
 
d90acf0
12c887a
d90acf0
 
12c887a
521407c
d90acf0
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
cab6c41
c89e6c8
d90acf0
 
9407c61
d90acf0
 
521407c
d90acf0
 
 
 
 
 
 
 
e09b6d2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d90acf0
 
 
 
 
 
 
 
 
e09b6d2
 
 
 
 
d90acf0
 
2b6bf66
d90acf0
521407c
 
 
 
 
 
 
d90acf0
521407c
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
d90acf0
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
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): # width: int, height: int
    # 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())}'

    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
    )

    filename = f'{output_dir}/presentation.pptx'
    
    return filename

# Updated examples to include language selection
examples = [
    ["Generate a presentation on economics", 7, "English"],
    ["Сгенерируйте презентацию по экономике", 7, "Русский"],
    ["Create a presentation on climate change", 6, "English"],
    ["Создайте презентацию об изменении климата", 6, "Русский"],
    ["Create a presentation on artificial intelligence", 8, "English"],
    ["Создайте презентацию об искусственном интеллекте", 8, "Русский"],
    ["Design a presentation on space exploration", 10, "English"],
    ["Разработайте презентацию о космических исследованиях", 10, "Русский"],
    ["Prepare a presentation on the future of renewable energy", 7, "English"],
    ["Подготовьте презентацию о будущем возобновляемой энергетики", 7, "Русский"],
    ["Develop a presentation on the history of art movements", 9, "English"],
    ["Разработайте презентацию о истории художественных движений", 9, "Русский"],
    ["Generate a presentation on the impact of social media", 6, "English"],
    ["Сгенерируйте презентацию о влиянии социальных сетей", 6, "Русский"],
    ["Create a presentation on sustainable urban planning", 8, "English"],
    ["Создайте презентацию о устойчивом градостроительстве", 8, "Русский"],
    ["Разработайте презентацию о новшествах в области медицинских технологий", 7, "Русский"],
    ["Design a presentation on innovations in healthcare technology", 7, "English"],
    ["Подготовьте презентацию о глобальных экономических тенденциях", 5, "Русский"],
    ["Prepare a presentation on global economic trends", 5, "English"],
    ["Разработайте презентацию о психологии потребительского поведения", 6, "Русский"],
    ["Develop a presentation on the psychology of consumer behavior", 6, "English"],
    ["Сгенерируйте презентацию о преимуществах осознанности и медитации", 7, "Русский"],
    ["Generate a presentation on the benefits of mindfulness and meditation", 7, "English"],
    ["Создайте презентацию о достижениях в области автономных транспортных средств", 8, "Русский"],
    ["Create a presentation on advancements in autonomous vehicles", 8, "English"],
    ["Разработайте презентацию о влиянии изменений климатической политики", 5, "Русский"],
    ["Design a presentation on 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, 11),
            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="width of the slide image",
        #     minimum=256,
        #     maximum=MAX_IMAGE_SIZE,
        #     step=32,
        #     value=1024, #Replace with defaults that work for your model
        # )
        
        # gr.Slider(
        #     label="height of the slide image",
        #     minimum=256,
        #     maximum=MAX_IMAGE_SIZE,
        #     step=32,
        #     value=1024, #Replace with defaults that work for your model
        # )

        
    ],
    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()