Agent 竞赛优化技巧
本文档整理自 Kaggle Agent 相关竞赛的高分方案、学术论文及实战经验,涵盖 Agent 架构设计、Prompt 工程、记忆管理、工具使用、搜索规划等核心优化技巧。
一、Agent 架构设计
1.1 多智能体协作框架
| 维度 |
说明 |
| 核心思想 |
将数据科学流程分解为多个阶段,每个阶段由专门的 Agent 负责 |
| 典型角色 |
Reader(理解赛题)、Planner(规划方案)、Developer(编写代码)、Reviewer(审查代码)、Summarizer(生成报告) |
| 协作方式 |
阶段间传递状态和上下文,每个 Agent 专注于特定任务 |
| 竞赛价值 |
比单 Agent 方案更稳定,各阶段质量可控,错误传播减少 |
| 代表方案 |
AutoKaggle(ICLR 2025)、Agent K v1.0(华为诺亚) |
1.2 分阶段工作流
赛题理解 → 初步EDA → 数据清洗 → 深度EDA → 特征工程 → 建模验证预测
↓ ↓ ↓ ↓ ↓ ↓
Reader Planner Developer Reviewer Developer Summarizer
| 阶段 |
关键动作 |
输出 |
| 赛题理解 |
读取赛题描述、数据字典、评估指标 |
任务类型、目标列、特征列表 |
| 初步EDA |
数据形状、缺失值、分布统计 |
数据概览报告 |
| 数据清洗 |
缺失值处理、异常值处理、类型修正 |
清洗后的数据集 |
| 深度EDA |
特征相关性、目标分布、泄漏检测 |
特征分析报告 |
| 特征工程 |
交叉特征、聚合特征、编码转换 |
特征矩阵 |
| 建模验证 |
K折训练、OOF预测、模型融合 |
最终提交文件 |
1.3 多模型 Agent 协同
| 维度 |
说明 |
| 实践案例 |
Chris Deotte 使用 GPT-5.4 Pro + Gemini 3.1 Pro + Claude Opus 4.6 三个 Agent 协同 |
| 分工策略 |
不同 Agent 负责不同实验方向(EDA、基线、特征工程、模型融合) |
| 成果 |
生成 60 万+ 行代码,运行 850 个实验,4 层 Stack 150 个模型获得第一名 |
| 关键 |
人类在环(Human-in-the-loop)控制方向,Agent 负责执行和迭代 |
二、Prompt 工程
2.1 系统 Prompt 优化
| 维度 |
说明 |
| 清晰简洁 |
使用简单直接的语言,既具体又灵活 |
| 结构化组织 |
用 XML 标签或 Markdown 标题划分部分(背景、指令、工具指南、输出格式) |
| 最少话术原则 |
先用最佳模型测试包含所有预期的最少话术,再根据失效模式添加指令 |
| 示例驱动 |
用 <good-example> 和 <bad-example> 明确区分可取和不可取的行为 |
| 强调式指令 |
使用 "IMPORTANT"、"NEVER"、"ALWAYS" 等强调词引导关键规则 |
2.2 典型 Prompt 模板
EDA 阶段:
"Please write and run EDA code to understand the CSV files train.csv and test.csv"
基线构建:
"Please write full code pipeline to read train.csv and test.csv and train a kfold XGBoost model. Save the OOF and Test PREDS to disk as Numpy files. Display the metric score each fold and overall."
特征工程:
"Can you please try creating new features from [specific columns]? Try interactions, aggregations, and encodings. Save OOF and Test predictions."
模型融合:
"Can you please try combining all our OOF and Test PREDs using various meta models? Please try Hill Climbing, Ridge/Logistic regression, NN, and GBDT stackers."
2.3 Prompt 反模式
| 反模式 |
问题 |
改进 |
| 塞满边缘情况 |
Prompt 过长,模型忽略关键指令 |
用多样化示例替代规则堆砌 |
| 过于笼统 |
模型行为不可预测 |
提供具体约束和输出格式 |
| 假设共享上下文 |
Agent 不知道之前步骤的结果 |
显式传递状态和中间结果 |
| 脆弱 if-else |
硬编码逻辑无法适应新情况 |
提供启发式规则和判断标准 |
三、记忆管理
3.1 多层记忆架构
| 记忆类型 |
作用 |
类比 |
| Session(短期) |
单次对话的上下文 |
应用状态(临时) |
| Working Memory(工作) |
当前任务的推理状态 |
工作内存 |
| Long-term Memory(长期) |
跨对话的经验和知识 |
数据库(持久) |
3.2 记忆管理策略
| 策略 |
说明 |
竞赛价值 |
| 自适应记忆 |
平衡近期详细上下文与历史摘要 |
避免上下文溢出,保留关键经验 |
| 经验提取 |
LLM 驱动的巩固,提取关键事实而非原始消息 |
存储"学习到的教训"而非原始日志 |
| 语义检索 |
基于含义的检索,而非关键词匹配 |
查询"验证分数下降"匹配"过拟合处理经验" |
| 跨任务迁移 |
共享长期记忆实现知识迁移 |
之前赛题的经验可应用于新赛题 |
3.3 Agent K 记忆机制
| 动作类型 |
说明 |
| 长期记忆动作 |
管理外部数据库,将经验转化为决策指导 |
| 内部动作 |
更新工作记忆,塑造推理过程 |
| 外部动作 |
与环境交互,执行任务并获取奖励 |
四、工具设计与使用
4.1 工具库构建
| 工具类别 |
具体工具 |
用途 |
| 代码执行 |
Python REPL、Notebook 执行 |
运行生成的代码 |
| 调试工具 |
错误追踪、单元测试 |
验证代码正确性 |
| 数据操作 |
pandas、cuDF(GPU 加速) |
数据处理和分析 |
| 建模工具 |
XGBoost、LightGBM、sklearn |
模型训练和预测 |
| 可视化 |
matplotlib、seaborn |
EDA 图表生成 |
| 超参优化 |
HEBO、Optuna |
自动调参 |
4.2 GPU 加速
| 维度 |
说明 |
| 核心优势 |
GPU 加速 pandas 操作(cuDF)可带来 10x~150x 速度提升 |
| 关键洞察 |
Agent 分析数据时,LLM 推理只需 1~2 秒,但数据处理可能很慢 |
| 加速库 |
cuDF(数据)、cuML(机器学习)、XGBoost GPU、PyTorch |
| 竞赛价值 |
初始探索从 30 分钟缩短到 3 分钟,相同时间内可迭代更多假设 |
| Kaggle 环境 |
免费 Kaggle GPU(T4/P100)即可运行完整 Agent 工作流 |
4.3 工具使用最佳实践
| 实践 |
说明 |
| 命名对象管理 |
允许 Agent 灵活命名、保存和检索中间结果 |
| 工具动态选择 |
根据当前阶段从配置文件确定需要的工具 |
| 工具遮蔽 |
在特定阶段隐藏不相关工具,减少 Agent 决策负担 |
| 工具组合 |
复杂任务需要多个工具协同(如 EDA → 特征工程 → 建模) |
五、搜索与规划策略
5.1 ReAct(Reasoning + Acting)
| 维度 |
说明 |
| 核心思想 |
交替生成推理轨迹和任务特定动作 |
| 循环模式 |
Thought → Action → Observation → Thought → ... |
| 优势 |
动态适应环境反馈,结合内部推理与外部工具 |
| 局限 |
在复杂 ML 流水线中难以生成有效的工具序列 |
| 适用 |
简单到中等复杂度的单步骤任务 |
5.2 树搜索方法
| 方法 |
说明 |
竞赛表现 |
| MCTS |
蒙特卡洛树搜索,探索代码优化路径 |
单独使用效果有限,状态评分不一致 |
| LATS |
语言 Agent 树搜索,结合 LLM 评估 |
比 MCTS 更稳定,但计算成本高 |
| MCTS-Shaped |
带形状奖励的 MCTS + 结构化文本反馈 |
在 ML-Tool-Bench 上表现最佳 |
| Hierarchical MCTS |
分层 MCTS,先规划阶段再规划动作 |
适合长流程任务 |
5.3 MCGS(Monte Carlo Graph Search)
| 维度 |
说明 |
| 核心改进 |
在 MCTS 基础上引入图结构,支持轨迹回溯、跨分支引用、多分支聚合 |
| 解决痛点 |
传统树搜索中节点孤立,高质量方案分散在不同分支 |
| 竞赛价值 |
AutoMLGen 在 MLE-Bench 上获得冠军(12 小时预算内) |
| 知识复用 |
允许历史轨迹复用和跨分支知识迁移 |
5.4 搜索策略选择指南
任务复杂度
|
+-- 简单单步: ReAct
|-- 中等多步: MCTS / LATS
|-- 复杂长流程: MCTS-Shaped / Hierarchical MCTS
+-- 需要知识复用: MCGS
六、调试与错误处理
6.1 Debug Chain 机制
| 维度 |
说明 |
| 核心思想 |
结构化、系统化的调试链,迭代修复错误代码 |
| 流程 |
执行 → 捕获错误 → LLM 分析原因 → 生成修复 → 重新执行 |
| 单元测试 |
每个阶段用单元测试验证正确性 |
| 自动恢复 |
无需人工干预的自我修正能力 |
| 竞赛价值 |
Agent K 在单元测试失败时自动生成修复方案 |
6.2 错误分类与处理
| 错误类型 |
处理方式 |
| 语法错误 |
LLM 直接修复代码 |
| 运行时错误 |
分析堆栈追踪,定位问题代码 |
| 逻辑错误 |
通过单元测试发现,LLM 重新设计逻辑 |
| 数据错误 |
检查数据形状、类型、缺失值 |
| 资源错误 |
内存不足时启用梯度检查点或减小 batch size |
七、实验管理与迭代
7.1 实验追踪
| 维度 |
说明 |
| 保存策略 |
每次实验(无论好坏)都保存 OOF 和 Test 预测到磁盘 |
| 记录内容 |
CV 分数、特征列表、模型参数、训练时间 |
| 命名规范 |
实验名包含关键信息(模型_特征_分数) |
| 版本控制 |
用 Git 或文件名版本管理代码迭代 |
7.2 迭代加速技巧
| 技巧 |
说明 |
| 快速基线 |
先用最简单模型跑通全流程,再逐步优化 |
| 并行实验 |
多个 Agent 同时探索不同方向 |
| 增量改进 |
每次只改变一个变量(特征/模型/参数) |
| 早停机制 |
CV 分数不提升时停止该方向探索 |
| 经验积累 |
将成功和失败的实验都记录到长期记忆 |
7.3 模型融合自动化
| 方法 |
说明 |
| Hill Climbing |
贪心选择最优模型组合 |
| Ridge/Logistic 堆叠 |
用线性模型融合多个模型预测 |
| NN 堆叠 |
用神经网络学习模型权重 |
| GBDT 堆叠 |
用树模型捕捉非线性关系 |
| 四层 Stack |
Chris Deotte 方案:150 个模型分 4 层融合 |
八、人类在环工作流
8.1 人机分工
| 角色 |
人类负责 |
Agent 负责 |
| 方向控制 |
决定探索方向、选择模型类型 |
执行具体代码、报告结果 |
| 质量审查 |
检查特征合理性、数据泄漏 |
生成代码、运行实验 |
| 创意输入 |
提出新特征想法、领域知识 |
实现想法、评估效果 |
| 最终决策 |
选择提交方案、调整策略 |
生成候选方案、提供数据 |
8.2 干预时机
| 时机 |
人类动作 |
| EDA 后 |
审查数据理解是否正确,补充领域知识 |
| 基线后 |
评估 CV 分数是否合理,决定下一步方向 |
| 特征工程后 |
检查特征是否有意义,排除泄漏特征 |
| 模型融合前 |
选择哪些模型参与融合,设定融合策略 |
| 提交前 |
最终审查,确认无数据泄漏和过拟合 |
九、典型 Agent Pipeline
9.1 表格数据竞赛 Pipeline
1. 赛题理解
└── Agent 读取描述、数据字典、评估指标
└── 输出:任务类型、目标列、特征列表
2. 初步 EDA
└── Agent 编写并运行 EDA 代码
└── 输出:数据形状、缺失值、分布统计
3. 基线构建
└── Agent 训练 XGBoost/LightGBM 基线
└── 输出:CV 分数、OOF 预测、Test 预测
4. 特征工程
└── Agent 尝试交叉特征、聚合特征、编码
└── 输出:改进的 CV 分数、新特征列表
5. 模型调参
└── Agent 使用 Optuna/HEBO 自动调参
└── 输出:最优参数、最终 CV 分数
6. 模型融合
└── Agent 尝试 Hill Climbing、Stacking
└── 输出:融合后的 Test 预测
7. 生成提交
└── Agent 格式化提交文件
└── 输出:submission.csv
9.2 多模态竞赛 Pipeline
| 阶段 |
工具/方法 |
| 数据理解 |
模态检测(文本/图像/音频) |
| 预处理 |
对应模态的专用处理库 |
| 特征提取 |
预训练模型(BERT/ViT/Perch) |
| 建模 |
深度学习框架(PyTorch) |
| 融合 |
多模态融合策略 |
十、竞赛评估指标
10.1 Agent 性能指标
| 指标 |
说明 |
优秀标准 |
| 有效提交率 |
成功提交且格式正确的比例 |
> 0.85 |
| 超过中位数比例 |
提交分数超过中位数的比例 |
> 0.40 |
| 平均百分位排名 |
所有提交的平均百分位 |
< 45(越低越好) |
| 奖牌获得率 |
获得奖牌(金/银/铜)的比例 |
> 0.25 |
10.2 代表方案表现
| 方案 |
模型 |
有效提交率 |
超过中位数 |
平均百分位 |
奖牌率 |
| PiML |
o3-mini |
- |
41.0% |
44.7 |
29.5% |
| AIDE |
GPT-4o |
- |
30.8% |
38.8 |
23.1% |
| AutoKaggle |
- |
0.85 |
- |
- |
综合 0.82 |
| Agent K |
- |
- |
- |
- |
6 金 3 银 7 铜 |
| AutoMLGen |
- |
- |
- |
- |
MLE-Bench 冠军 |
十一、关键经验总结
| 经验 |
说明 |
| 快速迭代是关键 |
竞赛成功取决于生成、测试、迭代想法的速度 |
| GPU 加速不可少 |
数据处理速度直接影响 Agent 迭代效率 |
| 保存所有实验 |
每次实验都保存 OOF 和 Test 预测,便于后续融合 |
| 多 Agent 协同 |
不同 Agent 负责不同方向,比单 Agent 更全面 |
| 人类在环 |
人类控制方向,Agent 负责执行,效果最佳 |
| 结构化 Prompt |
用 XML 标签组织 Prompt,比纯文本更可靠 |
| 记忆管理 |
跨对话的经验积累是 Agent 持续进步的关键 |
| 工具库完备 |
预验证的工具库比让 Agent 从头编写更可靠 |
| 调试自动化 |
自动调试和修复能力决定 Agent 的独立程度 |
| 搜索策略选择 |
根据任务复杂度选择合适的搜索方法 |