根据你提供的 agent
目录下各个类的信息,下面是对应的 PlantUML 代码,用于绘制类图展示这些类之间的关系:
@startuml
' 定义抽象基类
abstract class BaseAgent {+ name: str+ description: Optional[str]+ system_prompt: Optional[str]+ next_step_prompt: Optional[str]+ llm: LLM+ memory: Memory+ state: AgentState+ max_steps: int+ current_step: int+ duplicate_threshold: int+ initialize_agent(): BaseAgent+ state_context(new_state: AgentState): ContextManager+ update_memory(role: ROLE_TYPE, content: str, **kwargs): None+ run(request: Optional[str] = None): str+ abstract step(): str+ handle_stuck_state(): None+ is_stuck(): bool+ messages: List[Message]+ messages.setter(value: List[Message]): None
}' 定义其他代理类
class ToolCallAgent {+ name: str+ description: str+ system_prompt: str+ next_step_prompt: str+ available_tools: ToolCollection+ tool_choices: TOOL_CHOICE_TYPE+ special_tool_names: List[str]+ tool_calls: List[ToolCall]+ max_steps: int+ max_observe: Optional[Union[int, bool]]+ think(): bool+ act(): str+ execute_tool(command: ToolCall): str+ _handle_special_tool(name: str, result: Any, **kwargs): None+ _should_finish_execution(**kwargs): bool+ _is_special_tool(name: str): bool
}class PlanningAgent {+ name: str+ description: str+ system_prompt: str+ next_step_prompt: str+ available_tools: ToolCollection+ tool_choices: TOOL_CHOICE_TYPE+ special_tool_names: List[str]+ tool_calls: List[ToolCall]+ active_plan_id: Optional[str]+ step_execution_tracker: Dict[str, Dict]+ current_step_index: Optional[int]+ max_steps: int+ initialize_plan_and_verify_tools(): PlanningAgent+ think(): bool+ act(): str+ get_plan(): str+ run(request: Optional[str] = None): str+ update_plan_status(tool_call_id: str): None+ _get_current_step_index(): Optional[int]+ create_initial_plan(request: str): None
}class Manus {+ name: str+ description: str+ system_prompt: str+ next_step_prompt: str+ max_observe: int+ max_steps: int+ available_tools: ToolCollection+ _handle_special_tool(name: str, result: Any, **kwargs): None
}' 定义继承关系
ToolCallAgent --|> BaseAgent
PlanningAgent --|> ToolCallAgent
Manus --|> ToolCallAgent@enduml
代码解释:
-
抽象基类
BaseAgent
:- 包含了代理的核心属性和方法,如名称、描述、提示信息、状态管理、内存管理和执行控制等。
step
方法被定义为抽象方法,需要子类实现。
-
ToolCallAgent
类:- 继承自
BaseAgent
,增强了工具/函数调用的功能。 - 包含了工具调用的相关属性和方法,如
think
、act
和execute_tool
等。
- 继承自
-
PlanningAgent
类:- 继承自
ToolCallAgent
,用于执行规划任务。 - 包含了规划流程的相关属性和方法,如
initialize_plan_and_verify_tools
、get_plan
和create_initial_plan
等。
- 继承自
-
Manus
类:- 继承自
ToolCallAgent
,可能是一个通用的代理类,具有特定的工具和功能。
- 继承自
-
继承关系:
- 使用
--|>
表示继承关系,展示了各个类之间的层次结构。
- 使用
你可以将上述 PlantUML 代码复制到 PlantUML 编辑器(如 PlantText、Visual Studio Code 的 PlantUML 扩展等)中,即可生成相应的类图。