Просмотр исходного кода

Merge branch 'main' of https://git.yishihui.com/howard/Agent

guantao 22 часов назад
Родитель
Сommit
d705f57bcc

+ 9 - 9
examples/process_pipeline/prompts/apply_to_grounding.prompt

@@ -1,31 +1,31 @@
-你是内容树映射助手。现在是 Stage 2:把 apply_to_draft 映射为精确 apply_to,并为每个 fragment/query 生成一个 ideal_path
+你是内容树映射助手。现在是 Stage 2:把 apply_to_draft 映射为精确 apply_to,并为每个 fragment/query 生成一个 suggest_apply_to
 
 
 # 绝对规则
 # 绝对规则
 
 
 - 不要调用任何工具,不要查树;只能使用本 prompt 中给出的完整内容树。
 - 不要调用任何工具,不要查树;只能使用本 prompt 中给出的完整内容树。
 - 只处理:fragments 数组中的每一条 fragment。
 - 只处理:fragments 数组中的每一条 fragment。
-- **只输出 apply_to 和 ideal_path 字段**,不要回显 inputs、outputs、action、body、effects、stage、tools、criterion、unstructured_what 等字段。
+- **只输出 apply_to 和 suggest_apply_to 字段**,不要回显 inputs、outputs、action、body、effects、stage、tools、criterion、unstructured_what 等字段。
 - apply_to.实质 只能选择 source_type=实质 的节点;apply_to.形式 只能选择 source_type=形式 的节点。
 - apply_to.实质 只能选择 source_type=实质 的节点;apply_to.形式 只能选择 source_type=形式 的节点。
 - category_id 和 category_path 必须逐字来自内容树里的 id/path。
 - category_id 和 category_path 必须逐字来自内容树里的 id/path。
 - element 只有在该节点 elements 中逐字存在时才能填写;否则省略 element 或填 null。
 - element 只有在该节点 elements 中逐字存在时才能填写;否则省略 element 或填 null。
 - 每侧 1-3 项即可。优先选择最贴近 apply_to_draft 的节点;不确定时选较粗分类,不要编造。
 - 每侧 1-3 项即可。优先选择最贴近 apply_to_draft 的节点;不确定时选较粗分类,不要编造。
 - rationale 用一句话说明 draft 短语为何落在该节点。
 - rationale 用一句话说明 draft 短语为何落在该节点。
-- **每个 fragment/query 必须包含且只能包含一个 ideal_path**,不得在 apply_to 条目内输出 ideal_path
+- **每个 fragment/query 必须包含且只能包含一个 suggest_apply_to**,不得在 apply_to 条目内输出 suggest_apply_to
 
 
-# ideal_path 规则
+# suggest_apply_to 规则
 
 
-每个 fragment/query 必须输出一个 ideal_path,表示该 query 的整体描述"理想上应该挂在哪个路径"(即使树上不存在):
+每个 fragment/query 必须输出一个 suggest_apply_to,表示该 query 的整体描述"理想上应该挂在哪个路径"(即使树上不存在):
 - 先完成 apply_to.实质 和 apply_to.形式 的真实树节点映射。
 - 先完成 apply_to.实质 和 apply_to.形式 的真实树节点映射。
 - 综合 apply_to_draft 的语义,以及你选出的真实 category_path,判断这个 query 最理想的单一路径。
 - 综合 apply_to_draft 的语义,以及你选出的真实 category_path,判断这个 query 最理想的单一路径。
 - 优先以最能代表 query 核心语义的真实 category_path 为基准;如果实质和形式都存在,通常优先以实质路径为基准,形式路径只作为命名和细化参考。
 - 优先以最能代表 query 核心语义的真实 category_path 为基准;如果实质和形式都存在,通常优先以实质路径为基准,形式路径只作为命名和细化参考。
 - 从根往下逐层检查基准 category_path 的每一层,判断该层是否仍然准确描述了 query 的语义。
 - 从根往下逐层检查基准 category_path 的每一层,判断该层是否仍然准确描述了 query 的语义。
 - 找到第一个"不够精确或有偏差"的层级,从该层级开始续写(替换该层及其后的所有层)。续写的风格应当与路径中的其他层级相符合,至少词性应当一致。
 - 找到第一个"不够精确或有偏差"的层级,从该层级开始续写(替换该层及其后的所有层)。续写的风格应当与路径中的其他层级相符合,至少词性应当一致。
-- 如果基准 category_path 所有层级都准确,且 query 没有更细的信息,则 ideal_path = 基准 category_path。
+- 如果基准 category_path 所有层级都准确,且 query 没有更细的信息,则 suggest_apply_to = 基准 category_path。
 - 如果基准 category_path 所有层级都准确,但 query 还有更细的信息未体现,则在末尾续写 1-3 个层级。
 - 如果基准 category_path 所有层级都准确,但 query 还有更细的信息未体现,则在末尾续写 1-3 个层级。
 - 续写部分命名风格参考下方"邻近路径参考"(两字名词、层级粒度保持一致)。
 - 续写部分命名风格参考下方"邻近路径参考"(两字名词、层级粒度保持一致)。
-- 续写部分可以是树上不存在的节点,这正是 ideal_path 的意义。
+- 续写部分可以是树上不存在的节点,这正是 suggest_apply_to 的意义。
 
 
-# 邻近路径参考(向量搜索得到,仅供 ideal_path 命名风格参考,不可用于 category_id/category_path)
+# 邻近路径参考(向量搜索得到,仅供 suggest_apply_to 命名风格参考,不可用于 category_id/category_path)
 
 
 {reference_paths}
 {reference_paths}
 
 
@@ -39,7 +39,7 @@
 
 
 # 输出格式
 # 输出格式
 
 
-输出 `{ "fragments": [ { "fragment_id": "f_s1_0", "apply_to": {...}, "ideal_path": "..." } ] }`
+输出 `{ "fragments": [ { "fragment_id": "f_s1_0", "apply_to": {...}, "suggest_apply_to": "..." } ] }`
 
 
 - fragments 数组长度和输入 fragments 保持一致。
 - fragments 数组长度和输入 fragments 保持一致。
 - 每个输出项必须带原输入的 fragment_id,逐字照抄。
 - 每个输出项必须带原输入的 fragment_id,逐字照抄。

+ 2 - 2
examples/process_pipeline/prompts/apply_to_grounding_fragment.schema.json

@@ -9,11 +9,11 @@
       "type": "array",
       "type": "array",
       "items": {
       "items": {
         "type": "object",
         "type": "object",
-        "required": ["fragment_id", "apply_to", "ideal_path"],
+        "required": ["fragment_id", "apply_to", "suggest_apply_to"],
         "additionalProperties": false,
         "additionalProperties": false,
         "properties": {
         "properties": {
           "fragment_id": { "type": "string", "minLength": 1 },
           "fragment_id": { "type": "string", "minLength": 1 },
-          "ideal_path": { "type": "string", "minLength": 1 },
+          "suggest_apply_to": { "type": "string", "minLength": 1 },
           "apply_to": {
           "apply_to": {
             "type": "object",
             "type": "object",
             "required": ["实质", "形式"],
             "required": ["实质", "形式"],

+ 4 - 4
examples/process_pipeline/script/apply_to_grounding.py

@@ -330,15 +330,15 @@ async def ground_single_case(
             if frag_idx is None or frag_idx in used_indices:
             if frag_idx is None or frag_idx in used_indices:
                 continue
                 continue
             apply_to = grounded_frag.get("apply_to")
             apply_to = grounded_frag.get("apply_to")
-            ideal_path = grounded_frag.get("ideal_path")
+            suggest_apply_to = grounded_frag.get("suggest_apply_to")
             if (
             if (
                 apply_to is not None
                 apply_to is not None
-                and isinstance(ideal_path, str)
-                and ideal_path.strip()
+                and isinstance(suggest_apply_to, str)
+                and suggest_apply_to.strip()
                 and isinstance(updated_fragments[frag_idx], dict)
                 and isinstance(updated_fragments[frag_idx], dict)
             ):
             ):
                 updated_fragments[frag_idx]["apply_to"] = apply_to
                 updated_fragments[frag_idx]["apply_to"] = apply_to
-                updated_fragments[frag_idx]["ideal_path"] = ideal_path.strip()
+                updated_fragments[frag_idx]["suggest_apply_to"] = suggest_apply_to.strip()
                 updated_fragments[frag_idx].pop("apply_to_draft", None)
                 updated_fragments[frag_idx].pop("apply_to_draft", None)
                 used_indices.add(frag_idx)
                 used_indices.add(frag_idx)