j-js commited on
Commit
92fc965
·
verified ·
1 Parent(s): f517e49

Update conversation_logic.py

Browse files
Files changed (1) hide show
  1. conversation_logic.py +57 -0
conversation_logic.py CHANGED
@@ -1,3 +1,4 @@
 
1
  from __future__ import annotations
2
 
3
  import re
@@ -317,6 +318,11 @@ def is_explainer_request(text: str) -> bool:
317
  "can you explain",
318
  "explain how",
319
  "explain why",
 
 
 
 
 
320
  ]
321
 
322
  return any(p in t for p in explainer_signals)
@@ -816,6 +822,48 @@ def _pick_teaching_line(
816
  return best_line
817
 
818
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
819
  class ConversationEngine:
820
  def __init__(
821
  self,
@@ -889,6 +937,8 @@ class ConversationEngine:
889
  transparency=transparency,
890
  )
891
 
 
 
892
  result.domain = "quant" if is_quant else "general"
893
  result.solved = False
894
  result.help_mode = "explain"
@@ -907,6 +957,13 @@ class ConversationEngine:
907
  "question_type": question_type,
908
  "classified_topic": question_topic,
909
  "explainer_used": True,
 
 
 
 
 
 
 
910
  }
911
  return result
912
 
 
1
+ # conversation_logic.py
2
  from __future__ import annotations
3
 
4
  import re
 
318
  "can you explain",
319
  "explain how",
320
  "explain why",
321
+ "break this down",
322
+ "question breakdown",
323
+ "what should i identify first",
324
+ "what do i do first",
325
+ "what is the first move",
326
  ]
327
 
328
  return any(p in t for p in explainer_signals)
 
822
  return best_line
823
 
824
 
825
+ def _safe_meta_list(items: Any) -> List[str]:
826
+ if not items:
827
+ return []
828
+ if isinstance(items, list):
829
+ return [str(x).strip() for x in items if str(x).strip()]
830
+ if isinstance(items, tuple):
831
+ return [str(x).strip() for x in items if str(x).strip()]
832
+ if isinstance(items, str):
833
+ text = items.strip()
834
+ return [text] if text else []
835
+ return []
836
+
837
+
838
+ def _safe_meta_text(value: Any) -> Optional[str]:
839
+ if value is None:
840
+ return None
841
+ text = str(value).strip()
842
+ return text or None
843
+
844
+
845
+ def _extract_explainer_scaffold(explainer_result: Any) -> Dict[str, Any]:
846
+ scaffold = getattr(explainer_result, "scaffold", None)
847
+
848
+ if scaffold is None:
849
+ return {}
850
+
851
+ return {
852
+ "concept": _safe_meta_text(getattr(scaffold, "concept", None)),
853
+ "ask": _safe_meta_text(getattr(scaffold, "ask", None)),
854
+ "givens": _safe_meta_list(getattr(scaffold, "givens", [])),
855
+ "target": _safe_meta_text(getattr(scaffold, "target", None)),
856
+ "setup_actions": _safe_meta_list(getattr(scaffold, "setup_actions", [])),
857
+ "intermediate_steps": _safe_meta_list(getattr(scaffold, "intermediate_steps", [])),
858
+ "first_move": _safe_meta_text(getattr(scaffold, "first_move", None)),
859
+ "next_hint": _safe_meta_text(getattr(scaffold, "next_hint", None)),
860
+ "common_traps": _safe_meta_list(getattr(scaffold, "common_traps", [])),
861
+ "variables_to_define": _safe_meta_list(getattr(scaffold, "variables_to_define", [])),
862
+ "equations_to_form": _safe_meta_list(getattr(scaffold, "equations_to_form", [])),
863
+ "answer_hidden": bool(getattr(scaffold, "answer_hidden", True)),
864
+ }
865
+
866
+
867
  class ConversationEngine:
868
  def __init__(
869
  self,
 
937
  transparency=transparency,
938
  )
939
 
940
+ scaffold_meta = _extract_explainer_scaffold(explainer_result)
941
+
942
  result.domain = "quant" if is_quant else "general"
943
  result.solved = False
944
  result.help_mode = "explain"
 
957
  "question_type": question_type,
958
  "classified_topic": question_topic,
959
  "explainer_used": True,
960
+ "bridge_ready": bool(getattr(explainer_result, "meta", {}).get("bridge_ready", False)),
961
+ "hint_style": getattr(explainer_result, "meta", {}).get("hint_style"),
962
+ "explainer_summary": getattr(explainer_result, "summary", None),
963
+ "explainer_teaching_points": _safe_meta_list(
964
+ getattr(explainer_result, "teaching_points", [])
965
+ ),
966
+ "scaffold": scaffold_meta,
967
  }
968
  return result
969