atascioglu commited on
Commit
c2c481d
·
verified ·
1 Parent(s): b9ccbac

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +6 -15
app.py CHANGED
@@ -9,7 +9,6 @@ from huggingface_hub import InferenceClient
9
  from docx import Document
10
  from pptx import Presentation
11
 
12
- # Optional OCR (graceful fallback if missing)
13
  try:
14
  from PIL import Image
15
  except Exception:
@@ -20,7 +19,6 @@ try:
20
  except Exception:
21
  pytesseract = None
22
 
23
- # Optional web search scaffold (OFF by default)
24
  try:
25
  import requests
26
  except Exception:
@@ -59,7 +57,6 @@ CASE_PREFIX = "CaseStudyContent__"
59
  def _is_placeholder_name(name: str) -> bool:
60
  return "placeholder" in (name or "").lower()
61
 
62
-
63
  # =====================================================
64
  # PER-MODE GENERATION CONTROLS (creativity/speed)
65
  # =====================================================
@@ -75,7 +72,6 @@ GEN_CONFIG = {
75
  "Stakeholder": {"temperature": 0.45, "top_p": 0.95, "max_tokens": 420},
76
  }
77
 
78
-
79
  # =====================================================
80
  # OPTIONAL WEB SEARCH (OFF by default)
81
  # =====================================================
@@ -99,9 +95,8 @@ def web_search_snippets(query: str, max_chars: int = 1500) -> str:
99
  return ""
100
  return ""
101
 
102
-
103
  # =====================================================
104
- # MODE INSTRUCTIONS
105
  # =====================================================
106
 
107
  MODE_INSTRUCTIONS = {
@@ -231,7 +226,7 @@ def strip_think(text: str) -> str:
231
 
232
 
233
  # =====================================================
234
- # FILE EXTRACTION (bounded, multi-file, + optional OCR)
235
  # =====================================================
236
 
237
  def read_text_file(path: str, max_chars: int = 2000) -> str:
@@ -409,7 +404,7 @@ def files_to_text(upload_paths) -> tuple[str, list[dict], str]:
409
 
410
 
411
  # =====================================================
412
- # STATIC KB INGESTION (loaded once at startup)
413
  # =====================================================
414
 
415
  def _list_kb_files():
@@ -467,7 +462,7 @@ CASE_KB_TEXT, CASE_PLACEHOLDER_ONLY = _kb_extract(CASE_PATHS, "CaseStudyContent"
467
 
468
 
469
  # =====================================================
470
- # DEMO ASSUMPTIONS (your preferred phrasing)
471
  # =====================================================
472
 
473
  DEMO_COURSE_NAME = 'AI in Business Analytics & Digital Transformation'
@@ -546,7 +541,7 @@ def complete_llm(messages, mode: str) -> str:
546
 
547
 
548
  # =====================================================
549
- # PER-MODE CHAT HISTORY SUPPORT (NEW)
550
  # =====================================================
551
 
552
  def load_history_for_mode(selected_mode, histories):
@@ -555,7 +550,7 @@ def load_history_for_mode(selected_mode, histories):
555
 
556
 
557
  # =====================================================
558
- # MAIN CHAT HANDLER (UPDATED to use per-mode histories)
559
  # =====================================================
560
 
561
  def chat_user(message, visible_history, mode, upload_paths, histories, memory_state, flags_state):
@@ -854,7 +849,6 @@ with gr.Blocks(css=CSS) as demo:
854
  value="Course Detailer",
855
  )
856
 
857
- # NEW: store per-mode histories
858
  histories_state = gr.State({m: [] for m in STUDENT_MODES})
859
  memory_state = gr.State({"session": []})
860
  flags_state = gr.State({"demo_course_intro_shown": False, "demo_case_intro_shown": False})
@@ -881,21 +875,18 @@ with gr.Blocks(css=CSS) as demo:
881
  reset_btn = gr.Button("Reset Conversation")
882
  export_btn = gr.DownloadButton("Export Conversation")
883
 
884
- # NEW: switch visible chat when mode changes
885
  mode.change(
886
  load_history_for_mode,
887
  inputs=[mode, histories_state],
888
  outputs=[chatbot],
889
  )
890
 
891
- # UPDATED: submit reads/writes the per-mode history state
892
  message.submit(
893
  chat_user,
894
  inputs=[message, chatbot, mode, upload, histories_state, memory_state, flags_state],
895
  outputs=[chatbot, message, upload, histories_state, memory_state, flags_state],
896
  )
897
 
898
- # UPDATED: reset now resets all mode histories
899
  reset_btn.click(
900
  reset_chat,
901
  inputs=[histories_state, memory_state, flags_state],
 
9
  from docx import Document
10
  from pptx import Presentation
11
 
 
12
  try:
13
  from PIL import Image
14
  except Exception:
 
19
  except Exception:
20
  pytesseract = None
21
 
 
22
  try:
23
  import requests
24
  except Exception:
 
57
  def _is_placeholder_name(name: str) -> bool:
58
  return "placeholder" in (name or "").lower()
59
 
 
60
  # =====================================================
61
  # PER-MODE GENERATION CONTROLS (creativity/speed)
62
  # =====================================================
 
72
  "Stakeholder": {"temperature": 0.45, "top_p": 0.95, "max_tokens": 420},
73
  }
74
 
 
75
  # =====================================================
76
  # OPTIONAL WEB SEARCH (OFF by default)
77
  # =====================================================
 
95
  return ""
96
  return ""
97
 
 
98
  # =====================================================
99
+ # MODE INSTRUCTIONS ****** CUSTOMIZE ******
100
  # =====================================================
101
 
102
  MODE_INSTRUCTIONS = {
 
226
 
227
 
228
  # =====================================================
229
+ # FILE EXTRACTION
230
  # =====================================================
231
 
232
  def read_text_file(path: str, max_chars: int = 2000) -> str:
 
404
 
405
 
406
  # =====================================================
407
+ # STATIC KB INGESTION
408
  # =====================================================
409
 
410
  def _list_kb_files():
 
462
 
463
 
464
  # =====================================================
465
+ # DEMO ASSUMPTIONS
466
  # =====================================================
467
 
468
  DEMO_COURSE_NAME = 'AI in Business Analytics & Digital Transformation'
 
541
 
542
 
543
  # =====================================================
544
+ # PER-MODE CHAT HISTORY SUPPORT
545
  # =====================================================
546
 
547
  def load_history_for_mode(selected_mode, histories):
 
550
 
551
 
552
  # =====================================================
553
+ # MAIN CHAT HANDLER
554
  # =====================================================
555
 
556
  def chat_user(message, visible_history, mode, upload_paths, histories, memory_state, flags_state):
 
849
  value="Course Detailer",
850
  )
851
 
 
852
  histories_state = gr.State({m: [] for m in STUDENT_MODES})
853
  memory_state = gr.State({"session": []})
854
  flags_state = gr.State({"demo_course_intro_shown": False, "demo_case_intro_shown": False})
 
875
  reset_btn = gr.Button("Reset Conversation")
876
  export_btn = gr.DownloadButton("Export Conversation")
877
 
 
878
  mode.change(
879
  load_history_for_mode,
880
  inputs=[mode, histories_state],
881
  outputs=[chatbot],
882
  )
883
 
 
884
  message.submit(
885
  chat_user,
886
  inputs=[message, chatbot, mode, upload, histories_state, memory_state, flags_state],
887
  outputs=[chatbot, message, upload, histories_state, memory_state, flags_state],
888
  )
889
 
 
890
  reset_btn.click(
891
  reset_chat,
892
  inputs=[histories_state, memory_state, flags_state],