fruitpicker01's picture
Update app.py
593d3df verified
raw
history blame
7.24 kB
import gradio as gr
import plotly.graph_objects as go
# Функция для создания спидометра
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 get_success_forecast_1():
return create_gauge(76)
def get_success_forecast_2():
return create_gauge(85)
def get_success_forecast_3():
return create_gauge(62)
# Функция для смены вкладки
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=5) # Увеличенная высота
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(value=get_success_forecast_1(), label="Прогноз успешности сообщения 1") # Спидометр 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(value=get_success_forecast_2(), label="Прогноз успешности сообщения 2") # Спидометр 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(value=get_success_forecast_3(), label="Прогноз успешности сообщения 3") # Спидометр 3
demo.launch()