系列专栏:100 天系统学习 AI Agent 开发
当前阶段:Agent 基础与核心概念打底

AI Agent 大模型 Agent开发 Python ReAct

1. 拆解核心:别把大模型等同于 Agent

在真正写代码前,我们要先划清责任边界。新手最容易产生的误解是:“我只要把 Prompt 写得足够长、足够复杂,大模型就能自动帮我把活干了”。

其实不然。在 Agent 的架构里,责任是这样划分的:

  • 大模型(LLM)负责“大脑”:理解意图、拆解任务、决定下一步该调用什么工具。
  • 代码工程负责“手脚和护栏”:执行工具调用、处理网络请求、进行权限校验、状态流转以及异常兜底。

这就意味着,一个真正的 Agent 必须能跑通下面这个最小闭环
用户输入 -> 模型思考(决策) -> 调用外部工具 -> 观察工具返回结果 -> 综合判断 -> 输出最终回复。

2. 核心产物:Agent 的最小闭环伪代码

为了不让今天的学习只停留在概念上,我画了一个最小 Agent 闭环的流程,并用伪代码把它具象化。这其实也是经典 ReAct(Reasoning and Acting)模式的缩影。

落地到代码逻辑,大体是这样的:

def simple_agent_loop(user_input, max_iterations=5):
    # 1. 初始状态
    current_state = f"用户目标: {user_input}"
    
    for _ in range(max_iterations):
        # 2. 模型决策 (大脑思考)
        # 模型根据当前状态决定是直接回答,还是调用工具
        decision = llm.think(current_state)
        
        # 3. 结果判断
        if decision.type == "FINAL_ANSWER":
            return decision.content # 任务完成,退出循环
            
        elif decision.type == "TOOL_CALL":
            # 4. 调用工具与观察 (比如查询 Milvus 向量库或请求外部 API)
            try:
                tool_result = execute_tool(decision.tool_name, decision.parameters)
            except Exception as e:
                tool_result = f"工具调用失败: {e}" # 代码必须做异常兜底
            
            # 5. 更新状态,进入下一轮循环
            current_state += f"\n调用 {decision.tool_name} 结果: {tool_result}"
            
    return "Agent 运行超时,未能完成任务。"

这段几行代码虽然简单,但它清晰地标出了模型负责决策,而我们的代码逻辑负责循环控制、工具执行和失败兜底

3. 今日踩坑与复盘

在构思这个闭环时,我意识到一个极易踩的坑:不要一上来就去追逐 Multi-Agent(多智能体)。

很多人单 Agent 的工具边界、上下文状态和失败重试机制都没写明白,就急着引入多 Agent 协同。这只会把单点故障无限放大,最后连 Bug 在哪都找不到。先老老实实把单个 Agent 的“思考-行动-观察”链条跑通,才是正道。

4. 学习存盘

为了让这 100 天的努力留下结构化的痕迹,我决定每天留下一个可复用的学习快照,存进项目的 README 或笔记库中:

{
    "day": 1,
    "topic": "Agent 最小闭环",
    "core_insight": "Agent = LLM + Memory + Planning + Tools。核心是从单次对话转向目标驱动的循环。",
    "daily_output": "手写了基于 ReAct 思想的 5 行伪代码核心循环逻辑。",
    "pitfall": "单 Agent 的状态和兜底没做好之前,绝对不要碰多 Agent。",
    "next_step": "闭环有了,但驱动这个闭环需要模型 API 的支持。明天解决基础建设问题。"
}

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐