Spaces:
Sleeping
Sleeping
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.Ttabs() 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) | |
# Вкладка 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) | |
success_forecast_1 = gr.Plot(label="Прогноз успешности сообщения 1") | |
# Второй ряд | |
with gr.Row(): | |
personalized_message_2 = gr.Textbox(label="Персонализированное сообщение 2", lines=5) | |
check_message_2 = gr.Textbox(label="Проверка сообщения 2", lines=5) | |
success_forecast_2 = gr.Plot(label="Прогноз успешности сообщения 2") | |
# Третий ряд | |
with gr.Row(): | |
personalized_message_3 = gr.Textbox(label="Персонализированное сообщение 3", lines=5) | |
check_message_3 = gr.Textbox(label="Проверка сообщения 3", lines=5) | |
success_forecast_3 = gr.Plot(label="Прогноз успешности сообщения 3") | |
# Кнопка для обновления спидометров | |
btn_check.click(fn=generate_random_gauges, inputs=[], outputs=[success_forecast_1, success_forecast_2, success_forecast_3]) | |
demo.launch() |