atlasbot: merge signal and keyword tokens
This commit is contained in:
parent
a77e041d7c
commit
b69230973a
@ -327,6 +327,7 @@ class AnswerEngine:
|
|||||||
)
|
)
|
||||||
if isinstance(signals, list):
|
if isinstance(signals, list):
|
||||||
signal_tokens = [str(item) for item in signals if item]
|
signal_tokens = [str(item) for item in signals if item]
|
||||||
|
all_tokens = _merge_tokens(signal_tokens, keyword_tokens)
|
||||||
if observer:
|
if observer:
|
||||||
observer("retrieve", "scanning chunks")
|
observer("retrieve", "scanning chunks")
|
||||||
candidate_lines: list[str] = []
|
candidate_lines: list[str] = []
|
||||||
@ -362,11 +363,7 @@ class AnswerEngine:
|
|||||||
if not metric_facts:
|
if not metric_facts:
|
||||||
if observer:
|
if observer:
|
||||||
observer("retrieve", "fallback metric selection")
|
observer("retrieve", "fallback metric selection")
|
||||||
fallback_candidates = _filter_lines_by_keywords(
|
fallback_candidates = _filter_lines_by_keywords(summary_lines, all_tokens, max_lines=200)
|
||||||
summary_lines,
|
|
||||||
signal_tokens or keyword_tokens,
|
|
||||||
max_lines=200,
|
|
||||||
)
|
|
||||||
if fallback_candidates:
|
if fallback_candidates:
|
||||||
metric_facts = await _select_fact_lines(
|
metric_facts = await _select_fact_lines(
|
||||||
call_llm,
|
call_llm,
|
||||||
@ -380,7 +377,7 @@ class AnswerEngine:
|
|||||||
if metric_facts:
|
if metric_facts:
|
||||||
metric_facts = _ensure_token_coverage(
|
metric_facts = _ensure_token_coverage(
|
||||||
metric_facts,
|
metric_facts,
|
||||||
signal_tokens or keyword_tokens,
|
all_tokens,
|
||||||
summary_lines,
|
summary_lines,
|
||||||
max_add=plan.max_subquestions,
|
max_add=plan.max_subquestions,
|
||||||
)
|
)
|
||||||
@ -393,7 +390,7 @@ class AnswerEngine:
|
|||||||
if key_facts:
|
if key_facts:
|
||||||
key_facts = _ensure_token_coverage(
|
key_facts = _ensure_token_coverage(
|
||||||
key_facts,
|
key_facts,
|
||||||
signal_tokens or keyword_tokens,
|
all_tokens,
|
||||||
summary_lines,
|
summary_lines,
|
||||||
max_add=plan.max_subquestions,
|
max_add=plan.max_subquestions,
|
||||||
)
|
)
|
||||||
@ -1499,6 +1496,16 @@ def _has_keyword_overlap(lines: list[str], keywords: list[str]) -> bool:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def _merge_tokens(primary: list[str], secondary: list[str]) -> list[str]:
|
||||||
|
merged: list[str] = []
|
||||||
|
for token in primary + secondary:
|
||||||
|
if not token:
|
||||||
|
continue
|
||||||
|
if token not in merged:
|
||||||
|
merged.append(token)
|
||||||
|
return merged
|
||||||
|
|
||||||
|
|
||||||
def _ensure_token_coverage(
|
def _ensure_token_coverage(
|
||||||
lines: list[str],
|
lines: list[str],
|
||||||
tokens: list[str],
|
tokens: list[str],
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user