在当前的主要 LLM 代理框架中,LLM 通常扮演指挥者的角色,决定下一步该做什么、何时调用工具,以及何时停止。然而,我们认为,令牌爆炸、控制流幻觉和不可靠的完成并非实现中的错误,而是将循环、分支和序列化的确定性工作分配给概率系统的架构后果。更好的提示或更强大的模型无法保证 LLM 代理的可靠性。
因此,我们提出了代理编程(Agentic Programming),在这种编程模型中,程序控制所有控制流,LLM 本身是其中的一部分,我们称之为 LLM-as-Code,仅在任务需要推理或生成时调用。在每次调用中,模型保持完全的灵活性,但不能改变程序的执行路径。通过对程序的控制,LLM 的上下文是根据执行历史的调用树构建的,形成一个有向无环图(DAG)。每次调用的上下文长度由其调用深度决定,而不是通过步骤的累积。
针对计算机使用代理的案例研究表明,这一设计是切实可行的,而不仅仅是理论上的立场,显著提高了长视觉操作序列的稳定性。
博主点评: 代理编程的提出为当前 LLM 代理的局限性提供了新思路,通过将控制权从 LLM 转移到程序本身,提升了系统的稳定性与可靠性,值得在更多实际应用中进行深入探索与验证。