Files
Profeto/src/llm/context_builder.py
T
shangfangjian 44816794d3 refactor: context_builder 按 slice 拆到 src/llm/slices/ 包
单文件拆分(仅搬迁无逻辑修改):
- common.py    共享类型/头信息/_outcome/_is_stats_available
- form.py      form_slice + _get_form
- h2h.py       h2h_slice + _get_h2h
- stats.py     stats_slice(复用 form._get_form)
- home_away.py home_away_slice + _get_home_away
- standings.py standings_slice
- aggregate.py build_context

context_builder.py 改为纯 re-export 门面,公开签名不变。
同步修复测试 patch 目标(p0_home_away/h2h_perspective/multi_agent_cutoff)
与 regressions 源码断言(读 slices/*.py)。

全量测试 270 通过。
2026-09-22 01:33:14 +08:00

44 lines
1.9 KiB
Python

"""上下文构建器:数据切片 + 拼接(聚合门面)。
实现按 slice 拆分(单文件 → slices 包),本模块只做再导出:
- 切片函数: 每个领域 agent 一个数据切片 → src/llm/slices/{form,h2h,stats,home_away,standings}.py
- 共享类型/头信息/查询助手 → src/llm/slices/common.py
- build_context: 单 agent 路径,拼接全部切片(行为与旧版一致) → src/llm/slices/aggregate.py
multi-agent 路径由 agents/orchestrator.py 调用切片函数,每个专家只拿自己的切片。
性能说明:
build_context 创建一个共享 session 并传给所有切片函数,
避免每个切片独立创建 session —— 回测 20 场并发时,
5 个切片 × 20 场 = 100 个连接会耗尽连接池(pool_size=15)。
消费方(路由/orchestrator/tests)仍从本模块 import,签名与拆分前完全一致。
"""
from __future__ import annotations
# ── 共享类型与基础(判空/赛果/统计可用性) ──
from src.llm.slices.common import ( # noqa: F401
MatchContext,
MatchHeader,
SliceResult,
_is_stats_available,
_outcome,
header_text,
load_match_header,
)
# ── 领域切片 ──
from src.llm.slices.form import form_slice # noqa: F401
from src.llm.slices.h2h import h2h_slice # noqa: F401
from src.llm.slices.home_away import home_away_slice # noqa: F401
from src.llm.slices.standings import standings_slice # noqa: F401
from src.llm.slices.stats import stats_slice # noqa: F401
# ── 底层查询助手(切片函数共用;orchestrator/tests 直接引用) ──
from src.llm.slices.form import _get_form # noqa: F401
from src.llm.slices.h2h import _get_h2h # noqa: F401
from src.llm.slices.home_away import _get_home_away # noqa: F401
# ── 单 agent 聚合入口 ──
from src.llm.slices.aggregate import build_context # noqa: F401