欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 美食 > 【Agent】OpenManus-Agent-实现具体的智能体

【Agent】OpenManus-Agent-实现具体的智能体

2025/3/17 7:53:08 来源:https://blog.csdn.net/weixin_40242845/article/details/146304008  浏览:    关键词:【Agent】OpenManus-Agent-实现具体的智能体

所有实例 Agent 都是继承 ToolCallAgent,所以只列出额外的参数字段,继承的见 ToolCallAgent

1. Manus(通用Agent)

概述

Manus 是一个多功能通用Agent,使用多种工具解决各种任务,提供了包括 Python 执行、网络浏览、文件操作和信息检索等功能。

参数

属性名默认值
nameManus
descriptionA versatile agent that can solve various tasks using multiple tools
system_promptSYSTEM_PROMPT,prompt/manus.py
next_step_promptNEXT_STEP_PROMPT,prompt/manus.py
max_observe2000
max_steps20
available_toolsPythonExecute(), WebSearch(), BrowserUseTool(), FileSaver(), Terminate()

复写 function

_handle_special_tool()
async def _handle_special_tool(self, name: str, result: Any, **kwargs):if not self._is_special_tool(name):returnelse:await self.available_tools.get_tool(BrowserUseTool().name).cleanup()await super()._handle_special_tool(name, result, **kwargs)

功能:处理特殊工具执行和状态变化。
实现细节

  • 检查工具是否为特殊工具
  • 如果是特殊工具,清理浏览器资源
  • 调用父类的 _handle_special_tool() 方法

工具集

  1. PythonExecute:执行 Python 代码
  2. WebSearch:进行网络搜索,获取信息
  3. BrowserUseTool:使用浏览器访问和交互网页
  4. FileSaver:保存文件到本地
  5. Terminate:结束Agent执行,完成任务

2. PlanningAgent(规划Agent)

概述

PlanningAgent 是一个创建和管理计划来解决任务的Agent,使用规划工具创建结构化计划,并跟踪各个步骤的进度直到任务完成。

参数

属性名默认值
nameplanning
descriptionAn agent that creates and manages plans to solve tasks
system_promptPLANNING_SYSTEM_PROMPT
next_step_promptNEXT_STEP_PROMPT
available_toolsPlanningTool(), Terminate()
tool_choicesToolChoice.AUTO
special_tool_names[Terminate().name]
step_execution_tracker{}
current_step_indexNone
max_steps20

额外参数

属性名类型描述默认值
active_plan_idOption[str]当前 plan 的IDNone
step_execution_trackerDict[str,Dict]跟踪每个工具调用的步骤状态{}
current_step_indexOption[int]当前步骤索引None

方法

initialize_plan_and_verify_tools()

功能:初始化Agent,设置默认 plan ID并验证所需工具。

think()
async def think(self) -> bool:"""Decide the next action based on plan status."""prompt = (f"CURRENT PLAN STATUS:\n{await self.get_plan()}\n\n{self.next_step_prompt}"if self.active_plan_idelse self.next_step_prompt)self.messages.append(Message.user_message(prompt))# Get the current step index before thinkingself.current_step_index = await self._get_current_step_index()result = await super().think()# After thinking, if we decided to execute a tool and it's not a planning tool or special tool,# associate it with the current step for trackingif result and self.tool_calls:latest_tool_call = self.tool_calls[0]  # Get the most recent tool callif (latest_tool_call.function.name != "planning"and latest_tool_call.function.name not in self.special_tool_namesand self.current_step_index is not None):self.step_execution_tracker[latest_tool_call.id] = {"step_index": self.current_step_index,"tool_name": latest_tool_call.function.name,"status": "pending",  # Will be updated after execution}return result

功能:基于计划状态决定下一步行动。
实现细节

  • 获取当前计划状态并添加到提示中
  • 获取当前步骤索引
  • 调用父类的 think() 方法
  • 将工具调用与当前步骤关联以进行跟踪
act()

功能:执行步骤并跟踪其完成状态。
实现细节

  • 调用父类的 act() 方法执行工具
  • 更新工具执行状态为已完成
  • 如果是非规划、非特殊工具,更新计划状态
get_plan()

功能:检索当前计划状态。
实现细节

  • 检查是否有活动计划
  • 执行规划工具的 “get” 命令获取计划
run()

功能:运行Agent,可选初始请求。
实现细节

  • 如果提供了请求,创建初始计划
  • 调用父类的 run() 方法
update_plan_status()

功能:基于已完成的工具执行更新当前计划进度。
实现细节

  • 检查工具调用是否在跟踪器中
  • 验证工具调用已成功完成
  • 执行规划工具的 “mark_step” 命令将步骤标记为已完成
_get_current_step_index()

功能:解析当前计划以识别第一个未完成步骤的索引。
实现细节

  • 获取当前计划
  • 查找 “Steps:” 行的索引
  • 查找第一个未完成或进行中的步骤
  • 将当前步骤标记为进行中
create_initial_plan()

功能:基于请求创建初始计划。
实现细节

  • 创建用户消息,要求分析请求并创建计划
  • 使用 LLM 获取响应
  • 执行规划工具创建计划
  • 将结果添加到内存中

工具集

  1. PlanningTool:创建和管理结构化计划
  2. Terminate:结束Agent执行,完成任务

设计理念

  1. 结构化问题解决

    • 将复杂任务分解为有序步骤
    • 通过计划创建明确的执行路径
  2. 进度跟踪

    • 跟踪每个步骤的执行状态
    • 将工具调用与计划步骤关联
  3. 自适应执行

    • 基于当前计划状态决定下一步行动
    • 在执行过程中更新计划状态
  4. 初始化与验证

    • 确保必要的工具可用
    • 自动创建初始计划

3. SWEAgent(软件工程Agent)

概述

SWEAgent 是一个自主 AI 程序员 ,能够直接与计算机交互来解决任务。它继承自 ToolCallAgent,专注于软件开发和代码执行任务。

核心属性

属性名类型描述默认值
namestrAgent的唯一名称“swe”
descriptionstrAgent的描述“an autonomous AI programmer that interacts directly with the computer to solve tasks.”
system_promptstr系统级指令提示SYSTEM_PROMPT
next_step_promptstr确定下一步行动的提示NEXT_STEP_TEMPLATE
available_toolsToolCollection可用工具集合Bash(), StrReplaceEditor(), Terminate()
special_tool_namesList[str]特殊工具名称列表[Terminate().name]
max_stepsint最大执行步骤数30
bashBashBash 工具实例Bash()
working_dirstr当前工作目录“.”

额外参数

属性名类型描述默认值
bashBashBash 工具实例Bash()
working_dirstr当前工作目录“.”

方法

think()

功能:处理当前状态并决定下一步行动。
实现细节

  • 更新当前工作目录
  • 使用当前工作目录格式化 next_step_prompt
  • 调用父类的 think() 方法

工具集

  1. Bash:执行 shell 命令,允许Agent与操作系统交互
  2. StrReplaceEditor:编辑文本文件,用于代码修改和创建
  3. Terminate:结束Agent执行,完成任务

设计理念

  1. 环境感知

    • 通过跟踪当前工作目录,Agent能够了解其操作环境
    • 将工作目录信息注入到提示中,使 LLM 能够做出更准确的决策
  2. 开发工具链

    • 提供基本的软件开发工具(命令行、文件编辑)
    • 允许Agent执行完整的软件开发周期(编写、测试、调试)
  3. 自主性

    • 能够独立执行软件开发任务,无需人工干预
    • 通过 Bash 工具提供广泛的系统交互能力

Agent架构比较

特性SWEAgentManusPlanningAgent
主要功能软件开发通用任务解决任务规划与执行
工具集命令行、文件编辑Python执行、网络搜索、浏览器、文件保存规划工具
特殊能力环境感知(工作目录)多功能信息获取计划创建与跟踪
最大步骤302020
设计重点代码操作信息获取与处理结构化执行

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词