Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
|
@@ -295,6 +295,27 @@ Citations:
|
|
| 295 |
|
| 296 |
except Exception as e:
|
| 297 |
st.error(f"β Error: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 298 |
# --- Chat Threads Section ---
|
| 299 |
st.divider()
|
| 300 |
st.subheader("π Your Research Threads")
|
|
@@ -329,11 +350,14 @@ st.divider()
|
|
| 329 |
st.subheader("π§ͺ Methodology Recommender")
|
| 330 |
|
| 331 |
if st.button("π§ Suggest Research Methodologies"):
|
| 332 |
-
|
|
|
|
| 333 |
try:
|
| 334 |
method_prompt = [
|
| 335 |
-
{"role": "system", "content": "You are a research advisor.
|
| 336 |
-
{"role": "user", "content":
|
|
|
|
|
|
|
| 337 |
]
|
| 338 |
method_output = ""
|
| 339 |
method_box = st.empty()
|
|
@@ -346,41 +370,41 @@ if st.button("π§ Suggest Research Methodologies"):
|
|
| 346 |
except Exception as e:
|
| 347 |
st.error(f"β Methodology suggestion failed: {e}")
|
| 348 |
else:
|
| 349 |
-
st.warning("β οΈ No research
|
| 350 |
|
| 351 |
-
# --- Follow-up Q&A (Contextual to
|
| 352 |
st.divider()
|
| 353 |
st.subheader("π¬ Follow-up Q&A")
|
| 354 |
|
| 355 |
followup = st.text_input("Ask a follow-up question:", key="follow_up_input")
|
| 356 |
|
| 357 |
if st.button("Ask Follow-up"):
|
| 358 |
-
|
|
|
|
| 359 |
try:
|
| 360 |
-
|
| 361 |
-
"
|
| 362 |
-
"Use
|
| 363 |
-
|
| 364 |
-
|
| 365 |
-
|
| 366 |
-
|
| 367 |
-
|
| 368 |
-
{"role": "user", "content": combined_context},
|
| 369 |
-
{"role": "user", "content": followup}
|
| 370 |
]
|
| 371 |
|
| 372 |
response = ""
|
| 373 |
-
|
| 374 |
-
|
|
|
|
|
|
|
| 375 |
|
| 376 |
st.session_state.chat_history.append({"role": "user", "content": followup})
|
| 377 |
st.session_state.chat_history.append({"role": "assistant", "content": response})
|
| 378 |
|
| 379 |
-
with st.chat_message("assistant"):
|
| 380 |
-
st.markdown(response)
|
| 381 |
-
|
| 382 |
except Exception as e:
|
| 383 |
-
st.error(f"Follow-up error: {e}")
|
|
|
|
|
|
|
| 384 |
|
| 385 |
# --- Paper Upload for Review & Improvement ---
|
| 386 |
st.divider()
|
|
@@ -433,4 +457,4 @@ st.subheader("π Full Chat History")
|
|
| 433 |
with st.expander("View Chat History", expanded=False):
|
| 434 |
for msg in st.session_state.chat_history:
|
| 435 |
with st.chat_message(msg["role"] if msg["role"] in ["user", "assistant"] else "assistant"):
|
| 436 |
-
st.markdown(msg["content"])
|
|
|
|
| 295 |
|
| 296 |
except Exception as e:
|
| 297 |
st.error(f"β Error: {e}")
|
| 298 |
+
# --- Build Full Context (Research + Thread + Methodology) ---
|
| 299 |
+
def build_full_context():
|
| 300 |
+
full_context = ""
|
| 301 |
+
|
| 302 |
+
# Add Research Report
|
| 303 |
+
if st.session_state.get("last_report"):
|
| 304 |
+
full_context += f"=== Research Report ===\n{st.session_state['last_report']}\n\n"
|
| 305 |
+
|
| 306 |
+
# Add Thread Messages
|
| 307 |
+
if st.session_state.get("current_thread_id"):
|
| 308 |
+
thread_msgs = st.session_state.chat_threads.get(st.session_state.current_thread_id, [])
|
| 309 |
+
for msg in thread_msgs:
|
| 310 |
+
who = "User" if msg["role"] == "user" else "Assistant"
|
| 311 |
+
full_context += f"{who}: {msg['content']}\n\n"
|
| 312 |
+
|
| 313 |
+
# Add Methodology if available
|
| 314 |
+
if st.session_state.get("methodology_notes"):
|
| 315 |
+
full_context += f"=== Methodology Suggestions ===\n{st.session_state['methodology_notes']}\n\n"
|
| 316 |
+
|
| 317 |
+
return full_context
|
| 318 |
+
|
| 319 |
# --- Chat Threads Section ---
|
| 320 |
st.divider()
|
| 321 |
st.subheader("π Your Research Threads")
|
|
|
|
| 350 |
st.subheader("π§ͺ Methodology Recommender")
|
| 351 |
|
| 352 |
if st.button("π§ Suggest Research Methodologies"):
|
| 353 |
+
context = build_full_context()
|
| 354 |
+
if context:
|
| 355 |
try:
|
| 356 |
method_prompt = [
|
| 357 |
+
{"role": "system", "content": "You are a research advisor."},
|
| 358 |
+
{"role": "user", "content": f"""Given the following conversation, research report, and context, suggest a very detailed and customized research methodology that matches the research objectives discussed.
|
| 359 |
+
|
| 360 |
+
\"\"\"{context}\"\"\""""}
|
| 361 |
]
|
| 362 |
method_output = ""
|
| 363 |
method_box = st.empty()
|
|
|
|
| 370 |
except Exception as e:
|
| 371 |
st.error(f"β Methodology suggestion failed: {e}")
|
| 372 |
else:
|
| 373 |
+
st.warning("β οΈ No research context available. Please generate research first.")
|
| 374 |
|
| 375 |
+
# --- Follow-up Q&A (Contextual to Full Thread) ---
|
| 376 |
st.divider()
|
| 377 |
st.subheader("π¬ Follow-up Q&A")
|
| 378 |
|
| 379 |
followup = st.text_input("Ask a follow-up question:", key="follow_up_input")
|
| 380 |
|
| 381 |
if st.button("Ask Follow-up"):
|
| 382 |
+
context = build_full_context()
|
| 383 |
+
if followup and context:
|
| 384 |
try:
|
| 385 |
+
combined_prompt = [
|
| 386 |
+
{"role": "system", "content": "You are an expert academic research assistant."},
|
| 387 |
+
{"role": "user", "content": f"""Use ONLY the following research report, conversation, and methodology suggestions to answer the follow-up question below. Stay fully topic-specific and context-aware.
|
| 388 |
+
|
| 389 |
+
\"\"\"{context}\"\"\"
|
| 390 |
+
|
| 391 |
+
Follow-up Question: {followup}
|
| 392 |
+
"""}
|
|
|
|
|
|
|
| 393 |
]
|
| 394 |
|
| 395 |
response = ""
|
| 396 |
+
with st.chat_message("assistant"):
|
| 397 |
+
for chunk in call_llm(combined_prompt, max_tokens=2000):
|
| 398 |
+
response += chunk
|
| 399 |
+
st.markdown(response)
|
| 400 |
|
| 401 |
st.session_state.chat_history.append({"role": "user", "content": followup})
|
| 402 |
st.session_state.chat_history.append({"role": "assistant", "content": response})
|
| 403 |
|
|
|
|
|
|
|
|
|
|
| 404 |
except Exception as e:
|
| 405 |
+
st.error(f"β Follow-up error: {e}")
|
| 406 |
+
else:
|
| 407 |
+
st.warning("β οΈ No sufficient context available. Please generate research first.")
|
| 408 |
|
| 409 |
# --- Paper Upload for Review & Improvement ---
|
| 410 |
st.divider()
|
|
|
|
| 457 |
with st.expander("View Chat History", expanded=False):
|
| 458 |
for msg in st.session_state.chat_history:
|
| 459 |
with st.chat_message(msg["role"] if msg["role"] in ["user", "assistant"] else "assistant"):
|
| 460 |
+
st.markdown(msg["content"])
|