传统LLM vs Agent的本质区别

传统LLM:输入Prompt → 模型处理 → 输出文字。一次性完成,没有外部工具调用,没有中间状态。

Agent:可以调用工具(搜索、运行代码、读写文件)、根据工具返回结果决定下一步行动、循环迭代直到完成任务。

ReAct框架:三步循环

ReAct = Reasoning(推理)+ Acting(行动)。每个循环包含三步:

然后回到Thought,决定是继续循环还是输出最终答案。

完整ReAct循环伪代码

def agent_loop(task, tools, max_turns=10):
    messages = [{"role": "user", "content": task}]
    
    for turn in range(max_turns):
        # 1. 让模型思考(Thought)
        response = llm.chat(messages, tools=tools)
        
        # 2. 检查是否有工具调用(Action)
        if response.tool_calls:
            for tool_call in response.tool_calls:
                # 3. 执行工具,获取结果(Observation)
                result = execute_tool(tool_call.name, tool_call.args)
                messages.append({
                    "role": "tool",
                    "content": str(result),
                    "tool_call_id": tool_call.id
                })
        else:
            # 没有工具调用,说明任务完成,输出最终答案
            return response.content
    
    return "超出最大轮次限制"

真实执行trace示例

任务:分析今日A股大盘情况

[Turn 1]
Thought: 我需要先获取今日大盘数据
Action: web_search("A股 沪深300 今日行情")
Observation: 沪深300今日下跌0.8%,成交量缩量...

[Turn 2]
Thought: 我需要具体股票数据
Action: terminal("python3 analyze_stock.py 000001")
Observation: 上证指数3150.42,-0.62%...

[Turn 3]
Thought: 我已有足够信息,可以生成分析报告了
Final Answer: 今日A股整体偏弱,沪深300下跌0.8%...

停止条件设计

Agent的核心价值:它不是"一问一答",而是"一个目标,自主规划执行步骤"。适合那些你说"帮我做X",但具体怎么做需要AI自己决定的复杂任务。