最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
第 1 篇:Agent 究竟是什么?别被概念唬住了
时间:2026-07-10 09:41:01 编辑:袖梨 来源:一聚教程网

前言
大家好,我是一名前端工程师。都说前端“已死“,那与其担心被 AI 替代,不如打入敌人内部,于是我开始折腾 Agent 开发。
折腾下来发现,Agent 的核心不是算法,而是”工程能力”(怎么设计架构、怎么串联服务、怎么把 LLM 的能力落地成产品)。这些恰好是我们擅长的事。
这个系列记录我从零搭建多 Agent 系统的完整过程。只聊技术知识和设计思路,代码交给 AI 写。如果你也想从应用层切入 AI,希望这个系列对你有帮助。
读完本篇你将学到:
- Agent 和普通 ChatBot 的本质区别;
- Agent 的核心循环:感知 → 思考 → 行动;
- 手写一个不依赖任何框架的 Agent(30 行代码);
- 接入 LLM 后 Agent 能做什么;
背景与动机
2024年开始,“Agent” 这个词被各种文章和产品反复提及。但大部分内容要么太学术,要么太营销(“AI Agent 将取代所有工作”)。
我的困惑很简单:Agent 和我直接调 ChatGPT API 有什么区别?
带着这个问题,我花了几周时间从零学习并实现了一个完整的多 Agent 系统。这个系列就是我的实战记录,不是翻译论文,而是一个前端工程师视角的动手笔记。
核心概念
Agent ≠ ChatBot

看一下详细对比:
| ChatBot | Agent | |
|---|---|---|
| 能力 | 接收问题,返回回答 | 接收目标,自主完成任务 |
| 工具 | 没有 | 有(搜索、API、数据库...) |
| 决策 | 无(问什么答什么) | 有(判断要不要用工具、用哪个) |
| 循环 | 单轮(一问一答) | 多轮(思考→行动→观察→再思考) |
一句话总结:ChatBot 是问答机器,Agent 是能干活的助手。
Agent 的核心公式

简单介绍一下:
- LLM:负责理解问题、做决策、生成回答;
- Tools:Agent 能调用的外部能力(查天气、搜网页、读数据库);
- Memory:记住之前聊过什么、做过什么;
- Loop:不断循环“思考 → 行动 → 观察”直到任务完成;
核心循环

这个循环有个学术名字叫 ReAct(Reasoning + Acting),但本质就是:想一想,干一下,看看结果,再想想够不够,最终再组织话术把完整的信息输出给用户。
动手实现
Step 1:最简 Agent(不用 LLM)
先不接大模型,用硬编码逻辑模拟 Agent 的决策过程。这样能看清 Agent 的骨架:
"""
最简 Agent:手动模拟 思考→行动→观察 循环
不依赖任何框架,不调用 LLM
"""# 工具定义
def get_weather(city):
"""模拟天气查询"""
data = {"北京": "晴, 25°C", "上海": "多云, 22°C"}
return data.get(city, f"暂无 {city} 的天气数据")TOOLS = {"get_weather": get_weather}# Agent 核心循环
def run_agent(user_input):
print(f"[用户] {user_input}")
print("=" * 50) # 第 1 步:思考(这里用规则模拟,后面会换成 LLM)
if "天气" in user_input:
# 提取城市名(简单粗暴)
for city in ["北京", "上海", "深圳"]:
if city in user_input:
# 第 2 步:行动
print(f"Thought: 用户问天气,需要调用工具")
print(f"Action: get_weather({city})")
result = TOOLS["get_weather"](city)
print(f"Observation: {result}") # 第 3 步:基于观察生成回答
answer = f"{city}今天的天气是{result},适合出门。"
print(f"Answer: {answer}")
return answer # 不需要工具,直接回答
print("Thought: 普通问题,直接回答")
answer = "你好!有什么可以帮你的?"
print(f"Answer: {answer}")
return answer
# 测试
run_agent("北京今天天气怎么样?")
print()
run_agent("你好")
运行输出:
[用户] 北京今天天气怎么样?
==================================================
Thought: 用户问天气,需要调用工具
Action: get_weather(北京)
Observation: 晴, 25°C
Answer: 北京今天的天气是晴, 25°C,适合出门。[用户] 你好
==================================================
Thought: 普通问题,直接回答
Answer: 你好!有什么可以帮你的?
看到了吗?这就是 Agent 的全部秘密:判断要不要用工具,用了之后看结果,再决定下一步。
Step 2:接入 LLM
上面的"思考"是硬编码的 if-else。真正的 Agent 用 LLM 来做决策——它能理解任何问题,自己判断该调什么工具。
我在实现的时候使用的是小米当时免费赠送的Token,这里直接用了mimo-v2.5-pro作为 LLM 来搭建我们的 Agent。有条件的可以购买DeepSeek,也可以找一找免费的,比如「硅基流动 SiliconFlow」。
注:不同的 LLM 提供商可能调用用的接口协议不一样(使用之前可以看一下接入文档),这里小米是支持兼容 OpenAI 接口协议的。
"""
接入 LLM 的 Agent
LLM 负责:理解问题 → 决定是否调工具 → 基于结果生成回答
"""
from openai import OpenAIclient = OpenAI(
api_key="your-key",
base_url="https://token-plan-cn.xiaomimimo.com/v1"
)TOOLS = {"get_weather": get_weather} # 复用上面的工具SYSTEM_PROMPT = """你是一个助手。你有以下工具可用:
- get_weather(city): 查询城市天气规则:
- 如果用户问天气,输出格式:Action: get_weather(城市名)
- 如果不需要工具,直接回答
"""def call_llm(messages):
resp = client.chat.completions.create(
model="mimo-v2.5-pro",
messages=messages,
temperature=0
)
return resp.choices[0].message.contentdef run_agent_with_llm(user_input):
messages = [
{"role": "system", "content": SYSTEM_PROMPT},
{"role": "user", "content": user_input}
] for round in range(5): # 最多循环 5 轮
response = call_llm(messages)
print(f"LLM: {response}") # 检查是否要调工具
if "Action: get_weather(" in response:
city = response.split("get_weather(")[1].split(")")[0]
result = TOOLS["get_weather"](city)
print(f"Tool Result: {result}")
# 把工具结果告诉 LLM,让它继续
messages.append({"role": "assistant", "content": response})
messages.append({"role": "user", "content": f"工具返回:{result}"})
else:
# 没有工具调用,说明 LLM 直接给出了最终回答
return response return "抱歉,处理超时了。"

关键变化:“思考”这一步从 if-else 变成了 LLM 调用。 LLM 能理解“上海天气如何”、“明天北京冷不冷”这些问题,不需要我们穷举关键词来匹配天气。
Step 3:验证效果
run_agent_with_llm("上海今天天气怎么样?")
# LLM: Action: get_weather(上海)
# Tool Result: 多云, 22°C
# LLM: 上海今天多云,气温22°C,体感舒适,适合外出。run_agent_with_llm("帮我对比一下北京和上海的天气")
# LLM: Action: get_weather(北京)
# Tool Result: 晴, 25°C
# LLM: Action: get_weather(上海)
# Tool Result: 多云, 22°C
# LLM: 北京晴天25°C,上海多云22°C。北京更暖和,两个城市都适合出门。
注意第二个例子:LLM 自己决定要调两次工具,先查北京再查上海,然后对比。这就是 Agent 的威力——你不需要写“如果用户问两个城市就调两次”的逻辑,LLM 自己会规划和决策。
刨根问底
| 序号 | 问题 |
|---|---|
| 1️⃣ | Q:LLM 和 Agent 到底什么关系? |
| A:LLM 是 Agent 的“大脑”,但不是 Agent 本身。LLM 只能生成文本,不能查天气、不能读数据库、不能发邮件。Agent 是在 LLM 外面包了一层——给它工具、给它循环、给它记忆,让它从“只会说”变成“能干活”。 | |
| 2️⃣ | Q:为什么 LLM 每轮循环都会按照固定格式输出,并且告诉我们需要调用的工具? |
| A:因为在调用 LLM 的时候就给他约定了 SYSTEM_PROMPT,所以在每轮思考时都会按照这个约定来输出内容。 | |
| 3️⃣ | Q:在调 LLM 的时候,temperature 参数是什么? |
| A:控制 LLM 输出的“随机性”。temperature=0 时输出最确定(适合工具调用、分类判断),temperature=0.5-1 时输出更有创造力(适合写文案、聊天)。Agent 做决策时一般用 0,写作时用 0.5。 |
本篇小结
- Agent 的本质是 LLM + 工具 + 循环,30行代码就能写一个能用的 Agent,不是什么神秘的东西;
- 核心循环:思考(LLM)→ 行动(调工具)→ 观察(看结果)→ 再思考;
- LLM 的价值在于通用决策,只要你约定好了Prompt,它就能按照固定格式输出,告诉你需要调度什么工具,不需要为每种问题写 if-else;
写在最后
AI 发展太快,焦虑很正常。但与其焦虑,不如动手拆解它——你会发现 Agent 没有想象中那么神秘,本质就是一个循环加几个 API 调用。真正的门槛不在技术本身,而在于你愿不愿意花时间把它跑通一遍。
下一篇预告:Agent 有三种经典的工作模式(ReAct、Plan-and-Solve、Reflection),各有什么优劣?什么场景用哪种?
相关文章
- 对于百模大战:几乎所有大佬的口风都180 °大转变了? 07-10
- 生成AI能加速汽车自动驾驶实现吗? 07-10
- Codex在Windows中的安装:配置与卸载的完整指南 07-10
- CFO与CIO跨界对谈:企业数智跃迁不只是经营重构|从数字化到AI系列对话 07-10
- 少儿趣配音app如何查看配音报告 07-10
- Oracle数据库迁移:从低版本升级到高版本的核心步骤 07-10