| name | constraint_satisfaction |
| description | 当问题包含多个必须同时满足的限定条件时,如何系统拆解并交叉验证以锁定唯一答案 |
| trigger | 当查询语句中出现“and、which、known for、that、who”等连接多个限定条件的词汇,或问题本身包含≥2个独立属性/事件/身份要求时 |
| success_rate | 0 |
| status | seed |
| trigger_conditions | {"domain":["general"],"entity_types":["entity"],"attribute_types":["constraint_attrs"],"coverage_gap_pattern":"multi_constraint_filter"} |
| cost_hint | mid |
| effectiveness_score | 0 |
constraint_satisfaction
目标
解决“多条件交集”类搜索问题:用户给出的查询包含≥2个必须同时成立的限定条件(时间、身份、事件、属性、作品等),需要逐一验证并找到唯一满足全部条件的实体或答案。
适用场景
- “哪位美国画家在1960年代创作了6幅关于宙斯与凡人相遇的作品,并曾拥有一辆修复的17世纪汽车?”
- “哪条美国国道同时经过密歇根州St. Clair县的Clay Township,并连接到佛罗里达州Jacksonville?”
- “哪个国际组织以调解政府间国际争端而闻名?”
- “哪位非裔美国音乐家在1930年代从寄宿机构逃跑,后来成为1950年代著名流行二人组的一半?”
- “哪些蛋白质同时具备结构功能和酶功能?”
不适用场景
- 单属性查找(如“《蒙娜丽莎》的作者是谁?”)
- 开放式列举(如“列举所有印象派画家”)
- 主观评价(如“最好看的科幻电影”)
核心原则
- 先拆后合:将复合问题拆成独立条件,分别验证后再交叉比对。
- 先宽后窄:先用最独特或最易验证的条件缩小范围,再逐步叠加剩余条件。
- 交叉验证:对候选答案反向检查是否满足所有条件,避免漏掉隐含约束。
- 保留证据:每一步记录来源,便于回溯和二次确认。
- 稀有优先验证:若已产生候选假设,优先验证最独特、出现概率最低的条件(如特定死因、罕见经历),以最小成本确认或排除假设,避免在常见属性上浪费预算。
标准执行流程
-
条件拆解
用“且/which/that/who”等连词为界,把问题拆成独立条件,编号为C1、C2…Cn。
完成标志:每个条件可独立成句,无歧义。
-
优先级排序
按“独特性→可检索性→时间成本”排序,选出最可能快速缩小范围的Top-2条件。
判断标准:该条件在搜索引擎结果中是否≤10个候选实体。
-
首轮检索
用最高优先级条件构造查询,获取候选列表。
模板:"{条件关键词}" site:wikipedia.org 或 "{条件关键词}" list
-
交叉过滤
用剩余条件逐一过滤候选列表,每步保留满足当前条件的子集。
技巧:用“AND”或“site:”组合多个关键词,如"{C2关键词} {候选实体}"
进阶策略:若条件验证涉及多步推理或复杂事实核查(如距离计算、排他性证明),可派发子代理(Sub-agent)执行专项核查任务,避免主流程陷入搜索循环。
-
反向验证
对最终候选答案,逐条检查原始问题中所有条件是否全部满足。
工具:打开来源页面,Ctrl+F查找关键词。
-
证据链记录
为每个条件保存1条最权威来源URL,形成“条件-来源”映射表。
格式:C1: URL1, C2: URL2…
-
结果输出
给出唯一答案,并附“条件-来源”表,方便复核。
检索策略模板
- 单条件锁定:
"{独特条件}" site:en.wikipedia.org
例:"six works Zeus mortal woman 1960s" site:en.wikipedia.org
- 交叉验证:
"{候选实体} {剩余条件}"
例:"George Segal 17th century car"
- 假设快速验证:
"{候选实体} {最独特条件关键词}"
例:假设候选为保罗·高更,优先搜 "Paul Gauguin father heart attack" 验证罕见条件,而非 "Paul Gauguin children" 验证常见条件。
- 子代理专项核查:
DISPATCH task="收集证据验证:1. [条件1] 2. [条件2] ..."
例:DISPATCH task="收集以下信息并添加为证据:1. 夏布利是否只产霞多丽 2. 夏布利到欧塞尔的距离是否在20-40公里"
适用场景:当主流程遇到复杂的事实性约束(如地理距离、特定属性排他性)难以通过单一搜索直接确认时,利用子代理并行处理核查任务。