import gradio as gr import plotly.graph_objects as go import random # Функция для создания спидометра def create_gauge(value): fig = go.Figure(go.Indicator( mode="gauge+number", value=value, gauge={ 'axis': {'range': [0, 100]}, 'bar': {'color': "black"}, # Цвет стрелки 'steps': [ {'range': [0, 40], 'color': "#55efc4"}, # Мягкий зеленый {'range': [40, 70], 'color': "#ffeaa7"}, # Желтый {'range': [70, 100], 'color': "#ff7675"} # Мягкий красный ], 'threshold': { 'line': {'color': "black", 'width': 4}, 'thickness': 0.75, 'value': value } }, number={'font': {'size': 48}} # Размер шрифта числа )) # Изменение размеров спидометра и центровка fig.update_layout(paper_bgcolor="#f8f9fa", # Цвет фона font={'color': "#2d3436", 'family': "Arial"}, # Цвет текста width=250, # Уменьшенная ширина height=150, # Уменьшенная высота margin=dict(l=20, r=180, t=20, b=20)) # Отступы для центровки return fig # Функция для генерации случайных значений спидометров def generate_random_gauges(): return create_gauge(random.randint(60, 90)), create_gauge(random.randint(60, 90)), create_gauge(random.randint(60, 90)) # Функция для смены вкладки def change_tab(id): return gr.Tabs(selected=id) with gr.Blocks() as demo: with gr.Tabs() as tabs: # Вкладка 1: Исходные данные with gr.TabItem("Исходные данные", id=0): with gr.Row(): with gr.Column(): desc = gr.Textbox(label="Описание предложения", lines=6) # Увеличенная высота benefits = gr.Textbox(label="Преимущества", lines=5) # Увеличенная высота key_message = gr.Textbox(label="Ключевое сообщение", lines=5) # Увеличенная высота with gr.Column(): gender = gr.Dropdown(label="Пол", choices=["Мужчина", "Женщина", "Не указан"]) generation = gr.Dropdown(label="Поколение", choices=["Поколение Z", "Миллениалы", "Поколение X", "Бэби-бумеры"]) psychotype = gr.Textbox(label="Психотип") business_stage = gr.Textbox(label="Стадия бизнеса") industry = gr.Textbox(label="Отрасль") opf = gr.Textbox(label="ОПФ") btn_to_prompts = gr.Button("Создать") btn_to_prompts.click(fn=change_tab, inputs=[gr.Number(value=1, visible=False)], outputs=tabs) # Вкладка 2: Промпты with gr.TabItem("Ассистент", id=1): with gr.Row(): with gr.Column(): non_personalized_prompt = gr.Textbox(label="Задание для копирайтера", lines=25) # Увеличенная высота with gr.Column(): personalized_prompt = gr.Textbox(label="Задание для редактора", lines=25) # Увеличенная высота # Вкладка 3: Сообщения with gr.TabItem("Сообщения", id=2): # Заголовки столбцов with gr.Row(): gr.Markdown("### Копирайтер") # Название для столбца "Копирайтер" gr.Markdown("### Редактор") # Название для столбца "Редактор" # Первый ряд with gr.Row(): non_personalized_1 = gr.Textbox(label="Стандартное сообщение 1", lines=4, interactive=False) personalized_1 = gr.Textbox(label="Персонализированное сообщение 1", lines=4, interactive=False) # Второй ряд with gr.Row(): non_personalized_2 = gr.Textbox(label="Стандартное сообщение 2", lines=4, interactive=False) personalized_2 = gr.Textbox(label="Персонализированное сообщение 2", lines=4, interactive=False) # Третий ряд with gr.Row(): non_personalized_3 = gr.Textbox(label="Стандартное сообщение 3", lines=4, interactive=False) personalized_3 = gr.Textbox(label="Персонализированное сообщение 3", lines=4, interactive=False) # Четвертый ряд with gr.Row(): btn_check = gr.Button("Проверить", elem_id="check3") btn_check.click(fn=change_tab, inputs=[gr.Number(value=3, visible=False)], outputs=tabs) success_forecast_1 = gr.Plot() success_forecast_2 = gr.Plot() success_forecast_3 = gr.Plot() btn_check.click(fn=generate_random_gauges, inputs=[], outputs=[success_forecast_1, success_forecast_2, success_forecast_3]) # Вкладка 4: Проверка with gr.TabItem("Проверка", id=3): # Заголовки столбцов with gr.Row(): gr.Markdown("") gr.Markdown("### Корректор") # Название для столбца "Копирайтер" gr.Markdown("### Аналитик") # Название для столбца "Редактор" # Первый ряд with gr.Row(): personalized_message_1 = gr.Textbox(label="Персонализированное сообщение 1", lines=5) check_message_1 = gr.Textbox(label="Проверка сообщения 1", lines=5) with gr.Column(): gr.HTML("
") success_forecast_1 = gr.Plot(value=get_success_forecast_1(), label="Прогноз успешности сообщения 1") gr.HTML("
") # Второй ряд with gr.Row(): personalized_message_2 = gr.Textbox(label="Персонализированное сообщение 2", lines=5) check_message_2 = gr.Textbox(label="Проверка сообщения 2", lines=5) with gr.Column(): gr.HTML("
") success_forecast_2 = gr.Plot(value=get_success_forecast_2(), label="Прогноз успешности сообщения 2") gr.HTML("
") # Третий ряд with gr.Row(): personalized_message_3 = gr.Textbox(label="Персонализированное сообщение 3", lines=5) check_message_3 = gr.Textbox(label="Проверка сообщения 3", lines=5) with gr.Column(): gr.HTML("
") success_forecast_3 = gr.Plot(value=get_success_forecast_3(), label="Прогноз успешности сообщения 3") gr.HTML("
") demo.launch()