Agent 开发实战记录

2024年下半年,Agent 这个词彻底火 了。

市面上各种 AI Agent 产品层出不穷,作为一个爱折腾的工程师,我决定自己动手写一个。

什么是 Agent

简单来说,Agent = LLM + Tools + Memory + Planning

传统的 LLM 只是回答问题,Agent 可以自主决策、调用工具、完成复杂任务。

核心架构

我设计了一个简单的 Agent 框架:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
class Agent:
def __init__(self, llm, tools, memory):
self.llm = llm
self.tools = tools
self.memory = memory

def run(self, task):
# 1. 理解任务
plan = self.planning(task)

# 2. 执行计划
for step in plan:
result = self.execute(step)
self.memory.add(result)

# 3. 检查结果,决定下一步
if not self.check(result):
plan = self.replan(task, result)

# 4. 返回最终结果
return self.memory.get_final()

关键模块

1. 工具调用 (Tool Calling)

这是 Agent 的核心能力。我用的是 ReAct 模式:

1
2
3
4
5
6
7
8
9
10
11
12
def execute(self, step):
tool_name = step["tool"]
params = step["params"]

tool = self.tools.get(tool_name)
result = tool(**params)

return {
"tool": tool_name,
"result": result,
"success": True
}

2. 记忆系统 (Memory)

短期记忆:当前任务的上下文
长期记忆:积累的经验和知识

1
2
3
4
5
6
7
8
class Memory:
def __init__(self):
self.short_term = [] # 当前对话
self.long_term = [] # 持久化存储

def add(self, item):
self.short_term.append(item)
# 定期归档到 long_term

3. 反思机制 (Reflection)

这是 Agent 能否”聪明”的关键:

1
2
3
4
5
6
def check(self, result):
# 让 LLM 评估结果
evaluation = self.llm.chat(
f"任务完成了吗?评估结果:{result}"
)
return "完成" in evaluation

踩过的坑

坑1:工具权限失控

Agent 拿到了太多权限,差点删了生产数据。

解决:严格控制工具权限,增加确认机制。

坑2:无限循环

Agent 反复执行同一个步骤,无法跳出。

解决:设置最大重试次数,超时强制终止。

坑3:幻觉

Agent 会自信地给出错误结果。

解决:增加验证步骤,让 Agent 自己检查结果。

现在的用法

目前这个 Agent 帮我:

  • 写代码和 code review
  • 查资料并整理成笔记
  • 自动化部署测试环境
  • 定时拉取行业资讯

展望

Agent 还在早期阶段,未来还有很长的路要走。

但有一点可以肯定:人与 AI 的协作方式,正在发生根本性的变化。