--- sidebar_position: 3 --- # 🧠 Agents and Capabilities ## CodeAct Agent ### 描述 该Agent实现了CodeAct的思想([论文](https://arxiv.org/abs/2402.01030),[推特](https://twitter.com/xingyaow_/status/1754556835703751087)),将LLM agents的**行为**合并到一个统一的**代码**动作空间中,以实现_简化_和_性能_(详情见论文)。 概念理念如下图所示。在每个回合,Agent可以: 1. **对话**:用自然语言与人类交流,进行澄清、确认等。 2. **CodeAct**:选择通过执行代码来完成任务 - 执行任何有效的Linux `bash`命令 - 使用[交互式Python解释器](https://ipython.org/)执行任何有效的 `Python`代码。这是通过`bash`命令模拟的,详细信息请参见插件系统。 ![image](https://github.com/All-Hands-AI/OpenHands/assets/38853559/92b622e3-72ad-4a61-8f41-8c040b6d5fb3) ### 插件系统 为了使CodeAct agent在仅能访问`bash`动作空间时更强大,CodeAct agent利用了OpenHands的插件系统: - [Jupyter插件](https://github.com/All-Hands-AI/OpenHands/tree/main/openhands/runtime/plugins/jupyter):通过bash命令实现IPython执行 - [SWE-agent工具插件](https://github.com/All-Hands-AI/OpenHands/tree/main/openhands/runtime/plugins/swe_agent_commands):为软件开发任务引入的强大bash命令行工具,由[swe-agent](https://github.com/princeton-nlp/swe-agent)提供。 ### 演示 https://github.com/All-Hands-AI/OpenHands/assets/38853559/f592a192-e86c-4f48-ad31-d69282d5f6ac _CodeActAgent使用`gpt-4-turbo-2024-04-09`执行数据科学任务(线性回归)的示例_ ### 动作 `Action`, `CmdRunAction`, `IPythonRunCellAction`, `AgentEchoAction`, `AgentFinishAction`, `AgentTalkAction` ### 观测 `CmdOutputObservation`, `IPythonRunCellObservation`, `AgentMessageObservation`, `UserMessageObservation` ### 方法 | 方法 | 描述 | | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------ | | `__init__` | 使用`llm`和一系列信息`list[Mapping[str, str]]`初始化Agent | | `step` | 使用CodeAct Agent执行一步操作,包括收集前一步的信息并提示模型执行命令。 | ### 进行中的工作 & 下一步 [] 支持Web浏览 [] 完成CodeAct agent提交Github PR的工作流程 ## Planner Agent ### 描述 Planner agent利用特殊的提示策略为解决问题创建长期计划。 在每一步中,Agent会获得其先前的动作-观测对、当前任务以及基于上一次操作提供的提示。 ### 动作 `NullAction`, `CmdRunAction`, `BrowseURLAction`, `GithubPushAction`, `FileReadAction`, `FileWriteAction`, `AgentThinkAction`, `AgentFinishAction`, `AgentSummarizeAction`, `AddTaskAction`, `ModifyTaskAction` ### 观测 `Observation`, `NullObservation`, `CmdOutputObservation`, `FileReadObservation`, `BrowserOutputObservation` ### 方法 | 方法 | 描述 | | -------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `__init__` | 使用`llm`初始化Agent | | `step` | 检查当前步骤是否完成,如果是则返回`AgentFinishAction`。否则,创建计划提示并发送给模型进行推理,将结果作为下一步动作。 |