Skip to content

binison/TianChi--SearchAgent

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🔬 DeepSearch Agent - 天池SearchAgent高校赛道复试第13名

天池竞赛 复赛排名 平台 License

天池 Research Agent 挑战赛 复赛第13名方案

生产级多智能体共识系统,实现深度研究与事实核验,支持自动化多源证据收集。

小白第一次接触Agent赛道,由于时间问题,并没有用代码流,后续可改成代码流以获取更高自由度

English Documentation


🏆 竞赛成绩

  • 赛事:阿里云天池 - Search Agent 挑战赛
  • 成绩:复赛 第13名
  • 核心方案:基于多智能体共识的深度搜索框架

✨ 核心特性

特性 说明
🧠 多模型共识架构 三重并行推理,具备冲突检测与解决能力
🔍 多引擎搜索集成 阿里云 IQS、Google、PubMed、arXiv、Bocha 统一调度
📚 学术源验证 自动检测并检索科学论文
🌐 知识图谱集成 百度百科实体抽取与验证
🔄 迭代深度研究 自纠错循环,最多支持 8 轮验证迭代
⚖️ 证据权重系统 基于来源可靠性的分级(官方 > 学术 > 新闻 > 社交)
🎯 格式感知输出 尊重用户指定格式(仅数字、英文名等)

🏗️ 系统架构

┌─────────────────────────────────────────────────────────────────┐
│                         输入层                                   │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────────┐  │
│  │    问题     │  │   对话历史  │  │       搜索历史          │  │
│  └──────┬──────┘  └─────────────┘  └─────────────────────────┘  │
└─────────┼────────────────────────────────────────────────────────┘
          │
          ▼
┌─────────────────────────────────────────────────────────────────┐
│              并行推理层(3路)                                    │
│  ┌──────────────┐ ┌──────────────┐ ┌──────────────┐             │
│  │   推理器 #1  │ │   推理器 #2  │ │   推理器 #3  │             │
│  │  (深度思考)  │ │  (深度思考)  │ │  (深度思考)  │             │
│  └──────┬───────┘ └──────┬───────┘ └──────┬───────┘             │
│         └────────────────┼────────────────┘                     │
└──────────────────────────┼──────────────────────────────────────┘
                           │
                           ▼
┌─────────────────────────────────────────────────────────────────┐
│                 共识与冲突检测层                                  │
│              ┌─────────────────────────────┐                    │
│              │      跨模型共识仲裁         │                    │
│              │         评判节点            │                    │
│              └─────────────┬───────────────┘                    │
│                            │                                    │
│              ┌─────────────┴───────────────┐                    │
│              ▼                             ▼                    │
│    ┌─────────────────┐         ┌─────────────────────┐         │
│    │    达成共识     │         │      发现冲突       │         │
│    │  → 直接输出答案 │         │    → 进入搜索循环   │         │
│    │                 │         │                     │         │
│    └─────────────────┘         └──────────┬──────────┘         │
└───────────────────────────────────────────┼────────────────────┘
                                            │
                                            ▼
┌─────────────────────────────────────────────────────────────────┐
│              🔁 迭代研究循环(最多8轮)                           │
│                                                                 │
│  ┌─────────────────────────────────────────────────────────┐   │
│  │  步骤 1:搜索策略生成                                    │   │
│  │  • 交叉验证查询(A vs B对比)                            │   │
│  │  • 溯源查询(官方文档、论文)                            │   │
│  │  • 时效对齐(最新版本)                                  │   │
│  └────────────────────────┬────────────────────────────────┘   │
│                           │                                     │
│  ┌────────────────────────▼────────────────────────────────┐   │
│  │  步骤 2:多引擎并行搜索                                   │   │
│  │  ┌──────────┐ ┌──────────┐ ┌─────────┐ ┌──────────────┐  │   │
│  │  │阿里云 IQS│ │  Google  │ │ PubMed  │ │    arXiv     │  │   │
│  │  │  (网页)  │ │(SerpAPI) │ │ (医学)  │ │   (论文)     │  │   │
│  │  └────┬─────┘ └────┬─────┘ └────┬────┘ └──────┬───────┘  │   │
│  │       └─────────────┴────────────┴─────────────┘          │   │
│  └────────────────────────┬────────────────────────────────┘   │
│                           │                                     │
│  ┌────────────────────────▼────────────────────────────────┐   │
│  │  步骤 3:证据提取与核验                                   │   │
│  │  • 网页内容抓取(Jina AI)                                │   │
│  │  • 百度百科实体验证                                       │   │
│  │  • 信息提纯(基于LLM)                                    │   │
│  │  • 原子化事实提取(JSON)                                 │   │
│  └────────────────────────┬────────────────────────────────┘   │
│                           │                                     │
│  ┌────────────────────────▼────────────────────────────────┐   │
│  │  步骤 4:冲突解决与决策                                   │   │
│  │  • 按来源可靠性加权                                       │   │
│  │  • 缺口分析                                               │   │
│  │  • 继续搜索 或 结束并输出答案                             │   │
│  └────────────────────────┬────────────────────────────────┘   │
│                           │                                     │
│                           └──────────┐                          │
│                                      │                          │
│                              ┌───────▼────────┐                 │
│                              │    循环条件    │                 │
│                              │ • 最多8轮迭代  │                 │
│                              │ • finish 指令  │                 │
│                              └───────┬────────┘                 │
│                                      │                          │
│                    ┌─────────────────┼─────────────────┐        │
│                    ▼                 │                 ▼        │
│            ┌──────────────┐          │        ┌──────────────┐  │
│            │   继续循环   │◄─────────┘        │   结束循环   │  │
│            │              │                   │   输出答案   │  │
│            └──────────────┘                   └──────────────┘  │
└─────────────────────────────────────────────────────────────────┘
                                            │
                                            ▼
┌─────────────────────────────────────────────────────────────────┐
│                     最终答案合成层                                │
│  ┌──────────────────────────────────────────────────────────┐  │
│  │  • 格式合规检查(仅数字、英文等)                          │  │
│  │  • 零废话输出(无"答案是...")                            │  │
│  │  • 语言与原问题保持一致                                    │  │
│  └──────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────┘

🧩 工作流节点详解

节点名称 类型 描述
start 输入 接收问题、对话历史、搜索历史
builtin_llm_7elZ/3DOK/QjFV LLM 并行推理引擎(启用思考模式)
builtin_llm_cngJ LLM 共识仲裁者 - 检测推理器之间的冲突
python_qCQ7 解析器 提取 JSON 决策数据
condition_Wrtw 条件分支 路由至搜索循环或直接输出
loop_R4iy 循环 迭代研究循环(最多 8 轮)
builtin_llm_WT1d LLM 搜索策略生成器(三维验证)
python_OQEC 工具 Bocha 网页搜索
python_hoyi 工具 通过 Jina AI 抓取网页内容
python_EjsE 工具 百度百科实体爬取
python_789c/GrFW 工具 学术论文搜索(PubMed + arXiv)
builtin_llm_bp3Y LLM 决策者(继续搜索 / 结束任务)
builtin_llm_3xoL LLM 最终答案合成(格式合规检查)
python_5ciE 工具 输出清洗(移除括号/多余标点)
end 输出 最终答案交付

💡 核心设计思想

1. 为什么采用多智能体共识架构?

问题:单一模型推理容易产生幻觉或过度自信,难以判断自身输出的可靠性。

方案:三模型并行推理 + 仲裁节点

  • 三个独立推理器同时分析问题
  • 仲裁节点检测模型间分歧
  • 共识 → 直接输出;分歧 → 触发证据收集

优势

  • 自然置信度估计(一致性越高,置信度越高)
  • 减少事实验证中的假阳性
  • 不确定性自动触发搜索,无需人工干预

2. 三维验证搜索策略

当模型出现分歧时,系统生成针对性搜索查询:

维度 查询模式 目的
交叉验证 A vs BX和Y的区别 强制搜索引擎找对比页面
溯源验证 官方文档白皮书 找原始来源,而非摘要
时效对齐 2025最新版本 区分版本相关的事实

3. 证据可靠性层级

官方文档 > 学术论文 > 权威新闻 > 普通网页 > 社交媒体

决策 LLM 按来源类型加权,而非单纯按出现频率。

4. 状态累积模式

# 线索累积(跨迭代)
existing_clues + new_extracted_cluesmerged_clues

# 搜索历史(防重复)
existing_history + current_queriesmerged_history

# 去重保持顺序(确定性输出)

🔧 配置说明

环境变量

# 必需
export DASHSCOPE_API_KEY="your-dashscope-api-key"
export ALIYUN_IQS_KEY="your-aliyun-iqs-key"

# 可选(增强搜索能力)
export SERPAPI_KEY="your-serpapi-key"
export BOCHA_API_KEY="your-bocha-key"

工作流参数

编辑 flow.dag.yaml 自定义配置:

# 最大研究迭代次数(默认:8)
max_iterations: 8

# 使用的 LLM 模型
reasoning_model: qwen3.5-plus      # 深度思考
search_model: qwen-plus            # 搜索与提取
synthesis_model: qwen3.5-plus      # 最终答案合成

# 搜索限制
web_search_limit: 3                # 每个关键词的结果数
academic_search_limit: 5           # 每轮查询的论文数

📊 应用案例

案例 1:事实核验(直接共识)

Q: "第一代 iPhone 什么时候发布的?"
A: 2007

处理流程:
• 3 个推理器独立得出 2007 年的结论
• 达成共识,无需搜索
• 直接输出:2007

案例 2:多跳研究(搜索触发)

Q: "Arthur Miller 的妻子工作的俱乐部的英文名是什么?"

处理流程:
• 推理器识别出:Arthur Miller 的妻子 → Inge Morath
• 关于她的工作地点存在分歧
• 激活搜索循环:
  - 搜索:"Inge Morath 工作地点 俱乐部"
  - 发现:Bimbo's 365 Club
  - 通过多个来源验证
• 最终答案:Bimbo's 365 Club

案例 3:学术事实核查(学术搜索)

Q: "DeepSeek-V3 的 MoE 架构中激活参数量是多少?"

处理流程:
• 推理器意见分歧(236B vs 671B)
• 触发学术搜索:
  - PubMed:无结果(非医学主题)
  - arXiv:发现 DeepSeek-V3 技术报告
  - 提取:每 token 37B 激活参数,总计 671B
• 最终答案:37B 激活参数

🎨 设计原则

1. 证据层级

官方文档 > 学术论文 > 权威新闻 > 普通网页 > 社交媒体

2. 零废话输出

  • ❌ "答案是..."
  • ❌ "根据我的研究..."
  • ❌ "据资料显示..."
  • ✅ 直接的事实陈述

3. 格式合规

  • 遵循显式格式要求("仅数字"、"英文名")
  • 默认使用问题原始语言
  • 处理特殊格式("X and Y"、姓名格式等)

🔬 研究方法论

冲突解决策略

当模型出现分歧时:
1. 确定分歧的具体点
2. 生成针对性搜索查询
3. 按来源可靠性加权证据
4. 获得新证据后重新评估
5. 迭代直至达成共识或达到最大轮次

📁 项目结构

.
├── flow.dag.yaml              # 主工作流定义(阿里云百炼)
├── config/
│   └── application.yaml       # 应用配置
├── python_*.py                # 工具节点
│   ├── python_qCQ7.py        # JSON 共识提取器
│   ├── python_EjsE.py        # 百度百科爬虫
│   ├── python_hoyi.py        # Jina AI 网页抓取
│   ├── python_789c.py        # PubMed 学术搜索
│   ├── python_GrFW.py        # arXiv 学术搜索
│   ├── python_OQEC.py        # Bocha 网页搜索
│   ├── python_iz5n.py        # 线索合并(列表版)
│   ├── python_VzdU.py        # 线索合并(字符串版)
│   ├── python_MSdF.py        # 搜索历史管理
│   └── python_5ciE.py        # 输出清洗
├── README.md                  # 英文文档
├── README_CN.md              # 中文文档(本文件)
└── requirements.txt          # 依赖

🙏 依赖


📄 许可证

MIT License - 详见 LICENSE 文件


🔍 DeepResearch Agent - 证据驱动真理
天池 Research Agent 挑战赛 2024 - 复赛第13名

About

天池 Research Agent 挑战赛 复赛第13名方案

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors