dyadd commited on
Commit
b9a1579
·
verified ·
1 Parent(s): c895023

Upload folder using huggingface_hub

Browse files
nbs/02_learning_interface.ipynb CHANGED
@@ -539,12 +539,11 @@
539
  " specialty: str,\n",
540
  " setting: str,\n",
541
  " state: Dict[str, Any]\n",
542
- " ) -> List:\n",
543
  " \"\"\"Update rotation context with session tracking.\"\"\"\n",
544
  " if specialty and setting:\n",
545
  " self.tutor.learning_context.update_rotation(specialty, setting)\n",
546
  " \n",
547
- " # Start new session\n",
548
  " if self.auth.start_session(specialty, setting):\n",
549
  " self.auth.log_interaction(\n",
550
  " \"context_update\",\n",
@@ -555,15 +554,17 @@
555
  " goals = await self.tutor.generate_smart_goals(specialty, setting)\n",
556
  " state[\"suggested_goals\"] = goals\n",
557
  " \n",
558
- " # Log goal generation\n",
559
  " if self.auth.token:\n",
560
  " self.auth.log_interaction(\n",
561
  " \"goals_generated\",\n",
562
  " f\"Generated {len(goals)} goals\"\n",
563
  " )\n",
564
  " \n",
565
- " return self._update_displays(state)\n",
566
- " return [[], [], [], \"No active learning goal\"]\n",
 
 
 
567
  "\n",
568
  " # Chat Processing\n",
569
  " async def process_chat(\n",
@@ -863,10 +864,11 @@
863
  " with gr.Row():\n",
864
  " # Left: Chat Interface\n",
865
  " with gr.Column(scale=3):\n",
866
- " # Active goal display with improved styling\n",
867
  " goal_display = gr.Markdown(\n",
868
  " value=\"No active learning goal\",\n",
869
- " elem_classes=[\"active-goal\"]\n",
 
870
  " )\n",
871
  " \n",
872
  " # Chat interface with proper sizing\n",
@@ -960,6 +962,13 @@
960
  " label=\"Identified Knowledge Gaps\",\n",
961
  " row_count=8\n",
962
  " )\n",
 
 
 
 
 
 
 
963
  " \n",
964
  " # Helper Functions\n",
965
  " def clear_discussion() -> Tuple[List, str, Dict]:\n",
@@ -1005,15 +1014,25 @@
1005
  " specialty.change(\n",
1006
  " fn=self.update_context,\n",
1007
  " inputs=[specialty, setting, state],\n",
1008
- " outputs=[goals_list, goal_display]\n",
 
 
 
 
 
1009
  " )\n",
1010
  " \n",
1011
  " setting.change(\n",
1012
  " fn=self.update_context,\n",
1013
  " inputs=[specialty, setting, state],\n",
1014
- " outputs=[goals_list, goal_display]\n",
 
 
 
 
 
1015
  " )\n",
1016
- " \n",
1017
  " # Chat events with streaming\n",
1018
  " msg.submit(\n",
1019
  " self.process_chat,\n",
 
539
  " specialty: str,\n",
540
  " setting: str,\n",
541
  " state: Dict[str, Any]\n",
542
+ " ) -> Tuple[List, List, List, str]: # Explicitly return all outputs\n",
543
  " \"\"\"Update rotation context with session tracking.\"\"\"\n",
544
  " if specialty and setting:\n",
545
  " self.tutor.learning_context.update_rotation(specialty, setting)\n",
546
  " \n",
 
547
  " if self.auth.start_session(specialty, setting):\n",
548
  " self.auth.log_interaction(\n",
549
  " \"context_update\",\n",
 
554
  " goals = await self.tutor.generate_smart_goals(specialty, setting)\n",
555
  " state[\"suggested_goals\"] = goals\n",
556
  " \n",
 
557
  " if self.auth.token:\n",
558
  " self.auth.log_interaction(\n",
559
  " \"goals_generated\",\n",
560
  " f\"Generated {len(goals)} goals\"\n",
561
  " )\n",
562
  " \n",
563
+ " update_results = self._update_displays(state)\n",
564
+ " return tuple(update_results) # Return as tuple to match output structure\n",
565
+ " \n",
566
+ " empty_results = [[], [], [], \"No active learning goal\"]\n",
567
+ " return tuple(empty_results) # Return as tuple here too\n",
568
  "\n",
569
  " # Chat Processing\n",
570
  " async def process_chat(\n",
 
864
  " with gr.Row():\n",
865
  " # Left: Chat Interface\n",
866
  " with gr.Column(scale=3):\n",
867
+ " # Update the Markdown component to handle string input\n",
868
  " goal_display = gr.Markdown(\n",
869
  " value=\"No active learning goal\",\n",
870
+ " elem_classes=[\"active-goal\"],\n",
871
+ " sanitize=False # Allow raw HTML if needed\n",
872
  " )\n",
873
  " \n",
874
  " # Chat interface with proper sizing\n",
 
962
  " label=\"Identified Knowledge Gaps\",\n",
963
  " row_count=8\n",
964
  " )\n",
965
+ " gr.Markdown(\"### Recent Goals\")\n",
966
+ " recent_goals = gr.DataFrame(\n",
967
+ " headers=[\"Goal\", \"Category\", \"Completed\"],\n",
968
+ " value=[],\n",
969
+ " label=\"Recently Completed Goals\",\n",
970
+ " row_count=5\n",
971
+ " )\n",
972
  " \n",
973
  " # Helper Functions\n",
974
  " def clear_discussion() -> Tuple[List, str, Dict]:\n",
 
1014
  " specialty.change(\n",
1015
  " fn=self.update_context,\n",
1016
  " inputs=[specialty, setting, state],\n",
1017
+ " outputs=[\n",
1018
+ " goals_list, # DataFrame\n",
1019
+ " progress_display, # DataFrame\n",
1020
+ " recent_goals, # DataFrame\n",
1021
+ " goal_display # Markdown\n",
1022
+ " ]\n",
1023
  " )\n",
1024
  " \n",
1025
  " setting.change(\n",
1026
  " fn=self.update_context,\n",
1027
  " inputs=[specialty, setting, state],\n",
1028
+ " outputs=[\n",
1029
+ " goals_list, # DataFrame\n",
1030
+ " progress_display, # DataFrame\n",
1031
+ " recent_goals, # DataFrame\n",
1032
+ " goal_display # Markdown\n",
1033
+ " ]\n",
1034
  " )\n",
1035
+ " \n",
1036
  " # Chat events with streaming\n",
1037
  " msg.submit(\n",
1038
  " self.process_chat,\n",
wardbuddy/learning_interface.py CHANGED
@@ -440,12 +440,11 @@ class LearningInterface:
440
  specialty: str,
441
  setting: str,
442
  state: Dict[str, Any]
443
- ) -> List:
444
  """Update rotation context with session tracking."""
445
  if specialty and setting:
446
  self.tutor.learning_context.update_rotation(specialty, setting)
447
 
448
- # Start new session
449
  if self.auth.start_session(specialty, setting):
450
  self.auth.log_interaction(
451
  "context_update",
@@ -456,15 +455,17 @@ class LearningInterface:
456
  goals = await self.tutor.generate_smart_goals(specialty, setting)
457
  state["suggested_goals"] = goals
458
 
459
- # Log goal generation
460
  if self.auth.token:
461
  self.auth.log_interaction(
462
  "goals_generated",
463
  f"Generated {len(goals)} goals"
464
  )
465
 
466
- return self._update_displays(state)
467
- return [[], [], [], "No active learning goal"]
 
 
 
468
 
469
  # Chat Processing
470
  async def process_chat(
@@ -764,10 +765,11 @@ class LearningInterface:
764
  with gr.Row():
765
  # Left: Chat Interface
766
  with gr.Column(scale=3):
767
- # Active goal display with improved styling
768
  goal_display = gr.Markdown(
769
  value="No active learning goal",
770
- elem_classes=["active-goal"]
 
771
  )
772
 
773
  # Chat interface with proper sizing
@@ -861,6 +863,13 @@ class LearningInterface:
861
  label="Identified Knowledge Gaps",
862
  row_count=8
863
  )
 
 
 
 
 
 
 
864
 
865
  # Helper Functions
866
  def clear_discussion() -> Tuple[List, str, Dict]:
@@ -906,15 +915,25 @@ class LearningInterface:
906
  specialty.change(
907
  fn=self.update_context,
908
  inputs=[specialty, setting, state],
909
- outputs=[goals_list, goal_display]
 
 
 
 
 
910
  )
911
 
912
  setting.change(
913
  fn=self.update_context,
914
  inputs=[specialty, setting, state],
915
- outputs=[goals_list, goal_display]
 
 
 
 
 
916
  )
917
-
918
  # Chat events with streaming
919
  msg.submit(
920
  self.process_chat,
 
440
  specialty: str,
441
  setting: str,
442
  state: Dict[str, Any]
443
+ ) -> Tuple[List, List, List, str]: # Explicitly return all outputs
444
  """Update rotation context with session tracking."""
445
  if specialty and setting:
446
  self.tutor.learning_context.update_rotation(specialty, setting)
447
 
 
448
  if self.auth.start_session(specialty, setting):
449
  self.auth.log_interaction(
450
  "context_update",
 
455
  goals = await self.tutor.generate_smart_goals(specialty, setting)
456
  state["suggested_goals"] = goals
457
 
 
458
  if self.auth.token:
459
  self.auth.log_interaction(
460
  "goals_generated",
461
  f"Generated {len(goals)} goals"
462
  )
463
 
464
+ update_results = self._update_displays(state)
465
+ return tuple(update_results) # Return as tuple to match output structure
466
+
467
+ empty_results = [[], [], [], "No active learning goal"]
468
+ return tuple(empty_results) # Return as tuple here too
469
 
470
  # Chat Processing
471
  async def process_chat(
 
765
  with gr.Row():
766
  # Left: Chat Interface
767
  with gr.Column(scale=3):
768
+ # Update the Markdown component to handle string input
769
  goal_display = gr.Markdown(
770
  value="No active learning goal",
771
+ elem_classes=["active-goal"],
772
+ sanitize=False # Allow raw HTML if needed
773
  )
774
 
775
  # Chat interface with proper sizing
 
863
  label="Identified Knowledge Gaps",
864
  row_count=8
865
  )
866
+ gr.Markdown("### Recent Goals")
867
+ recent_goals = gr.DataFrame(
868
+ headers=["Goal", "Category", "Completed"],
869
+ value=[],
870
+ label="Recently Completed Goals",
871
+ row_count=5
872
+ )
873
 
874
  # Helper Functions
875
  def clear_discussion() -> Tuple[List, str, Dict]:
 
915
  specialty.change(
916
  fn=self.update_context,
917
  inputs=[specialty, setting, state],
918
+ outputs=[
919
+ goals_list, # DataFrame
920
+ progress_display, # DataFrame
921
+ recent_goals, # DataFrame
922
+ goal_display # Markdown
923
+ ]
924
  )
925
 
926
  setting.change(
927
  fn=self.update_context,
928
  inputs=[specialty, setting, state],
929
+ outputs=[
930
+ goals_list, # DataFrame
931
+ progress_display, # DataFrame
932
+ recent_goals, # DataFrame
933
+ goal_display # Markdown
934
+ ]
935
  )
936
+
937
  # Chat events with streaming
938
  msg.submit(
939
  self.process_chat,