Update app.py
Browse files
app.py
CHANGED
@@ -168,9 +168,20 @@ def save_qa_history(history_entry):
|
|
168 |
st.error("Invalid history data format, must be a list")
|
169 |
history_data = []
|
170 |
|
171 |
-
#
|
172 |
-
|
173 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
174 |
|
175 |
# Save updated history locally
|
176 |
try:
|
@@ -244,11 +255,22 @@ def add_to_qa_history(query: str, answer: str):
|
|
244 |
st.warning("Empty query or answer detected, skipping history update")
|
245 |
return None
|
246 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
247 |
# Create history entry with proper timestamp
|
248 |
history_entry = {
|
249 |
"timestamp": (datetime.now() + timedelta(hours=5)).strftime("%Y-%m-%dT%H:%M:%S"),
|
250 |
"query": query,
|
251 |
-
"answer":
|
252 |
}
|
253 |
|
254 |
# Save entry
|
|
|
168 |
st.error("Invalid history data format, must be a list")
|
169 |
history_data = []
|
170 |
|
171 |
+
# Process and validate each entry
|
172 |
+
processed_history = []
|
173 |
+
for entry in history_data:
|
174 |
+
if isinstance(entry, dict) and all(key in entry for key in ["timestamp", "query", "answer"]):
|
175 |
+
# Process answer if it's a Document or dict
|
176 |
+
if isinstance(entry["answer"], dict):
|
177 |
+
entry["answer"] = entry["answer"].get('answer', str(entry["answer"]))
|
178 |
+
elif hasattr(entry["answer"], 'content'):
|
179 |
+
entry["answer"] = entry["answer"].content
|
180 |
+
else:
|
181 |
+
entry["answer"] = str(entry["answer"])
|
182 |
+
processed_history.append(entry)
|
183 |
+
|
184 |
+
history_data = processed_history
|
185 |
|
186 |
# Save updated history locally
|
187 |
try:
|
|
|
255 |
st.warning("Empty query or answer detected, skipping history update")
|
256 |
return None
|
257 |
|
258 |
+
# Handle different answer types
|
259 |
+
if isinstance(answer, dict):
|
260 |
+
# If answer is a dict with 'answer' key, extract it
|
261 |
+
processed_answer = answer.get('answer', str(answer))
|
262 |
+
elif hasattr(answer, 'content'):
|
263 |
+
# If answer is a Document-like object with content attribute
|
264 |
+
processed_answer = answer.content
|
265 |
+
else:
|
266 |
+
# Convert answer to string for any other type
|
267 |
+
processed_answer = str(answer)
|
268 |
+
|
269 |
# Create history entry with proper timestamp
|
270 |
history_entry = {
|
271 |
"timestamp": (datetime.now() + timedelta(hours=5)).strftime("%Y-%m-%dT%H:%M:%S"),
|
272 |
"query": query,
|
273 |
+
"answer": processed_answer
|
274 |
}
|
275 |
|
276 |
# Save entry
|