| # 系统升级 Prompt:从 Graph Router 到 Graph Planning Engine |
|
|
| ## 任务目标 |
|
|
| 将现有系统从 **Server-level retrieval** 升级为 **Operation-level multi-hop path retrieval**。 |
|
|
| ## 当前系统状态 |
|
|
| - 图规模:910 servers,3451 tools,4398 nodes,25437 edges |
| - 现有节点类型:server、tool、category、stage、datatype(14类)、capability(12类) |
| - 现有边类型:consumes、produces、implements、follows |
| - 当前逻辑:Query → keywords/capabilities/datatypes → Server scoring → Tool selection |
|
|
| ## 需要修改的核心内容 |
|
|
| ### 1. 新增 Operation 节点层 |
|
|
| **问题**:当前 capability 太粗(如 `pathway_enrichment`),不适合多跳规划 |
|
|
| **修改**:新增 `operation` 节点,粒度示例: |
| ``` |
| count_normalization |
| differential_expression |
| gene_filtering |
| gene_id_conversion |
| kegg_enrichment |
| go_enrichment |
| pathway_merge |
| csv_export |
| ``` |
|
|
| **边**: |
| ``` |
| tool --implements--> operation |
| operation --accepts--> datatype |
| operation --produces--> datatype |
| operation --requires--> constraint |
| ``` |
|
|
| ### 2. 扩展 DataType 节点 |
|
|
| **问题**:当前 datatype 只有 14 类,缺少中间类型 |
|
|
| **修改**:扩展 datatype 列表,建议: |
| ``` |
| raw_count_matrix |
| normalized_count_matrix |
| sample_metadata |
| differential_expression_table |
| significant_gene_list |
| ranked_gene_list |
| gene_symbol_list |
| entrez_gene_list |
| kegg_enrichment_table |
| go_enrichment_table |
| merged_pathway_table |
| ``` |
|
|
| **区分物理格式和语义类型**: |
| ``` |
| datatype 只表示语义类型,不表示 csv/tsv 等格式 |
| ``` |
|
|
| ### 3. 新增 Constraint 节点 |
|
|
| **修改**:添加约束节点用于路径过滤 |
| ``` |
| organism_mouse |
| bulk_rna_seq |
| requires_raw_integer_counts |
| requires_entrez_id |
| requires_replicates |
| paired_end_reads |
| ``` |
|
|
| **边**: |
| ``` |
| operation --requires--> constraint |
| tool --supports--> constraint |
| ``` |
|
|
| ### 4. 新增 Workflow Motif 节点 |
|
|
| **修改**:添加常见工作流模板作为路径先验 |
| ``` |
| motif.bulk_rnaseq_de_kegg |
| motif.scRNA_marker_enrichment |
| motif.metagenomics_taxonomic_profile |
| ``` |
|
|
| **边**: |
| ``` |
| motif --contains--> operation |
| ``` |
|
|
| ### 5. 重写检索逻辑 |
|
|
| **当前**: |
| ```python |
| # 直接检索 server |
| selected_servers = rank_servers(query, keywords, capabilities, datatypes) |
| ``` |
|
|
| **改为**: |
| ```python |
| def multi_hop_planning(query, input_profile): |
| # Step 1: 解析任务规格 |
| task_spec = parse_task_spec(query, input_profile) |
| # 输出:input_types, target_output, constraints, required_operations |
| |
| # Step 2: 检索 operation anchors |
| anchors = retrieve_operation_anchors(task_spec.operations) |
| |
| # Step 3: 类型约束路径搜索 |
| candidate_paths = constrained_path_search( |
| source_types=task_spec.input_types, |
| target_type=task_spec.target_output, |
| must_pass=anchors, |
| constraints=task_spec.constraints, |
| max_hops=8 |
| ) |
| |
| # Step 4: 路径评分排序 |
| ranked_paths = rank_paths(candidate_paths, task_spec) |
| |
| # Step 5: 绑定工具 |
| tool_plan = bind_tools_to_operations(ranked_paths[0], task_spec.constraints) |
| |
| # Step 6: 合成可执行 DAG |
| dag = synthesize_dag(tool_plan, task_spec.workflow_type) |
| |
| return dag |
| ``` |
|
|
| ### 6. 实现路径搜索算法 |
|
|
| **推荐从简单版本开始**:BFS over DataType-Operation 二部图 |
|
|
| ```python |
| # 图结构:DataType → Operation → DataType |
| def search_path(source_types, target_type, graph, max_hops=8): |
| # BFS from source_types |
| # 每个节点是 (current_datatype, path_operations) |
| # 扩展:operation 接受当前 datatype → 产生新 datatype |
| # 剪枝:超过 max_hops、违反 constraints、重复访问 |
| ``` |
|
|
| **升级版**:Beam Search 或 A* Search |
|
|
| ### 7. 修改 Query Parser 输出格式 |
|
|
| **当前 debug_report 输出**: |
| ```json |
| { |
| "keywords": [], |
| "capabilities": [], |
| "datatypes": [], |
| "stages": [], |
| "workflow_type": "single_step" |
| } |
| ``` |
| |
| **修改为**: |
| ```json |
| { |
| "task_spec": { |
| "input_types": ["raw_count_matrix", "sample_metadata"], |
| "target_output": {"semantic_type": "comparative_pathway_table"}, |
| "constraints": {"organism": "mouse", "assay": "bulk_rna_seq"}, |
| "required_operations": ["differential_expression", "kegg_enrichment"], |
| "workflow_type": "multi_branch_join" |
| }, |
| "operation_anchors": ["differential_expression", "kegg_enrichment"] |
| } |
| ``` |
| |
| ### 8. 添加 4 类索引 |
| |
| ```python |
| # 1. Operation Semantic Index (query → operation) |
| # 2. DataType Recognition Index (file/columns → datatype) |
| # 3. Path/Motif Index (常见路径缓存) |
| # 4. Tool Binding Index (operation → candidate tools) |
| ``` |
| |
| ## 实现优先级 |
| |
| ### Phase 1(优先完成) |
| 1. 新增 operation 节点和边 |
| 2. 扩展 datatype 到 30+ 类 |
| 3. 实现 BFS 路径搜索(仅 operation-datatype 二部图) |
| |
| ### Phase 2 |
| 4. 添加 constraint 节点 |
| 5. 实现路径评分函数 |
| 6. 修改 Query Parser 输出格式 |
| |
| ### Phase 3 |
| 7. 添加 workflow motif |
| 8. 实现 DAG 合成(支持分支-合并) |
| 9. 添加 4 类索引优化 |
| |
| ## 测试用例 |
| |
| 先支持这 5 类多跳任务: |
| 1. count_matrix → DE table → pathway enrichment table |
| 2. FASTQ → QC → alignment → count matrix |
| 3. VCF → annotation → variant summary |
| 4. AnnData → clustering → marker genes → enrichment |
| 5. metagenomic reads → taxonomy → differential abundance |
| |
| ## 关键设计原则 |
| |
| 1. **Operation-first, tool-later**:先找 operation path,再绑定具体 tool |
| 2. **Type-constrained**:路径合法性由 input/output datatype 决定 |
| 3. **Constraint-aware**:organism、assay 等约束用于路径剪枝 |
| 4. **Motif-guided**:常见 workflow 作为先验加速搜索 |
| 5. **可验证中间状态**:每一步都有明确的 datatype 转换 |
| |
| ## 预期效果 |
| |
| 升级后系统从: |
| ``` |
| Query → Server ranking → Tool selection |
| ``` |
| 变为: |
| ``` |
| Query → Goal decomposition → Operation path search → Tool binding → Executable DAG |
| ``` |
| |
| 核心表述: |
| > "Instead of retrieving isolated MCP servers, the system performs multi-hop subgraph retrieval over a biomedical capability graph, searching for executable operation paths that connect input data types to target outputs while satisfying constraints." |