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):
|
||||
signal_tokens = [str(item) for item in signals if item]
|
||||
all_tokens = _merge_tokens(signal_tokens, keyword_tokens)
|
||||
if observer:
|
||||
observer("retrieve", "scanning chunks")
|
||||
candidate_lines: list[str] = []
|
||||
@ -362,11 +363,7 @@ class AnswerEngine:
|
||||
if not metric_facts:
|
||||
if observer:
|
||||
observer("retrieve", "fallback metric selection")
|
||||
fallback_candidates = _filter_lines_by_keywords(
|
||||
summary_lines,
|
||||
signal_tokens or keyword_tokens,
|
||||
max_lines=200,
|
||||
)
|
||||
fallback_candidates = _filter_lines_by_keywords(summary_lines, all_tokens, max_lines=200)
|
||||
if fallback_candidates:
|
||||
metric_facts = await _select_fact_lines(
|
||||
call_llm,
|
||||
@ -380,7 +377,7 @@ class AnswerEngine:
|
||||
if metric_facts:
|
||||
metric_facts = _ensure_token_coverage(
|
||||
metric_facts,
|
||||
signal_tokens or keyword_tokens,
|
||||
all_tokens,
|
||||
summary_lines,
|
||||
max_add=plan.max_subquestions,
|
||||
)
|
||||
@ -393,7 +390,7 @@ class AnswerEngine:
|
||||
if key_facts:
|
||||
key_facts = _ensure_token_coverage(
|
||||
key_facts,
|
||||
signal_tokens or keyword_tokens,
|
||||
all_tokens,
|
||||
summary_lines,
|
||||
max_add=plan.max_subquestions,
|
||||
)
|
||||
@ -1499,6 +1496,16 @@ def _has_keyword_overlap(lines: list[str], keywords: list[str]) -> bool:
|
||||
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(
|
||||
lines: list[str],
|
||||
tokens: list[str],
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user