另外,Manus 也使用了 CodeAct。
希望通过本文,读者可以了解ReAct,CodeAct 这两种范式,基于此,可以对 OpenHands 做进一步学习。
因为本系列借鉴的文章过多,可能在参考文献中有遗漏的文章,如果有,还请大家指出。
Devin是由Cognition AI开发的全球AI程序员,具备全栈开发能力,能自主完成代码编写、调试、部署及AI模型训练等任务。Devin 代表了一种先进的自主代理,旨在应对软件工程的复杂性。它利用了诸如 shell、代码编辑器和网络浏览器等工具的组合,展示了 LLM 在软件开发中未被充分利用的潜力。
OpenDevin 项目诞生于复制、增强并创新原始 Devin 模型的愿望。OpenDevin 的目标是探索并扩展 Devin 的能力,识别其优势和改进领域,以指导开放代码模型的进展。通过吸引开源社区的参与,OpenDevin 旨在应对 Code LLM 在实际场景中面临的挑战,产出对社区有重大贡献的作品,并为未来的进步铺平道路。
OpenHands 目前 GitHub 星标数已超 6.5 万。
在自然语言处理领域,大语言模型(LLM)已经取得了实打实的突破 —— 它们不止处理文本,还能调用 API、管理内存,甚至控制机器人。但传统的 LLM 代理有个问题:它们通常是生成 JSON 或者固定格式的文本来说明要做什么,这就导致能做的动作有限,也不够灵活。
CodeAct 是一种新的代理框架,它让 LLM 直接生成可执行的 Python 代码来 “做事”,即以 code 为 action,用代码解决复杂问题。简单说,LLM 写一段 Python 代码,而 CodeAct 里集成了 Python 解释器,能直接运行这段代码;而且在多轮交互中,LLM 还能处理和存储中间结果,根据新的结果调整代码,相当于用 Python 代码统一了 LLM 代理的 “行动方式”。当然,写代码不是目的,而是用这种通用的方式解决各种问题。这种框架克服了传统LLM代理的多个限制。
具体展开,CodeAct 有四个鲜明特征:
综上,ReAct 作为早期 Agent 的核心范式,在 单一任务、短任务链、弱约束 的场景中依然有价值,但作为企业级、跨域、强约束 Agent 系统的基础架构时,其局限性已经是结构性的,而不是简单通过加强提示词或增加工具种类就能弥补的问题。一旦业务范围扩展到数十条业务线,叠加严格的数据隔离要求和频繁变动的业务规则,单体 Agent 通常会不堪重负。试图让一个中心化、通用的模型去理解所有请求、路由所有工具、同时还要遵守每一条合规策略,会导致系统复杂度呈指数级膨胀:配置与维护成本飙升,行为难以解释,幻觉与错误频发。
OpenHands是开源社区构造的符合CodeAct模式的Single-Agent。CodeAct的思路是XingYao Wang在24年2月于"Executable Code Actions Elicit Better LLM Agents"提出来的。
论文信息如下:
CodeAct 作为面向 LLM Agent 的多轮交互框架,通过 “Agent - 用户 - 环境” 的三元角色定义,构建了以 Python 代码为核心的全新交互模式。其核心理念在于打破传统指令格式的局限,将所有环境交互动作统一为可执行的代码,让 Agent 借助代码的强大表达力攻克复杂任务。
self.system_message = "You are a helpful assistant ..." def step ( self, state: State ): messages: list [ dict [ str , str ]] = [ { 'role' :basketballzhibo.com 'system' , 'content' : self.system_message} ] for prev_action, obs in state.history: action_message = get_action_message(prev_action) messages.append(action_message) obs_message =nbczhibo.com get_observation_message(obs) messages.append(obs_message) # use llm to generate response (e.g., thought, action) response = self.llm.do_completion(messages) # parse and execute action in the runtime action = self.parse_response(response) spacexzhibo.com if self.is_finish_command(action): return AgentFinishAction() elif self.is_bash_command(action): return CmdRunAction(command=action.command) elif self.is_python_code(action): chengyiwl.com return IPythonRunCellAction(code=action.code) elif self.is_browser_action(action):
At each turn, you should first provide your step-by-step thinking for solving the task. Your thought process should be enclosed using "<thought>" tag, for example: <thought> I need to print "Hello World!" </thought>. After that, you have two options: 1 ) Interact with a Python programming environment and receive the corresponding output. Your code should be enclosed using ftzhibo.cn "<execute>" tag, for example: <execute> print ( "Hello World!" ) </execute>. 2 ) Directly provide a solution that adheres to the required format for the given task. Your solution should be enclosed using "<solution>" tag, for example: The answer is <solution> A </solution>. You have {max_total_steps}gzbeimu.com chances to interact with the environment or propose a solution. You can only propose a solution {max_propose_solution} times. {tool_desc} --- {in_context_example}
传统工具使用是让 Agent 在固定的工具箱里做选择题。未来的方向是让 Agent 自己创造工具。即当面对没有现成工具可用时,Agent 会动态地生成一段 Python 代码(一个微型工具),在隔离环境中执行并根据执行结果推进任务。这让 Act 环节从「使用工具」到「创造工具」。
AiPy 是基于Python-use(Code-use)范式的Agent。CodeAct强调并解决的是“Code as Actions”,与 AiPy 的Python-use范式提出的“Code is Agent”完全是一致的。
Python-use 范式 = API Calling + Python Packages Calling + Python解释器 = “万物互联” + “万物编程” + “万境直通”。
AiPy 实现的“Python Function Calling(PFC)是源于“Python Packages Calling”的设计的扩展,这个设计最早AiPy的核心中runtime对象(现在代码可能有变化)在某个角度也就是Packages Calling,比如runtime.install_packages()用来安装包。而“Python-use Function Calling(PFC)”的做法是开放了这个接口给用户,本质上还是属于“Python Packages Calling”的范畴,在这个角度上看“Python-use Function Calling(PFC)”实际上就相当于是一个CodeAct。
PlxCleanupDeviceExtension
(
_In_ PDEVICE_EXTENSION DevExt
)
{
ULONG i;
// 遍历并释放事件对象
for
(i =
0
; i < EVENT_COUNT; i++) {
if
(DevExt->m_Events[i] !=
NULL
) {
ObDereferenceObject(DevExt->m_Events[i]);
DevExt->m_Events[i] =
NULL
;
// 清空指针是个好习惯
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70048957/viewspace-3109017/ ,如需转载,请注明出处,否则将追究法律责任。