From 08ac598181aa636d8789d7a9758852173b62c579 Mon Sep 17 00:00:00 2001 From: Brad Stein Date: Wed, 28 Jan 2026 02:53:43 -0300 Subject: [PATCH] atlasbot: streamline quick answers --- services/comms/scripts/atlasbot/bot.py | 120 ++++++++++--------------- 1 file changed, 47 insertions(+), 73 deletions(-) diff --git a/services/comms/scripts/atlasbot/bot.py b/services/comms/scripts/atlasbot/bot.py index ffc8a5c..6f18b9e 100644 --- a/services/comms/scripts/atlasbot/bot.py +++ b/services/comms/scripts/atlasbot/bot.py @@ -3562,14 +3562,10 @@ def _open_ended_multi( fact_lines: list[str], fact_meta: dict[str, dict[str, Any]], history_lines: list[str], - mode: str, state: ThoughtState | None = None, ) -> str: - model = _model_for_mode(mode) - if mode == "fast": - total_steps = 4 - else: - total_steps = 9 + model = _model_for_mode("deep") + total_steps = _open_ended_total_steps("deep") if state: state.total_steps = total_steps @@ -3591,52 +3587,6 @@ def _open_ended_multi( focus_tags = set(_ALLOWED_INSIGHT_TAGS) avoid_tags = _history_focus_tags(history_lines) if (subjective or _is_followup_query(prompt)) else set() - if mode == "fast": - primary_ids = _open_ended_select_facts( - prompt, - fact_pack=fact_pack, - fact_meta=fact_meta, - history_lines=history_lines, - focus_tags=focus_tags, - avoid_tags=avoid_tags, - avoid_fact_ids=[], - count=3, - subjective=subjective, - state=state, - step=2, - model=model, - ) - focus_label = interpretation.get("focus_label") or "primary angle" - candidate = _open_ended_candidate( - prompt, - focus=str(focus_label), - fact_pack=fact_pack, - history_lines=history_lines, - subjective=subjective, - tone=str(tone), - allow_list=allow_list, - state=state, - step=3, - fact_hints=primary_ids, - model=model, - ) - reply = _open_ended_synthesize( - prompt, - fact_pack=fact_pack, - history_lines=history_lines, - candidates=[candidate], - subjective=subjective, - tone=str(tone), - allow_list=allow_list, - state=state, - step=4, - model=model, - critique=None, - ) - if state: - state.update("done", step=total_steps) - return reply - angles = _open_ended_plan( prompt, fact_pack=fact_pack, @@ -3757,41 +3707,52 @@ def _open_ended_multi( def _open_ended_total_steps(mode: str) -> int: if mode == "fast": - return 4 + return 2 return 9 def _fast_fact_lines( fact_lines: list[str], fact_meta: dict[str, dict[str, Any]], - fact_ids: list[str], + *, + focus_tags: set[str], + avoid_tags: set[str], + limit: int = 10, ) -> list[str]: - if not fact_ids: - return fact_lines - selected = [ - line - for line in fact_lines - if fact_meta.get(line, {}).get("id") in set(fact_ids) - ] - return selected or fact_lines + if not fact_lines: + return [] + selected: list[str] = [] + for idx, line in enumerate(fact_lines): + fid = f"F{idx + 1}" + tags = set(fact_meta.get(fid, {}).get("tags") or []) + if focus_tags and not (focus_tags & tags): + continue + if avoid_tags and (avoid_tags & tags): + continue + selected.append(line) + if len(selected) >= limit: + break + if selected: + return selected + trimmed = fact_lines[:limit] + return trimmed or fact_lines def _open_ended_fast_single( prompt: str, *, - fact_pack: str, - history_lines: list[str], + context: str, state: ThoughtState | None = None, model: str, ) -> str: if state: - state.update("drafting", step=2, note="summarizing") - context = fact_pack + state.update("drafting", step=1, note="summarizing") reply = _ollama_call( ("atlasbot_fast", "atlasbot_fast"), prompt, context=context, use_history=False, + system_override=_open_ended_system(), model=model, ) if state: @@ -3808,14 +3769,28 @@ def _open_ended_fast( history_lines: list[str], state: ThoughtState | None = None, ) -> str: - return _open_ended_multi( + model = _model_for_mode("fast") + subjective = _is_subjective_query(prompt) + focus_tags = _preferred_tags_for_prompt(prompt) + if not focus_tags and subjective: + focus_tags = set(_ALLOWED_INSIGHT_TAGS) + avoid_tags = _history_focus_tags(history_lines) if (subjective or _is_followup_query(prompt)) else set() + selected_lines = _fast_fact_lines( + fact_lines, + fact_meta, + focus_tags=focus_tags, + avoid_tags=avoid_tags, + ) + selected_meta = _fact_pack_meta(selected_lines) + selected_pack = _fact_pack_text(selected_lines, selected_meta) + context = _append_history_context(selected_pack, history_lines) + if state: + state.total_steps = _open_ended_total_steps("fast") + return _open_ended_fast_single( prompt, - fact_pack=fact_pack, - fact_lines=fact_lines, - fact_meta=fact_meta, - history_lines=history_lines, - mode="fast", + context=context, state=state, + model=model, ) @@ -3834,7 +3809,6 @@ def _open_ended_deep( fact_lines=fact_lines, fact_meta=fact_meta, history_lines=history_lines, - mode="deep", state=state, )