Skip to content

Agent 到底是什么

最开始以为 Agent 就是调 ChatGPT API。后来发现不是这么回事。

一个例子说清楚

不用 Agent:用户问「今天深圳天气怎么样」,LLM 直接回答(训练数据里可能有,也可能是编的)。

用 Agent:用户问「今天深圳天气怎么样」,LLM 说「我需要查天气 API」→ 系统调天气 API 拿到「28°C,多云」→ LLM 基于这个真实数据回答「今天深圳 28 度,多云」。

区别:Agent 能调用外部工具获取实时信息,而不是只靠训练时记住的东西。

核心循环:ReAct

ReAct = Reasoning(思考)+ Acting(执行)。循环是:

Thought: 我需要查天气
Action: 调用 weather_api("深圳")
Observation: 返回 { "temp": 28, "weather": "多云" }
Thought: 拿到数据了,可以回答
Final Answer: 今天深圳 28 度,多云

「Action」这一步是 Agent 和普通 LLM 的本质区别——LLM 不只是说话,还能做事。

Function Calling 是 ReAct 的实现方式

OpenAI/DeepSeek 的 Function Calling 就是让 LLM 输出 JSON 格式的函数调用意图,系统解析后执行函数,结果还给 LLM。

json
{
  "tool_calls": [{
    "function": {
      "name": "get_weather",
      "arguments": "{\"city\": \"深圳\"}"
    }
  }]
}

LLM 本身不执行代码——它只是「说」要调哪个函数、传什么参数。执行是外面系统的事。

和 RAG 的关系

RAG 本质上是 Agent 的一种特例——Agent 的「工具」是一个检索系统。Agent 思考「我需要查知识库」,调 RAG 工具,拿到上下文,生成回答。

我下一个项目就是把 Agent 和 RAG 系统集成——让 LLM 自己决定什么时候检索、什么时候直接回答。