KnowAgent
给LLM Agent外挂动作知识库,解决规划幻觉难题,NAACL 2025论文
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
给LLM Agent外挂动作知识库,解决规划幻觉难题,NAACL 2025论文
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你有没有过这样的体验——让 AI 帮你规划一次复杂的旅行,它说得头头是道,但真到执行的时候,却发现它规划的路线根本不可行,甚至出现了"规划幻觉"(Planning Hallucination)?这其实是当前大语言模型(LLM)做 Agent 时最核心的痛点:模型本身缺乏对"动作知识"的积累,生成的规划路径常常脱离真实世界的约束。
KnowAgent 正是为了解决这个问题而生。它是浙江大学知识图谱实验室(ZJUKG)提出的创新框架,发表在 NAACL 2025 Findings,并在 ACL 2024 KnowledgeNLP Workshop 获得最佳论文奖。它的核心思路非常直观——给 LLM Agent 外挂一个"动作知识库",让 AI 在做规划时不再凭空想象,而是基于真实有效的动作序列来生成行为轨迹。
传统的 LLM Agent(如 ReAct、Reflexion)在做任务规划时,完全依赖语言模型自身的推理能力。模型需要从有限的 prompt 示例中"猜"出正确的行动序列,但这种隐式的知识表达方式存在明显缺陷:
问题一:知识覆盖不足。 模型训练语料中关于特定任务(如多跳问答、厨房机器人操作)的动作知识极为有限,模型无法准确知道"在某种情境下,应该执行哪个具体动作"。
问题二:规划路径不稳定。 同样的任务,模型可能生成截然不同的动作序列,且缺乏一致性。某些边界情况下,模型会凭空编造看似合理但实际无法执行的步骤。
问题三:无法自我纠偏。 现有框架缺少对规划路径质量的主动评估机制,错误路径不会被主动过滤,导致 Agent 在错误的方向上越走越远。
KnowAgent 的出现,就是为了用外部知识库的方式,为 LLM Agent 提供可信赖的规划导航。
KnowAgent 的设计分为三个关键步骤,形成了一个完整的"知识获取→知识注入→知识迭代"闭环:
这是 KnowAgent 的基础设施。团队为特定任务(HotpotQA 多跳问答、ALFWorld 家庭机器人任务)构建了一个外部动作知识库,其中包含了完成该任务所需的所有合法动作及其约束条件。
以 ALFWorld 为例,知识库中定义了"打开抽屉"、"拿起物品"、"移动到某处"等原子动作,以及它们之间的先后依赖关系。Agent 不再需要自己"发明"动作,而是从知识库中选择最合适的动作来构建规划路径。
在这一步,模型以知识库中的动作知识为锚点,生成动作轨迹。核心流程是:
在 HotpotQA 数据集上的实验表明,引入动作知识库后,模型的规划准确率显著提升。消融实验证明,移除动作知识库后,性能大幅下降,验证了动作知识在规划过程中的关键作用。
这是 KnowAgent 的迭代增强机制。通过多轮训练循环,让模型不断深化对动作知识的理解:
团队提供了 Llama-2-{7B, 13B, 70B} 各版本的合成轨迹(通过 Google Drive 下载),研究者可以直接使用这些预生成的轨迹进行训练,无需自己复现路径生成过程。
KnowAgent 的代码库构建在以下核心依赖之上:
| 组件 | 技术选型 | 作用 |
|---|---|---|
| LLM推理 | FastChat (fschat) | 统一推理接口,支持多种开源模型 |
| Agent框架 | LangChain | 模块化 Agent 构建 |
| 训练框架 | DeepSpeed + HuggingFace Transformers | 分布式高效微调 |
| 参数高效 | PEFT (LoRA) | 低秩适配器微调,降低训练成本 |
| 加速优化 | Flash Attention 2 | 注意力机制加速,降低显存占用 |
| 动作执行 | ALFWorld | 真实家庭任务模拟环境 |
| 数据集 | HuggingFace Datasets | HotpotQA 等标准数据集 |
值得注意的是,KnowAgent 兼容多种 LLM 底座——从 7B 到 70B 参数均有支持。但根据 requirements.txt 中的 CUDA 和 Flash Attention 要求,实际运行时必须具备 NVIDIA GPU 环境,且显存需求随模型规模线性增长(13B 模型至少需要 26GB VRAM)。
KnowAgent/
├── Path_Generation/ # 规划路径生成模块
│ ├── run_alfworld.sh # ALFWorld 任务脚本
│ ├── run_hotpotqa.sh # HotpotQA 多跳问答脚本
│ ├── run_hotpotqa.py # 核心推理逻辑
│ └── alfworld_run/ # ALFWorld 环境适配
├── Self-Learning/ # 知识自学习训练模块
│ ├── train.sh # 初始训练脚本
│ ├── train_iter.sh # 迭代训练脚本
│ ├── train_lora.py # LoRA 微调核心代码
│ ├── traj_reformat.sh # 轨迹格式转换
│ └── traj_filter_merge.sh # 多轮轨迹过滤合并
└── img/ # 资源文件
Path_Generation 模块负责调用 LLM 生成初步规划路径,Self-Learning 模块则承担模型微调的核心工作。两者的衔接通过轨迹文件(.jsonl)完成——生成阶段输出的轨迹经格式转换后,送入训练阶段进行 LoRA 微调。
需要坦诚地说,KnowAgent 不适合普通用户进行快速部署。主要原因有以下几点:
第一,无容器化支持。 整个项目没有任何 Dockerfile 或 docker-compose.yml,依赖管理完全依赖 requirements.txt,用户需要自行解决 Python 环境和 CUDA 版本兼容性问题。
第二,依赖链复杂。 项目依赖包括 deepspeed(分布式训练)、flash_attn(需从源码编译)、alfworld(外部环境)等,安装过程中可能遇到各种版本冲突。requirements.txt 中指定的版本较旧(如 transformers==4.36.2),与最新版本可能存在兼容性问题。
第三,GPU 硬件门槛高。 训练阶段使用 DeepSpeed 多卡训练,deepspeed_config_s3.json 配置中涉及 ZeRO 优化和梯度累积,至少需要 4-8 块 GPU 才能高效运行。
第四,多步骤手动配置。 从下载预训练权重、配置 ALFWorld 环境、运行路径生成,到最终的 LoRA 微调,每一步都需要用户具备相关领域知识(LLM 微调、Agent 开发经验)。
对于研究者而言,建议的上手路径是:先下载团队提供的预生成轨迹,跳过路径生成阶段,直接从 Self-Learning 的 LoRA 微调开始,这样可以显著降低试错成本。
KnowAgent 固然设计精妙,但也存在一些值得关注的局限:
知识库构建成本高。 目前动作知识库需要人工为每个任务单独构建,扩展到新领域(如代码生成、科学推理)时需要大量专家知识。如何自动构建高质量动作知识库,是未来重要的研究方向。
仅验证了两个任务场景。 目前实验仅覆盖 HotpotQA(文本多跳问答)和 ALFWorld(家庭机器人),在更复杂的开放域任务(如网页浏览 Agent、代码调试 Agent)上的效果尚待验证。
闭源模型支持有限。 项目主推 Llama 系列开源模型,对 GPT-4、Claude 等闭源模型的支持需要额外适配。
KnowAgent 提出的"知识增强规划"范式,代表了 LLM Agent 研究的一个重要方向——从单纯依赖模型内部知识,转变为外部知识与内部推理的协同。这种范式与 RAG(检索增强生成)有异曲同工之妙,但更专注于动作序列层面的知识增强。
随着 AI Agent 在编程助手、自动化工作流、个人助手等场景的落地,如何让 Agent 的规划能力更加稳定、可控、可解释,将成为决定其实际可用性的关键。KnowAgent 为这一方向提供了一个扎实的研究基线,值得 AI 研究者和工程师深入关注。
项目基本信息
| 项目 | 信息 |
|---|---|
| 发表会议 | NAACL 2025 Findings |
| 实验室 | 浙江大学知识图谱实验室(ZJUKG) |
| 许可证 | Apache-2.0 |
| 主要语言 | Python |
| 核心依赖 | LangChain, FastChat, Transformers, DeepSpeed, PEFT |
| GitHub Stars | 260 |
| 默认分支 | main |