JeCabrera commited on
Commit
a272c89
verified
1 Parent(s): 34604f6

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +58 -31
app.py CHANGED
@@ -11,6 +11,16 @@ load_dotenv()
11
  # Configurar la API de Google
12
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
13
 
 
 
 
 
 
 
 
 
 
 
14
  # Funci贸n para generar el perfil de cliente ideal
15
  @st.cache_resource
16
  def get_model(temperature):
@@ -32,6 +42,14 @@ def generate_buyer_persona(product, skills, temperature):
32
  response = model.generate_content([instruction], generation_config={"temperature": temperature})
33
  return response.parts[0].text if response and response.parts else "Error generando el perfil de cliente ideal."
34
 
 
 
 
 
 
 
 
 
35
  # Configurar la interfaz de usuario con Streamlit
36
  st.set_page_config(page_title="Generador de Cliente Ideal", page_icon="馃懁", layout="wide")
37
 
@@ -61,42 +79,51 @@ col1, col2 = st.columns([1, 2])
61
 
62
  # Columna de entrada
63
  with col1:
64
- producto = st.text_input("驴Qu茅 producto o servicio ofreces?", placeholder="Ejemplo: Curso de Ingl茅s")
65
- habilidades = st.text_input("驴Cu谩les son tus habilidades principales?", placeholder="Ejemplo: Ense帽anza, comunicaci贸n, dise帽o de contenidos")
 
 
 
 
 
 
 
 
 
66
 
67
  # Nivel de creatividad con slider
68
- creatividad = st.slider("Nivel de creatividad", min_value=0.0, max_value=2.0, value=1.0, step=0.1)
 
 
 
 
 
 
69
 
70
  # Bot贸n para generar
71
- submit = st.button("GENERAR PERFIL DE CLIENTE IDEAL")
72
 
73
  # Columna de resultados
74
  with col2:
75
- if submit:
76
- if producto and habilidades:
77
- with st.spinner('Generando perfil de cliente ideal...'):
78
- perfil_cliente = generate_buyer_persona(
79
- producto,
80
- habilidades,
81
- creatividad
82
- )
83
-
84
- if not isinstance(perfil_cliente, str):
85
- st.error("Error al generar el perfil de cliente ideal")
86
- else:
87
- st.markdown(f"""
88
- <div style="{styles['results_container']}">
89
- <h3>Tu Cliente Ideal</h3>
90
- {perfil_cliente}
91
- </div>
92
- """, unsafe_allow_html=True)
93
-
94
- # Opci贸n para descargar
95
- st.download_button(
96
- label="Descargar Perfil",
97
- data=perfil_cliente,
98
- file_name="cliente_ideal.md",
99
- mime="text/markdown"
100
- )
101
  else:
102
- st.warning("Por favor, completa los campos de producto y habilidades antes de generar el perfil.")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
11
  # Configurar la API de Google
12
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
13
 
14
+ # Inicializar variables de estado en session_state si no existen
15
+ if 'perfil_cliente' not in st.session_state:
16
+ st.session_state.perfil_cliente = None
17
+ if 'producto' not in st.session_state:
18
+ st.session_state.producto = ""
19
+ if 'habilidades' not in st.session_state:
20
+ st.session_state.habilidades = ""
21
+ if 'creatividad' not in st.session_state:
22
+ st.session_state.creatividad = 1.0
23
+
24
  # Funci贸n para generar el perfil de cliente ideal
25
  @st.cache_resource
26
  def get_model(temperature):
 
42
  response = model.generate_content([instruction], generation_config={"temperature": temperature})
43
  return response.parts[0].text if response and response.parts else "Error generando el perfil de cliente ideal."
44
 
45
+ # Funci贸n para actualizar el perfil del cliente
46
+ def update_profile():
47
+ st.session_state.perfil_cliente = generate_buyer_persona(
48
+ st.session_state.producto,
49
+ st.session_state.habilidades,
50
+ st.session_state.creatividad
51
+ )
52
+
53
  # Configurar la interfaz de usuario con Streamlit
54
  st.set_page_config(page_title="Generador de Cliente Ideal", page_icon="馃懁", layout="wide")
55
 
 
79
 
80
  # Columna de entrada
81
  with col1:
82
+ producto = st.text_input("驴Qu茅 producto o servicio ofreces?",
83
+ value=st.session_state.producto,
84
+ placeholder="Ejemplo: Curso de Ingl茅s",
85
+ key="producto_input")
86
+ st.session_state.producto = producto
87
+
88
+ habilidades = st.text_input("驴Cu谩les son tus habilidades principales?",
89
+ value=st.session_state.habilidades,
90
+ placeholder="Ejemplo: Ense帽anza, comunicaci贸n, dise帽o de contenidos",
91
+ key="habilidades_input")
92
+ st.session_state.habilidades = habilidades
93
 
94
  # Nivel de creatividad con slider
95
+ creatividad = st.slider("Nivel de creatividad",
96
+ min_value=0.0,
97
+ max_value=2.0,
98
+ value=st.session_state.creatividad,
99
+ step=0.1,
100
+ key="creatividad_slider")
101
+ st.session_state.creatividad = creatividad
102
 
103
  # Bot贸n para generar
104
+ submit = st.button("GENERAR PERFIL DE CLIENTE IDEAL", on_click=update_profile)
105
 
106
  # Columna de resultados
107
  with col2:
108
+ # Mostrar resultados si existen en el estado de la sesi贸n
109
+ if st.session_state.perfil_cliente:
110
+ if not isinstance(st.session_state.perfil_cliente, str):
111
+ st.error("Error al generar el perfil de cliente ideal")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
112
  else:
113
+ st.markdown(f"""
114
+ <div style="{styles['results_container']}">
115
+ <h3>Tu Cliente Ideal</h3>
116
+ {st.session_state.perfil_cliente}
117
+ </div>
118
+ """, unsafe_allow_html=True)
119
+
120
+ # Opci贸n para descargar
121
+ st.download_button(
122
+ label="Descargar Perfil",
123
+ data=st.session_state.perfil_cliente,
124
+ file_name="cliente_ideal.md",
125
+ mime="text/markdown"
126
+ )
127
+ # Mostrar el mensaje de advertencia solo si se ha presionado el bot贸n pero faltan campos
128
+ elif submit and (not producto or not habilidades):
129
+ st.warning("Por favor, completa los campos de producto y habilidades antes de generar el perfil.")