读paper18-Agent_for_code
读paper18-Agent_for_code
MapCoder: Multi-Agent Code Generation for Competitive Problem Solving
来自ACL
https://github.com/Md-Ashraful-Pramanik/MapCoder
https://arxiv.org/abs/2405.11403
这篇paper跟我的最初思路非常相似,相当于使用多个大模型进行代码生成,而且也是基于策略迭代的过程,这也证明我的思路上并没有任何问题。甚至从某种程度上来说相对我的思路更简单,因为这里我觉得还是存在几个问题:
- Agent的问题,这里所谓的每个Agent只是应用了不同prompt的不同角色,这个后面再说。
- 细粒度上还是可以细化,比如将debug与fix的Agent分开(不过这就涉及我的工作了
- 关于Plan的生成这里还是有一些疑点,比如其多样性(如果生成了一堆相似的plan,虽然可以通过模型参数控制多样性,但还是应该做一下处理),不过这里的置信度还是一个非常不错的点
关于Agent的问题,一般来说,LLM Agent包含以下功能:
- 记忆:保存用户交互的历史上下文和项目知识。
- 规划:将大任务拆分为可管理的子目标,以有效处理复杂任务。
- 工具使用:调用外部API获取额外信息,包括当前信息、代码执行能力、专有信息源的访问等。
这里其实并没有涉及到这三点,所以还是称之为multi-LLM更合适。而且论文中的的策略处理Agent也只是针对复杂问题提出了多种方案,而不是将复杂问题拆分成小问题。(不过看论文中的例子,每个plan确实是拆分成了一步一步的形式,但问题是这个plan是一次性用于生成code的)
CodeAgent: Enhancing Code Generation with Tool-Integrated Agent Systems for Real-World Repo-level Coding Challenges
https://arxiv.org/abs/2401.07339
仓库级的代码生成任务,如果是缺陷修复,跟SWE-bench感觉挺匹配的,有提及,不过该研究面向更复杂的应用场景,希望使用Agent替代人类完成任务需求。
该研究中Agent的核心是工具及其使用策略。
信息检索
Website Search
基于https://duckduckgo.com/构建的Website Search服务。
Documentation Reading
BM25 ,用来检索类和方法的相关文档信息。
代码执行
Code Symbol Navigation
https://tree-sitter.github.io/tree-sitter/
针对整个项目的类、变量、函数检索与导航,使得LLM能够理解错综复杂的依赖关系并复用代码。
Code Testing Tools:format and test
构建了 https://github.com/psf/black 作为格式检查工具,使用动态检查进行代码检测。
KAVE: A Knowledge-Based Multi-Agent System for Web Vulnerability Detection
https://ieeexplore.ieee.org/document/10707503
核心是基于代码表示图
该研究使用一个多层知识图(Multi-Layer Knowledge Graph,MLKG)来表示程序的代码属性,具有不同的代码结构表示法(FCG、CFG、DVG 和 PDG),并丰富了漏洞的安全属性,从而包含了所有代码和漏洞的知识;
在此基础上,使用 Multi-Agent System(MAG) 来对 MLKG 进行静态缺陷分析,以更有效地检测潜在漏洞。该方法还集成了一种剪枝方法,可为有效和高效地进行漏洞分析而策略性地丢弃不相关的 MLKG 节点,并最大限度地降低误报率。
MAS中,每个Agent都能自主解决问题,与其他Agent异步运行,它们在 MLKG 节点中自主运行,但依赖于其他Agent做出有关漏洞传播的决策并发现漏洞。
核心点还是使用图表示来对代码进行表征,相对于直接给出代码的NLP形式,图模型相当于一种更形式化的格式,在逻辑表达(尤其是数据流控制流等表征)上会有更清晰的反映。可以尝试 code+graph 的形式,来测试LLM是否能够对代码有更清晰的理解。
Code Generation Using Self-interactive Assistant
跟我的思路好像。。。。。