
大模型会聊天,但不会自己查资料、改数据、发邮件。Agent 补的正是这块:它让模型不只回答问题,还能规划、调用工具、观察结果、继续行动。技术听起来复杂,最小实现其实十几行就能跑。
普通程序:人写死流程,机器执行。 Agent:人给目标和工具,模型自己决定下一步做什么。
差别就在“决策权”转移了。传统软件里,if-else 是人写好的;Agent 里,走哪条路由模型动态判断。这也意味着:能力更大,风险更大。
部件 | 作用 | 关键问题 |
|---|---|---|
大脑 | 理解、推理、决策 | 用哪个模型,成本多少 |
工具 | 执行具体动作 | 有哪些,参数怎么填 |
循环 | 思考→行动→观察→再思考 | 最多几步,何时停 |
记忆 | 保持上下文和状态 | 存多久,怎么检索 |
少任何一个,都不是完整 Agent。只有大脑是聊天机器人,只有工具是自动化脚本。
下面这段 Python 展示了 Agent 最核心的 ReAct 循环,代码不长,但骨架完整。
import os, json
from openai import OpenAI
c = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
tools = {"搜索": lambda q: f"关于{q}的资料", "计算": lambda e: str(eval(e))}
def run(task):
m = [{"role": "system", "content": f"工具:{list(tools)}。需要时输出JSON{{tool,args}},否则{{reply}}。"},
{"role": "user", "content": task}]
for _ in range(5):
o = c.chat.completions.create(model="gpt-4o-mini", messages=m).choices[0].message.content
try:
d = json.loads(o)
except:
return o
if "reply" in d:
return d["reply"]
r = tools[d["tool"]](**d["args"])
m += [{"role": "assistant", "content": o}, {"role": "user", "content": f"观察:{r}"}]
return "达到最大步数"
print(run("搜索AI Agent趋势,计算3的平方"))核心逻辑:模型输出 JSON 决定调哪个工具,程序执行,把观察结果喂回去,直到模型给出最终回答。
上面那段代码能跑,但离上线还差五件事:
第一,工具鉴权。 每个工具调用必须校验用户身份和权限。模型说“可以退款”,服务端不能直接退。
第二,幂等与确认。 发邮件、改数据、付款,都要幂等键和二次确认。危险操作必须有人工兜底。
第三,失败处理。 工具超时、返回空、解析失败,都要有重试和降级。最后一步永远是“转人工”。
第四,状态与记忆。 短期存对话,长期存知识,任务状态用 JSON 记录“待办、完成、失败”。
第五,可观测。 日志、追踪、指标、评测集,盯住任务成功率、平均步数、单次成本、越权次数。
场景 | 做什么 | 关键工具 |
|---|---|---|
智能客服 | 查订单、改地址、退款 | 订单系统、支付接口 |
研发助手 | 查日志、读代码、提 PR | Git、监控、CI |
办公自动化 | 排日程、写周报、发通知 | 日历、邮件、文档 |
数据分析 | 查库、算指标、出图表 | SQL、BI、绘图 |
电商运营 | 写文案、调价格、盯竞品 | 商品库、广告平台 |
共同点:模型负责决策和表达,工具负责执行和取数。
Agent 翻车,多半不是代码错,而是提示词没写清。好提示词要包含:
例如:“你是客服 Agent。退款前必须先查订单,金额超500元转人工。只输出 JSON。” 但提示词只是第一层,服务端必须再校验。
第一,没有最大步数,Agent 无限循环烧钱。 第二,工具描述模糊,模型选错工具。 第三,危险操作无确认,一喊就执行。 第四,JSON 解析无兜底,格式一错程序就崩。 第五,不做评测,改一版提示词不知道变好还是变坏。 第六,把所有逻辑塞进一个提示词,越长越乱。
Agent 技术与应用,代码可以只有十几行,但边界要写几十条。它真正的价值,不是替代人,而是把“理解→决策→执行→反馈”串成闭环。
记住:模型负责想,工具负责做,循环负责推进,你负责定边界。 先跑通最小循环,再逐步加鉴权、幂等、记忆和评测。这样,Agent 才不只是演示,而是真正能上线的智能应用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。