Update app.py
Browse files
app.py
CHANGED
|
@@ -121,10 +121,25 @@ def load_qa_history():
|
|
| 121 |
st.error(f"Error loading QA history: {str(e)}")
|
| 122 |
return []
|
| 123 |
|
| 124 |
-
def save_qa_history(
|
| 125 |
-
"""Save QA history to local JSON file and push to Hugging Face"""
|
| 126 |
try:
|
| 127 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 128 |
with open("qa_history.json", "w", encoding="utf-8") as f:
|
| 129 |
json.dump(history_data, f, ensure_ascii=False, indent=2)
|
| 130 |
|
|
@@ -143,21 +158,33 @@ def save_qa_history(history_data):
|
|
| 143 |
def add_to_qa_history(query: str, answer: str):
|
| 144 |
"""Add new QA pair to history"""
|
| 145 |
history_entry = {
|
| 146 |
-
"timestamp": (datetime.now() + timedelta(hours=
|
| 147 |
"query": query,
|
| 148 |
"answer": answer
|
| 149 |
}
|
| 150 |
|
| 151 |
-
|
| 152 |
-
|
| 153 |
-
|
| 154 |
-
# Add new entry
|
| 155 |
-
history_data.append(history_entry)
|
| 156 |
-
|
| 157 |
-
# Save updated history
|
| 158 |
-
save_qa_history(history_data)
|
| 159 |
-
return history_data
|
| 160 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 161 |
def add_to_history(role: str, message: str):
|
| 162 |
"""Add message to chat history and save if it's a complete QA pair"""
|
| 163 |
st.session_state.chat_history.append((role, message))
|
|
@@ -168,6 +195,12 @@ def add_to_history(role: str, message: str):
|
|
| 168 |
user_query = st.session_state.chat_history[-2][1]
|
| 169 |
add_to_qa_history(user_query, message)
|
| 170 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 171 |
def display_chat_history():
|
| 172 |
"""Display chat history with enhanced styling"""
|
| 173 |
for i, (role, message) in enumerate(st.session_state.chat_history):
|
|
|
|
| 121 |
st.error(f"Error loading QA history: {str(e)}")
|
| 122 |
return []
|
| 123 |
|
| 124 |
+
def save_qa_history(history_entry):
|
| 125 |
+
"""Save QA history entry to local JSON file and push to Hugging Face"""
|
| 126 |
try:
|
| 127 |
+
history_file = Path("qa_history.json")
|
| 128 |
+
|
| 129 |
+
# Initialize or load existing history
|
| 130 |
+
if history_file.exists():
|
| 131 |
+
with open(history_file, "r", encoding="utf-8") as f:
|
| 132 |
+
try:
|
| 133 |
+
history_data = json.load(f)
|
| 134 |
+
except json.JSONDecodeError:
|
| 135 |
+
history_data = []
|
| 136 |
+
else:
|
| 137 |
+
history_data = []
|
| 138 |
+
|
| 139 |
+
# Append new entry
|
| 140 |
+
history_data.append(history_entry)
|
| 141 |
+
|
| 142 |
+
# Save updated history
|
| 143 |
with open("qa_history.json", "w", encoding="utf-8") as f:
|
| 144 |
json.dump(history_data, f, ensure_ascii=False, indent=2)
|
| 145 |
|
|
|
|
| 158 |
def add_to_qa_history(query: str, answer: str):
|
| 159 |
"""Add new QA pair to history"""
|
| 160 |
history_entry = {
|
| 161 |
+
"timestamp": (datetime.now() + timedelta(hours=7)).isoformat(),
|
| 162 |
"query": query,
|
| 163 |
"answer": answer
|
| 164 |
}
|
| 165 |
|
| 166 |
+
save_qa_history(history_entry)
|
| 167 |
+
return history_entry
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 168 |
|
| 169 |
+
def clear_qa_history():
|
| 170 |
+
"""Clear QA history file"""
|
| 171 |
+
try:
|
| 172 |
+
# Write empty list to history file
|
| 173 |
+
with open("qa_history.json", "w", encoding="utf-8") as f:
|
| 174 |
+
json.dump([], f, ensure_ascii=False, indent=2)
|
| 175 |
+
|
| 176 |
+
# Push to Hugging Face
|
| 177 |
+
hf_token = os.getenv('HF_TOKEN') or st.secrets['HF_TOKEN']
|
| 178 |
+
api = HfApi(token=hf_token)
|
| 179 |
+
api.upload_file(
|
| 180 |
+
path_or_fileobj="qa_history.json",
|
| 181 |
+
path_in_repo="qa_history.json",
|
| 182 |
+
repo_id="JirasakJo/Questions_Graduate_Studies_Calendar_2024",
|
| 183 |
+
repo_type="space"
|
| 184 |
+
)
|
| 185 |
+
except Exception as e:
|
| 186 |
+
st.error(f"Error clearing QA history: {str(e)}")
|
| 187 |
+
|
| 188 |
def add_to_history(role: str, message: str):
|
| 189 |
"""Add message to chat history and save if it's a complete QA pair"""
|
| 190 |
st.session_state.chat_history.append((role, message))
|
|
|
|
| 195 |
user_query = st.session_state.chat_history[-2][1]
|
| 196 |
add_to_qa_history(user_query, message)
|
| 197 |
|
| 198 |
+
# Modify the clear history button handler in main():
|
| 199 |
+
if clear_history:
|
| 200 |
+
st.session_state.chat_history = []
|
| 201 |
+
clear_qa_history() # Clear saved history
|
| 202 |
+
st.rerun()
|
| 203 |
+
|
| 204 |
def display_chat_history():
|
| 205 |
"""Display chat history with enhanced styling"""
|
| 206 |
for i, (role, message) in enumerate(st.session_state.chat_history):
|