
一、核心思想:ReAct 循环
自主智能体的本质是一个 "思考—行动—观察"的闭环,不是一次性问答:
Think(推理):LLM 分析当前状态,决定下一步该干什么
Act(行动):调用某个工具执行(搜索、写文件、跑代码、调 API…)
Observe(观察):把工具返回的结果喂回 LLM
Loop:没完成就回到 Think 继续推理;完成了就输出最终结果
关键点:LLM 不直接产出答案,而是产出一连串"动作",靠工具与环境交互,自己把任务一步步做出来。
二、四个必备组件
| 组件 | 作用 | 你需要准备什么 |
| LLM 大脑 | 推理 + 规划 + 决策 | 大模型 API+ 一个结构化 prompt |
| 工具库 Tools | 执行能力(否则 LLM 只会说话) | 把函数封装成统一签名的 tool,带名字/描述/参数 schema |
| 记忆 Memory | 存对话历史 + 中间结果 | 一个消息列表(短期),可选向量库(长期) |
| 循环控制 Loop | 驱动 Think→Act→Observe,判断结束 | 一个 while 循环 + 结束条件检测 |
三、实现的骨架(伪代码)
Python
messages = [system_prompt, user_task] while True: resp = llm.chat(messages, tools=tool_schemas) # LLM 推理 if resp.tool_calls: # 要行动 for call in resp.tool_calls: result = dispatch_tool(call.name, call.args) # Act messages.append(tool_result(call.id, result)) # Observe,喂回去 else: # 不再调用工具 = 完成 return resp.content # 输出最终结果
这就是全部骨架。关键是 LLM 自己决定调哪个工具、传什么参数、要不要继续,你的代码只负责"执行 + 喂回去 + 判断结束"。
四、让智能体真正"自主"的三个工程要点
System Prompt 要给角色和约束 — 告诉它"你是任务执行型智能体,先拆解任务再逐步执行,每步只做一件事,遇到不确定就调用工具核实"。这是它"会规划"的来源。
工具要用 function calling 标准格式 — 每个工具写清楚 name/description/parameters(JSON Schema)。描述写得好,LLM 选工具才准。把你想让它能干的事(读文件、搜索、HTTP 请求、执行代码…)都封装成工具。
必须设安全护栏 — 自主循环容易"跑飞"或烧 token:
最大循环次数(如 20 次)硬截断
单工具执行超时 + 报错回喂
危险操作(删文件、付款)走人工确认