在前面的文章中,我们已经讨论了 AI Agent 的记忆系统和工具调用体系。今天,我想分享一下如何实现规划系统,让 AI Agent 能够更智能地完成复杂任务。
从一个真实需求说起
还记得前段时间,我在开发一个代码重构助手时遇到的场景:
用户:帮我重构这个项目的日志系统,统一使用结构化日志,添加链路追踪。
助手:好的,我来帮你重构。首先修改 logger.py...
(开始修改代码)
用户:等等,你这样直接改可能会影响到其他模块,能不能先分析一下影响范围?
助手:抱歉,你说得对。让我重新规划一下...
这个场景让我意识到:AI Agent 需要像人类工程师一样,在执行任务前先做好规划。不能一上来就写代码,而是要:
- 分析需求和影响范围
- 制定详细的执行计划
- 按步骤有序地执行
- 及时处理意外情况
规划系统的设计
经过几轮迭代,我设计了一个相对完善的规划系统:
from typing import List, Dict, Any
from enum import Enum
from datetime import datetime
from pydantic import BaseModel
class TaskStatus(Enum):
PENDING = "pending"
IN_PROGRESS = "in_progress"
COMPLETED = "completed"
FAILED = "failed"
BLOCKED = "blocked"
class TaskStep(BaseModel):
id: str
description: str
status: TaskStatus
dependencies: List[str]
estimated_time: float
actual_time: float = 0
result: Any = None
error: str = None
class Task(BaseModel):
id: str
name: str
description: str
steps: List[TaskStep]
context: Dict[str, Any]
created_at: datetime
updated_at: datetime
status: TaskStatus
class PlanningSystem:
def __init__(
self,
llm,
tool_registry,
memory_system
):
self.llm = llm
self.tool_registry = tool_registry
self.memory_system = memory_system
self.tasks: Dict[str, Task] = {}
async def plan_task(
self,
description: str,
context: Dict[str, Any] = None
) -> Task:
# 1. 分析任务,生成步骤
steps = await self._generate_steps(
description,
context
)
# 2. 创建任务
task = Task(
id=self._generate_id(),
name=self._extract_name(description),
description=description,
steps=steps,
context=context or {},
creat

最低0.47元/天 解锁文章
2043

被折叠的 条评论
为什么被折叠?



