<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Agent | Xwell's Blog</title><link>https://imxwell.com/tag/agent/</link><atom:link href="https://imxwell.com/tag/agent/index.xml" rel="self" type="application/rss+xml"/><description>Agent</description><generator>Hugo Blox Builder (https://hugoblox.com)</generator><language>en-us</language><lastBuildDate>Thu, 01 Feb 2024 00:00:00 +0000</lastBuildDate><image><url>https://imxwell.com/media/icon_hu69ee3ffdb4f867e32a76265cfde5ef48_25430_512x512_fill_lanczos_center_3.png</url><title>Agent</title><link>https://imxwell.com/tag/agent/</link></image><item><title>A few things about Code Agent</title><link>https://imxwell.com/blog/code_llm_agent/</link><pubDate>Thu, 01 Feb 2024 00:00:00 +0000</pubDate><guid>https://imxwell.com/blog/code_llm_agent/</guid><description>&lt;p>记录一些在实践代码大语言模型过程中的经验和思考总结，本篇是关于代码智能体的相关内容，包括代码智能体的关键功能、关键技术方案等。主要来源于公开论文。&lt;/p>
&lt;h2 id="背景">背景&lt;/h2>
&lt;p>最早接触Agent的概念是在控制理论中，Agent 是指能够感知、进行决策、和执行控制任务的实体。在强化学习范畴中，Agnet 有明确的定义：在与环境交互的过程中，Agent能够进行学习并做出完成指定目标（最大化累积奖励）的决策。在代码领域，Code Agent 我们一般指能否帮助用户&lt;strong>端到端自主完成&lt;/strong>代码开发任务的实体（或系统），覆盖到代码实现、验证和工具调用等环节。在这里我们暂时不对Agent的定义或起源做过多解释。&lt;/p>
&lt;p>在软件开发行业，业界已经沉淀了许多的成熟流程以及开发体系知识，包括不同角色的分工，不同研发阶段的产出规范等。那么，Code Agent 就可以基于这些成熟、特定性的工作流，来构建具备自主意识的智能实体（这里强调了从workflow提升到自主决策），来帮助提升研发效率。&lt;/p>
&lt;p>&lt;img src="code_agent_arch1.png" alt="code agent arch">&lt;/p>
&lt;h2 id="分类">分类&lt;/h2>
&lt;p>从应用的角度上看，code agent可划分为：&lt;/p>
&lt;ul>
&lt;li>通用型编码multi-Agent，定义多角色，通过协作的方式实现编码任务，如Devin，ChatDev等&lt;/li>
&lt;li>特定功能性Agent，专注于解决代码场景中的特定问题，如生成单测的UTAgent，代码审查的code review Agent 等&lt;/li>
&lt;/ul>
&lt;h2 id="关键模块拆解">关键模块拆解&lt;/h2>
&lt;ul>
&lt;li>中控模块，包含对用户输入进行意图识别，结合上下文进行reasoning，对复杂问题进行任务分解和执行策略的规划，如RethinkMCTS，修改上一步生成的thought；LATS结合MCTS的思想对代码的多步生成进行规划。中控的载体可以是结构化文本（Json）或者（伪）代码，比如CodeAct等&lt;/li>
&lt;li>LLM进行inference生成，得到代码或者其他文本。推理的过程中可能会生成思维链过程，如COT，ReAct 以及Reflexion等；生成的次数上，覆盖一轮到多轮的生成；在多轮的中间，可以引入对当前输入Prompt信息的干预，具体如何干预存在于中控模块的能力，如LATS，RethinkMCTS等&lt;/li>
&lt;li>代码验证评估，一般呈现为调用不同工具，包括语法检查，编译，解释器执行，直接对生成代码进行打分评估，得到多层次反馈信息等；如self-debugging注入debug信息到上下文进行代码的debug重新生成；LDB注入代码的执行trace，重新生成代码等&lt;/li>
&lt;li>知识库，包括代码库，代码领域知识等，包括本地高质量的检索库，或者网络云端的开放性信息。他们可以通过RAG的思路注入到输入Prompt中，如CodeGRAG， EvoR等；也可以从领域知识中，提取当前任务的meta信息给Prompt，作为上下文信息使用。如瀑布开发流程的节点输入输出标准，产品经理角色输出需求，架构师输出系统设计等&lt;/li>
&lt;li>工具集，包括代码的静/动态分析库，解释器执行验证，浏览器用于获取网络信息，以及RAG中常用的召回、排序模型等&lt;/li>
&lt;/ul>
&lt;h2 id="经典算法及框架">经典算法及框架&lt;/h2>
&lt;ul>
&lt;li>CodeAct, 使用python 语言来表Agent的动作空间，覆盖对thought的反思过程，以及多种工具的调用组合，可有效提升任务完成的成功率&lt;/li>
&lt;li>CodeAgent，定义了使用编码相关工具的固定workflow，支持网络浏览器的信息检索，代码解释执行反馈，代码测试工具等，通过ReAct 和工具规划方式，组合这些预定义的工具来解决repo-level的代码生成问题&lt;/li>
&lt;li>self-debugging, 通过收集生成代码在解释器执行的反馈信息，并进行解释，然后反馈给模型进行反思推理，以提升多轮场景下的代码生成质量和准确度&lt;/li>
&lt;li>EVOR，构建一个可演化的pipeline，多步演化用户的query，以及知识片段的检索，来提升代码生成的质量&lt;/li>
&lt;li>ChatDev，MetaGPT，CAMEL，AgentCoder等多智能体框架，基本上都是从研发流程的workflow衍生出来。ChatDev 模拟软件开发公司的不同角色，如CEO，CTO，Programer，分别进行不同的工种，构建通信和协作机制，进行软件开发；MetaGPT 模拟标准软件开发SOP瀑布流，定义PM，架构师，工程师和QA等不同角色来实现复杂的编程任务；CAMEL 同样是定义多角色的多智能体框架，支持动态的workflow，可解决相对复杂的问题；Agentcoder 定义三种独立的agent，协同编码、测试、执行者这三个角色完成代码生成任务&lt;/li>
&lt;/ul>
&lt;h2 id="案例拆解">案例拆解&lt;/h2>
&lt;p>最近的代码助手cursor成功出圈，在业界引发了一股热潮，它的自动补全和交互模式确实很惊艳。但是为更好呈现code agent的一些流程，我选择开源的cline框架进行一个交互式代码生成的案例展示。cline 支持vscode 插件，安装后，可以在左边启动对话栏，进入对话栏，输入用户任务后，触发一系列交互动作，这些动作可以设置auto-approve.&lt;/p>
&lt;ol>
&lt;li>首先进行任务分解与规划，并与用户进行参数确认&lt;/li>
&lt;li>生成代码后，呈现为git形态，并跟用户确认是否保存生成的代码 （可以auto-approve）&lt;/li>
&lt;li>生成所有的文件后，cline 会询问是否执行安装flask包的命令&lt;code>pip install flask&lt;/code>，用户确认run-command，会拉起terminal 进行安装&lt;/li>
&lt;li>安装环境后，cline 询问，是否执行pyhton命令，用户可以点击 run command 直接拉起flask server
&lt;img src="cline1.png" alt="cline1">
&lt;img src="cline2.png" alt="cline2">
&lt;img src="cline3.png" alt="cline3">&lt;/li>
&lt;/ol>
&lt;h2 id="用户场景识别">用户场景识别&lt;/h2>
&lt;ul>
&lt;li>面向程序员，解决专业问题，包括已有大系统的维护迭代开发工作，辅助补全优先，类似cursor的tab功能&lt;/li>
&lt;li>面向非开发者，运营产品经理等，进行快速原型开发，如花生开发小猫补光灯，可以从零开始开发原型，甚至商业化产品的工作（包括项目，小至模块）&lt;/li>
&lt;/ul>
&lt;p>未来的形态可能仍会是并存，随着自主能力的增强，两者的边界会越来越模糊。&lt;/p>
&lt;h2 id="reference">Reference&lt;/h2>
&lt;ol>
&lt;li>&lt;a href="https://e2b-landing-page.framer.website/ai-agents/coding">https://e2b-landing-page.framer.website/ai-agents/coding&lt;/a>&lt;/li>
&lt;li>&lt;a href="https://www.anthropic.com/research/building-effective-agents">https://www.anthropic.com/research/building-effective-agents&lt;/a>&lt;/li>
&lt;li>Du, K., Chen, J., Rui, R., Chai, H., Fu, L., Xia, W., Wang, Y., Tang, R., Yu, Y. &amp;amp; Zhang, W. (2024). CodeGRAG: Bridging the Gap between Natural Language and Programming Language via Graphical Retrieval Augmented Generation. arXiv preprint arXiv:2405.02355v3.&lt;/li>
&lt;li>Qian, C., Liu, W., Liu, H., Chen, N., Dang, Y., Li, J., Yang, C., Chen, W., Su, Y., Cong, X., Xu, J., Li, D., Liu, Z. &amp;amp; Sun, M. (2023). ChatDev: Communicative Agents for Software Development. arXiv preprint arXiv:2307.07924v5.&lt;/li>
&lt;li>Hong, S., Zhuge, M., Chen, J., Zheng, X., Cheng, Y., Zhang, C., Wang, J., Wang, Z., Yau, S.K.S., Lin, Z., Zhou, L., Ran, C., Xiao, L., Wu, C. &amp;amp; Schmidhuber, J. (2023). MetaGPT: Meta Programming for A Multi-Agent Collaborative Framework. arXiv preprint arXiv:2308.00352v7.&lt;/li>
&lt;li>Li, G., Hammoud, H.A.A.K., Itani, H., Khizbullin, D. &amp;amp; Ghanem, B. (2023). CAMEL: Communicative Agents for &amp;ldquo;Mind&amp;rdquo; Exploration of Large Language Model Society. arXiv preprint arXiv:2303.17760v2.&lt;/li>
&lt;li>Wang, X., Chen, Y., Yuan, L., Zhang, Y., Li, Y., Peng, H. &amp;amp; Ji, H. (2024). Executable Code Actions Elicit Better LLM Agents. arXiv preprint arXiv:2402.01030v4.&lt;/li>
&lt;li>Zhang, K., Li, J., Li, G., Shi, X. &amp;amp; Jin, Z. (2024). CodeAgent: Enhancing Code Generation with Tool-Integrated Agent Systems for Real-World Repo-level Coding Challenges. arXiv preprint arXiv:2401.07339v2.&lt;/li>
&lt;li>Li, Q., Xia, W., Du, K., Dai, X., Tang, R., Wang, Y., Yu, Y. &amp;amp; Zhang, W. (2024). RethinkMCTS: Refining Erroneous Thoughts in Monte Carlo Tree Search for Code Generation. arXiv preprint arXiv:2409.09584v1.&lt;/li>
&lt;li>Zhong, L., Wang, Z. &amp;amp; Shang, J. (2024). Debug like a Human: A Large Language Model Debugger via Verifying Runtime Execution Step-by-step. arXiv preprint arXiv:2402.16906v6.&lt;/li>
&lt;li>Zhou, A., Yan, K., Shlapentokh-Rothman, M., Wang, H. &amp;amp; Wang, Y. (2023). Language Agent Tree Search Unifies Reasoning Acting and Planning in Language Models. arXiv preprint arXiv:2310.04406v3.&lt;/li>
&lt;li>Chen, X., Lin, M., Schärli, N. &amp;amp; Zhou, D. (2023). Teaching Large Language Models to Self-Debug. arXiv preprint arXiv:2304.05128v2.&lt;/li>
&lt;li>Yang, K., Liu, J., Wu, J., Yang, C., Fung, Y.R., Li, S., Huang, Z., Cao, X., Wang, X., Wang, Y., Ji, H. &amp;amp; Zhai, C. (2024). If LLM Is the Wizard, Then Code Is the Wand: A Survey on How Code Empowers Large Language Models to Serve as Intelligent Agents. arXiv preprint arXiv:2401.00812v2.&lt;/li>
&lt;li>Wang, L., Ma, C., Feng, X., Zhang, Z., Yang, H., Zhang, J., Chen, Z., Tang, J., Chen, X., Lin, Y., Zhao, W.X., Wei, Z. &amp;amp; Wen, J. (2023). A Survey on Large Language Model based Autonomous Agents. arXiv preprint arXiv:2308.11432v6.&lt;/li>
&lt;li>Su, H., Jiang, S., Lai, Y., Wu, H., Shi, B., Liu, C., Liu, Q. &amp;amp; Yu, T. (2024). EVOR: Evolving Retrieval for Code Generation. arXiv preprint arXiv:2402.12317v2.&lt;/li>
&lt;li>Huang, D., Zhang, J.M., Luck, M., Bu, Q., Qing, Y. &amp;amp; Cui, H. (2023). AgentCoder: Multi-Agent-based Code Generation with Iterative Testing and Optimisation. arXiv preprint arXiv:2312.13010v3.&lt;/li>
&lt;/ol></description></item></channel></rss>