1.6 KiB
1.6 KiB
任务基本信息
- 任务:方案A:同一聊天框多话题时避免上下文污染(新话题禁用
dialog_context) - 项目:
backman-camel(FastAPI Text2SQL API) - 范围:后端接口
/g3sb/api/nl/chat、/g3sb/api/nl/chat/stream的会话上文注入策略
改动说明
- 新增:
backend/utils/dialog_context.py增加is_likely_follow_up(user_text),用于轻量判断是否为续问/沿用口径。 - 调整:
api_server.py_load_session_text2sql_context(request, user_text)在构造上文时:- 续问:注入最近 2 轮会话摘要
- 新话题:不注入历史摘要(
max_pairs=0)
- 目的:减少多话题情况下历史 SQL/条件回流导致的串话与错误 SQL。
影响与风险
- 破坏性变更:否(对外 API 不变)
- 风险等级:中
- 可能将少量“隐式续问”误判为新话题,导致指代消解能力下降
- 但能显著降低跨话题上下文污染导致的 SQL 错误
- 回滚:回退本次改动即可恢复旧策略(或将
max_pairs恢复为默认值 8)
测试与验证
- 建议手工验证:
- 同一 session:先做话题A数据查询,再提一个完全不同话题B(无“再/按上面”等续问词),应不再引用 A 的表/过滤条件。
- 同一 session:首轮查询后,第二轮使用“再/按上面/沿用口径”等续问词,应仍能续用上轮口径生成 SQL。
后续事项
- 若误判率偏高,可迭代
is_likely_follow_up规则(补充关键词/短语),或升级为轻量 LLM 判别器(方案B)。