这几周学习 AI 工程时,常常看到市面上充斥着把各种 Prompt 套个前端输入框就自称「Agent」的产品。但在自己亲手写了几个 Python 脚本之后,我愈发意识到:
LLM 是一个静态的无状态函数(Next-Token Predictor),而 Agent 是把这个函数放入控制流中的操作系统。
从请求-响应到 while 循环
如果一个程序只是 input ➔ LLM ➔ output,那它无论怎么包装也只是一个问答检索器。真正的智能体诞生在引入 while 循环的那一刻:
while not agent.is_done:
# 1. 思考与决定采取什么动作(或调用什么外部工具)
action = llm.decide(context)
# 2. 执行工具(网络查询、终端命令、文件读写)
observation = environment.execute(action)
# 3. 将真实反馈塞回上下文,决定下一步或结束
context.append(observation)
心跳的三步节拍
ReAct 论文给出的精髓不是提示词本身,而是将人类解决复杂工程问题的节奏符号化了:
- Thought(思考):当前目标是什么?我还缺少哪些关键事实?
- Action(行动):向真实环境投掷探针(读取文件第 42 行,调用 OpenCV 提取坐标);
- Observation(观察):物理世界的真实输出。
正是因为这个「基于物理世界反馈再做二次决策」的闭环,才让 AI 拥有了纠错能力。如果一次执行报错,它可以分析错误堆栈并尝试替代方案,而不是向用户抛出冰冷的报错。
为什么刻意避开 CRUD?
在大学很多同学都去学 Spring Boot 或 Django 写管理后台增删改查。但我总觉得,未来的软件工程不在于维护表单输入,而在于构建能理解现实输入(视觉、传感器)、并自主调用能力闭环的系统。
把时间花在 Python、计算机视觉与 Agent 控制循环上,去解决真实的不确定性,这种探索让我对编程保持长久的敬畏与兴奋。