gnosticdev commited on
Commit
4227970
verified
1 Parent(s): 59bfaac

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +32 -90
app.py CHANGED
@@ -1,6 +1,6 @@
 
1
  import streamlit as st
2
  import json
3
- import requests
4
  from streamlit_option_menu import option_menu
5
  from gemini_utility import (load_gemini_pro, gemini_pro_vision_responce)
6
  from PIL import Image
@@ -9,30 +9,18 @@ from PIL import Image
9
  st.set_page_config(
10
  page_title="GnosticDev AI",
11
  page_icon="馃",
12
- layout="wide", # Aseg煤rate de que el layout sea 'wide'
13
  initial_sidebar_state="expanded",
14
  )
15
 
16
- # Men煤 de opciones en el lateral izquierdo
17
- selected = option_menu(
18
- menu_title="Men煤",
19
- options=["System Prompt", "Chatbot", "Image Captioning"],
20
- icons=["gear", "chat", "camera"],
21
- default_index=0,
22
- orientation="vertical" # Aseg煤rate de que est茅 en vertical
23
- )
24
-
25
- # Inicializar el estado de la sesi贸n
26
- if 'cookie_chat_history' not in st.session_state:
27
- st.session_state.cookie_chat_history = json.dumps([])
28
-
29
- if 'cookie_urls' not in st.session_state:
30
- st.session_state.cookie_urls = []
31
-
32
- if 'system_prompt' not in st.session_state:
33
- st.session_state.system_prompt = ""
34
 
35
- # Funci贸n para guardar el historial en cookies
36
  def save_chat_history(history):
37
  serializable_history = []
38
  for message in history:
@@ -40,13 +28,13 @@ def save_chat_history(history):
40
  "role": message.role,
41
  "text": message.parts[0].text
42
  })
43
- st.session_state.cookie_chat_history = json.dumps(serializable_history)
44
 
45
- # Funci贸n para cargar el historial desde cookies
46
  def load_chat_history():
47
- if 'cookie_chat_history' in st.session_state:
48
  try:
49
- history = json.loads(st.session_state.cookie_chat_history)
50
  model = load_gemini_pro()
51
  chat = model.start_chat(history=[])
52
  if st.session_state.system_prompt:
@@ -59,57 +47,29 @@ def load_chat_history():
59
  st.error(f"Error cargando el historial: {e}")
60
  return None
61
 
62
- # Funci贸n para descargar el historial del chat
63
- def download_chat_history(history):
64
- chat_text = ""
65
- for message in history:
66
- chat_text += f"{message.role}: {message.parts[0].text}\n"
67
- return chat_text
68
 
69
- # Funci贸n para obtener contenido de URLs
70
- def fetch_url_content(url):
71
- try:
72
- response = requests.get(url)
73
- response.raise_for_status() # Lanza un error si la respuesta es un c贸digo de error
74
- return response.text # Devuelve el contenido de la p谩gina
75
- except requests.RequestException as e:
76
- st.error(f"Error al acceder a {url}: {e}")
77
- return None
78
 
79
- if selected == "System Prompt":
80
- st.title("Configuraci贸n del System Prompt")
81
-
82
- new_system_prompt = st.text_area(
83
- "Ingresa las instrucciones para el AI (System Prompt)",
84
- value=st.session_state.system_prompt,
85
- height=300,
86
- help="Escribe aqu铆 las instrucciones que definir谩n el comportamiento del AI"
87
  )
88
 
89
- # Campo para ingresar URLs
90
- urls_input = st.text_area(
91
- "Ingresa URLs de informaci贸n y documentos (separadas por comas)",
92
- value=", ".join(st.session_state.cookie_urls),
93
- height=100,
94
- help="Escribe aqu铆 las URLs que el AI puede usar como referencia, separadas por comas."
95
- )
96
-
97
- if st.button("Guardar System Prompt y URLs"):
98
- st.session_state.system_prompt = new_system_prompt
99
- st.session_state.cookie_urls = [url.strip() for url in urls_input.split(",") if url.strip()] # Guardar las URLs en una lista
100
- if "chat_session" in st.session_state:
101
- del st.session_state.chat_session
102
- st.success("System Prompt y URLs actualizados con 茅xito!")
103
-
104
- if st.session_state.system_prompt:
105
- st.markdown("### System Prompt Actual:")
106
- st.info(st.session_state.system_prompt)
107
-
108
- if st.session_state.cookie_urls:
109
- st.markdown("### URLs Guardadas:")
110
- st.info(", ".join(st.session_state.cookie_urls))
111
 
112
- elif selected == "Chatbot":
113
  model = load_gemini_pro()
114
 
115
  # Inicializar o cargar sesi贸n de chat
@@ -137,24 +97,6 @@ elif selected == "Chatbot":
137
  user_prompt = st.chat_input("Preguntame algo...")
138
  if user_prompt:
139
  st.chat_message("user").markdown(user_prompt)
140
-
141
- # Obtener las URLs guardadas
142
- urls = st.session_state.get('cookie_urls', [])
143
- fetched_contents = []
144
-
145
- if urls:
146
- # L贸gica para consultar las URLs y obtener informaci贸n
147
- for url in urls:
148
- content = fetch_url_content(url)
149
- if content:
150
- fetched_contents.append(content)
151
-
152
- # Aqu铆 puedes procesar el contenido obtenido de las URLs
153
- # Por ejemplo, podr铆as resumirlo o extraer informaci贸n relevante
154
- combined_content = "\n\n".join(fetched_contents)
155
- user_prompt += f"\n\nInformaci贸n adicional de URLs:\n{combined_content}"
156
-
157
- # Enviar el mensaje del usuario al modelo
158
  gemini_response = st.session_state.chat_session.send_message(user_prompt)
159
  with st.chat_message("assistant"):
160
  st.markdown(gemini_response.text)
@@ -164,7 +106,7 @@ elif selected == "Chatbot":
164
 
165
  # Opci贸n para descargar el historial del chat
166
  if st.button("Descargar Historial del Chat"):
167
- chat_history = download_chat_history(st.session_state.chat_session.history)
168
  st.download_button(
169
  label="Descargar",
170
  data=chat_history,
 
1
+ import os
2
  import streamlit as st
3
  import json
 
4
  from streamlit_option_menu import option_menu
5
  from gemini_utility import (load_gemini_pro, gemini_pro_vision_responce)
6
  from PIL import Image
 
9
  st.set_page_config(
10
  page_title="GnosticDev AI",
11
  page_icon="馃",
12
+ layout="centered",
13
  initial_sidebar_state="expanded",
14
  )
15
 
16
+ # Funci贸n para traducir el rol a un formato que Streamlit entienda
17
+ def translate_role_to_streamlit(user_role):
18
+ if user_role == "model":
19
+ return "assistant"
20
+ else:
21
+ return user_role
 
 
 
 
 
 
 
 
 
 
 
 
22
 
23
+ # Funci贸n para guardar el historial en el estado de la sesi贸n
24
  def save_chat_history(history):
25
  serializable_history = []
26
  for message in history:
 
28
  "role": message.role,
29
  "text": message.parts[0].text
30
  })
31
+ st.session_state.chat_history = serializable_history
32
 
33
+ # Funci贸n para cargar el historial desde el estado de la sesi贸n
34
  def load_chat_history():
35
+ if 'chat_history' in st.session_state:
36
  try:
37
+ history = st.session_state.chat_history
38
  model = load_gemini_pro()
39
  chat = model.start_chat(history=[])
40
  if st.session_state.system_prompt:
 
47
  st.error(f"Error cargando el historial: {e}")
48
  return None
49
 
50
+ # Inicializar estados
51
+ if "system_prompt" not in st.session_state:
52
+ st.session_state.system_prompt = ""
 
 
 
53
 
54
+ if "chat_history" not in st.session_state:
55
+ st.session_state.chat_history = []
 
 
 
 
 
 
 
56
 
57
+ with st.sidebar:
58
+ selected = option_menu(
59
+ "GD AI",
60
+ ["Chatbot", "Image Captioning"], # Eliminamos "System Prompt"
61
+ menu_icon="robot",
62
+ icons=['chat-dots-fill', 'image-fill'],
63
+ default_index=0
 
64
  )
65
 
66
+ # Bot贸n para borrar historial
67
+ if st.button("Borrar Historial"):
68
+ st.session_state.chat_history = []
69
+ st.session_state.chat_session = None
70
+ st.success("Historial borrado!")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
 
72
+ if selected == "Chatbot":
73
  model = load_gemini_pro()
74
 
75
  # Inicializar o cargar sesi贸n de chat
 
97
  user_prompt = st.chat_input("Preguntame algo...")
98
  if user_prompt:
99
  st.chat_message("user").markdown(user_prompt)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
100
  gemini_response = st.session_state.chat_session.send_message(user_prompt)
101
  with st.chat_message("assistant"):
102
  st.markdown(gemini_response.text)
 
106
 
107
  # Opci贸n para descargar el historial del chat
108
  if st.button("Descargar Historial del Chat"):
109
+ chat_history = "\n".join([f"{msg['role']}: {msg['text']}" for msg in st.session_state.chat_history])
110
  st.download_button(
111
  label="Descargar",
112
  data=chat_history,