Spaces:
Sleeping
Sleeping
Update session_state.py
Browse files- session_state.py +18 -3
session_state.py
CHANGED
|
@@ -42,6 +42,9 @@ class SessionState:
|
|
| 42 |
|
| 43 |
if 'system_instruction' not in st.session_state:
|
| 44 |
st.session_state.system_instruction = None
|
|
|
|
|
|
|
|
|
|
| 45 |
|
| 46 |
# Getters y setters para cada propiedad
|
| 47 |
@property
|
|
@@ -116,6 +119,15 @@ class SessionState:
|
|
| 116 |
def system_instruction(self, value):
|
| 117 |
st.session_state.system_instruction = value
|
| 118 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 119 |
# Métodos de utilidad
|
| 120 |
def add_message(self, role, content, avatar=None):
|
| 121 |
"""Añade un mensaje al historial"""
|
|
@@ -215,7 +227,7 @@ class SessionState:
|
|
| 215 |
chat_id = self.chat_id
|
| 216 |
|
| 217 |
serialized_history = self._serialize_gemini_history(self.gemini_history)
|
| 218 |
-
os.makedirs(
|
| 219 |
joblib.dump(self.messages, self._st_messages_path(chat_id))
|
| 220 |
joblib.dump(serialized_history, self._gemini_messages_path(chat_id))
|
| 221 |
|
|
@@ -235,10 +247,13 @@ class SessionState:
|
|
| 235 |
return False
|
| 236 |
|
| 237 |
def _st_messages_path(self, chat_id):
|
| 238 |
-
return f'{
|
| 239 |
|
| 240 |
def _gemini_messages_path(self, chat_id):
|
| 241 |
-
return f'{
|
|
|
|
|
|
|
|
|
|
| 242 |
|
| 243 |
def _serialize_gemini_history(self, history):
|
| 244 |
"""Convierte tipos del SDK (Content/Part) a diccionarios serializables."""
|
|
|
|
| 42 |
|
| 43 |
if 'system_instruction' not in st.session_state:
|
| 44 |
st.session_state.system_instruction = None
|
| 45 |
+
|
| 46 |
+
if 'user_namespace' not in st.session_state:
|
| 47 |
+
st.session_state.user_namespace = 'default'
|
| 48 |
|
| 49 |
# Getters y setters para cada propiedad
|
| 50 |
@property
|
|
|
|
| 119 |
def system_instruction(self, value):
|
| 120 |
st.session_state.system_instruction = value
|
| 121 |
|
| 122 |
+
@property
|
| 123 |
+
def user_namespace(self):
|
| 124 |
+
return st.session_state.user_namespace
|
| 125 |
+
|
| 126 |
+
@user_namespace.setter
|
| 127 |
+
def user_namespace(self, value):
|
| 128 |
+
sanitized = str(value).replace('/', '_').replace('\\', '_').strip() or 'default'
|
| 129 |
+
st.session_state.user_namespace = sanitized
|
| 130 |
+
|
| 131 |
# Métodos de utilidad
|
| 132 |
def add_message(self, role, content, avatar=None):
|
| 133 |
"""Añade un mensaje al historial"""
|
|
|
|
| 227 |
chat_id = self.chat_id
|
| 228 |
|
| 229 |
serialized_history = self._serialize_gemini_history(self.gemini_history)
|
| 230 |
+
os.makedirs(self._user_data_dir(), exist_ok=True)
|
| 231 |
joblib.dump(self.messages, self._st_messages_path(chat_id))
|
| 232 |
joblib.dump(serialized_history, self._gemini_messages_path(chat_id))
|
| 233 |
|
|
|
|
| 247 |
return False
|
| 248 |
|
| 249 |
def _st_messages_path(self, chat_id):
|
| 250 |
+
return f'{self._user_data_dir()}/{chat_id}-st_messages'
|
| 251 |
|
| 252 |
def _gemini_messages_path(self, chat_id):
|
| 253 |
+
return f'{self._user_data_dir()}/{chat_id}-gemini_messages'
|
| 254 |
+
|
| 255 |
+
def _user_data_dir(self):
|
| 256 |
+
return f'{DATA_DIR}/{self.user_namespace}'
|
| 257 |
|
| 258 |
def _serialize_gemini_history(self, history):
|
| 259 |
"""Convierte tipos del SDK (Content/Part) a diccionarios serializables."""
|