atlasbot: reduce metric chunk complexity
This commit is contained in:
parent
0b6ffc9521
commit
78763d0c93
@ -1286,19 +1286,13 @@ async def _select_metric_chunks(
|
||||
chunks: list[dict[str, Any]],
|
||||
plan: ModePlan,
|
||||
) -> tuple[list[str], list[str]]:
|
||||
summary_lines = ctx.get("summary_lines") if isinstance(ctx, dict) else None
|
||||
if not isinstance(summary_lines, list):
|
||||
summary_lines, question, sub_questions, keywords, token_set = _metric_ctx_values(ctx)
|
||||
if not summary_lines or not chunks:
|
||||
return [], []
|
||||
keys = _extract_metric_keys(summary_lines)
|
||||
if not keys or not chunks:
|
||||
if not keys:
|
||||
return [], []
|
||||
max_keys = max(4, plan.max_subquestions * 2)
|
||||
question = ctx.get("question") if isinstance(ctx, dict) else ""
|
||||
sub_questions = ctx.get("sub_questions") if isinstance(ctx, dict) else []
|
||||
keywords = ctx.get("keywords") if isinstance(ctx, dict) else []
|
||||
keyword_tokens = ctx.get("keyword_tokens") if isinstance(ctx, dict) else []
|
||||
token_set = set([str(token) for token in keyword_tokens if token])
|
||||
token_set |= set(_extract_keywords(str(question), str(question), sub_questions=sub_questions, keywords=keywords))
|
||||
candidate_keys = _filter_metric_keys(keys, token_set)
|
||||
available_keys = candidate_keys or keys
|
||||
prompt = prompts.METRIC_KEYS_PROMPT.format(available="\n".join(available_keys), max_keys=max_keys)
|
||||
@ -1318,6 +1312,19 @@ async def _select_metric_chunks(
|
||||
return selected, ids
|
||||
|
||||
|
||||
def _metric_ctx_values(ctx: dict[str, Any]) -> tuple[list[str], str, list[str], list[str], set[str]]:
|
||||
summary_lines = ctx.get("summary_lines") if isinstance(ctx, dict) else None
|
||||
if not isinstance(summary_lines, list):
|
||||
return [], "", [], [], set()
|
||||
question = ctx.get("question") if isinstance(ctx, dict) else ""
|
||||
sub_questions = ctx.get("sub_questions") if isinstance(ctx, dict) else []
|
||||
keywords = ctx.get("keywords") if isinstance(ctx, dict) else []
|
||||
keyword_tokens = ctx.get("keyword_tokens") if isinstance(ctx, dict) else []
|
||||
token_set = set([str(token) for token in keyword_tokens if token])
|
||||
token_set |= set(_extract_keywords(str(question), str(question), sub_questions=sub_questions, keywords=keywords))
|
||||
return summary_lines, str(question), sub_questions, keywords, token_set
|
||||
|
||||
|
||||
def _extract_metric_keys(lines: list[str]) -> list[str]:
|
||||
keys: list[str] = []
|
||||
for line in lines:
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user