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]],
|
chunks: list[dict[str, Any]],
|
||||||
plan: ModePlan,
|
plan: ModePlan,
|
||||||
) -> tuple[list[str], list[str]]:
|
) -> tuple[list[str], list[str]]:
|
||||||
summary_lines = ctx.get("summary_lines") if isinstance(ctx, dict) else None
|
summary_lines, question, sub_questions, keywords, token_set = _metric_ctx_values(ctx)
|
||||||
if not isinstance(summary_lines, list):
|
if not summary_lines or not chunks:
|
||||||
return [], []
|
return [], []
|
||||||
keys = _extract_metric_keys(summary_lines)
|
keys = _extract_metric_keys(summary_lines)
|
||||||
if not keys or not chunks:
|
if not keys:
|
||||||
return [], []
|
return [], []
|
||||||
max_keys = max(4, plan.max_subquestions * 2)
|
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)
|
candidate_keys = _filter_metric_keys(keys, token_set)
|
||||||
available_keys = candidate_keys or keys
|
available_keys = candidate_keys or keys
|
||||||
prompt = prompts.METRIC_KEYS_PROMPT.format(available="\n".join(available_keys), max_keys=max_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
|
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]:
|
def _extract_metric_keys(lines: list[str]) -> list[str]:
|
||||||
keys: list[str] = []
|
keys: list[str] = []
|
||||||
for line in lines:
|
for line in lines:
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user