文章摘要
文章指出,当前在构建AI代理时,尚未形成统一的标准,类似于早期网页开发使用HTML和CSS的阶段。尽管OpenAI和Microsoft等公司提供了一些基础工具,但整体上仍处于探索阶段。文章强调,未来需要像React在网页开发中那样,形成一套被广泛接受的哲学和模式,以推动AI代理的标准化和高效开发。
文章总结
标题:认知 | 不要构建多智能体
主要内容:
在构建AI智能体时,作者提出了两个关键原则:共享上下文和行动隐含决策。这些原则对于确保智能体在长时间运行中的可靠性至关重要。作者认为,当前的多智能体架构存在严重缺陷,尤其是在上下文传递和决策一致性方面。
背景与原则:
共享上下文:智能体的每个行动都应基于系统中所有相关决策的上下文。理想情况下,每个行动都能看到所有其他行动的上下文,但由于上下文窗口的限制,实际应用中需要做出权衡。
行动隐含决策:智能体的每个行动都隐含了某些决策,如果这些决策相互冲突,可能会导致不良结果。因此,设计智能体时应避免决策的分散化。
多智能体架构的问题:
作者通过一个“Flappy Bird克隆”任务的例子,展示了多智能体架构的脆弱性。当主智能体将任务分解为多个子任务并分配给不同的子智能体时,子智能体可能会误解任务,导致最终结果不一致。即使共享了上下文,子智能体之间仍然可能因为缺乏对彼此工作的了解而产生冲突。
解决方案:
作者建议采用单线程线性智能体架构,确保上下文的连续性。对于非常复杂的任务,可以引入一个新的LLM模型来压缩历史行动和对话,从而在较长的上下文中保持智能体的有效性。
实际应用:
Claude Code:该智能体在生成子任务时,子智能体通常只负责回答特定问题,而不是编写代码,以避免上下文冲突。
编辑应用模型:在2024年,许多模型在编辑代码时表现不佳,因此开发者使用小型模型来重写整个文件,而不是依赖大型模型生成差异文件。然而,这种方法仍然存在误解释指令的问题。
多智能体的未来:
尽管多智能体协作的长期潜力令人期待,但在2025年,多智能体系统仍然非常脆弱。决策过于分散,上下文无法充分共享。作者认为,随着单线程智能体在与人沟通方面的进步,未来可能会自然解决跨智能体上下文传递的问题。
总结:
作者强调,上下文工程是构建可靠智能体的核心。尽管当前的多智能体架构存在诸多问题,但通过遵循共享上下文和行动隐含决策的原则,开发者可以设计出更加稳定和高效的智能体系统。
评论总结
评论内容总结:
对AI行业创新的质疑
- 有评论认为AI行业在重新发现80年代已有的技术,缺乏真正的创新。
- 引用:“How is this fundamentally any different than Erlang/Elixir concepts of supervisors controlling their child processes?”
- 引用:“most AI 'engineers' are not really good software engineers; they're often 'vibe engineers' who don't read academic papers on the subject and keep re-inventing the wheel.”
对多代理系统的批评
- 评论指出多代理系统在实际应用中不可靠,且管理复杂,建议采用单一代理和上下文管理。
- 引用:“Agents are like really unreliable employees, that you have to supervise, and correct so often that its a waste of time to delegate to them.”
- 引用:“Single agents with good prompt engineering often outperform elaborate multi-agent orchestrations.”
对上下文管理的讨论
- 评论强调上下文管理不仅仅是上下文窗口的大小,还涉及信息的过滤和优化。
- 引用:“context problems start cropping up well before the context window fills up.”
- 引用:“You shouldn't be passing agents context like messages, they should share a single knowledge store with the parent, and the context optimizer should just optimally pack their context for the task description.”
对代理设计的建议
- 评论建议代理设计应基于任务需求,区分不同任务的代理,避免混淆。
- 引用:“It’s much more effective to delegate the search task to a search agent and the coding task to a code agent.”
- 引用:“Do i need to think differently about this problem? if yes, you need a different agent!”
对AI泡沫的担忧
- 有评论认为当前AI行业存在泡沫,部分公司过度依赖资本炒作。
- 引用:“The bubble's gonna pop, and you'll have so much egg on your face.”
- 引用:“This stuff is just compilers with extra compute and who got rich off compilers? VC people...”
对代理可靠性的讨论
- 评论指出代理的可靠性是核心问题,清晰的输入输出定义是并行处理的关键。
- 引用:“The real problem is to get reliability. If you have reliability and clear defined input and output you can easily go parallel.”
- 引用:“Anecdotally Devin has been one of the worst coding agents I tried, to the point where I didn’t even bother asking for my unused credits to be refunded.”
对代理设计的创新建议
- 评论提出了一些创新的代理设计思路,如允许代理自我修正和迭代。
- 引用:“allow the final agent to go back to the subagent and say 'hey, you did the wrong thing, this is what you did wrong, please try again'.”
- 引用:“Restricting output from a subagent (not allowing arbitrary strings anywhere in the output) seems like a way to minimize the risks of prompt injection attacks.”
总结:评论中对AI行业的多代理系统、上下文管理、代理设计等方面提出了批评和建议,部分评论认为当前AI行业存在泡沫,缺乏真正的创新,而另一些评论则提出了具体的改进思路和设计建议。