演示视频里的智能体,能查订单、能退款、能发邮件,像全能助理。真实业务里的智能体,可能查错订单、退款两次、把内部数据发给不该看的人。真实场景开发,难点从来不是模型会不会说话,而是边界有没有写进代码和流程。
维度 | 玩具 | 真实场景 |
|---|---|---|
对话 | 单轮 | 多轮,有上下文 |
状态 | 无 | 任务状态、用户身份 |
工具 | 无害查询 | 改数据、发消息、动钱 |
失败 | 重来一次 | 回滚、幂等、转人工 |
成本 | 无所谓 | 要算 token 和调用次数 |
安全 | 不设防 | 鉴权、审计、脱敏 |
一句话:玩具只要“能跑”,生产要“跑不坏”。
下面这段 Python 只有十几行,却是一个真实客服智能体的最小循环:模型决定调工具,程序执行,再把观察结果喂回去。
import os, json
from openai import OpenAI
c = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
T = {
"查订单": lambda oid: f"订单{oid}已发货",
"退款": lambda oid: f"订单{oid}退款已提交",
}
def run(q):
m = [
{"role": "system", "content": "你是客服智能体。工具:查订单(oid)、退款(oid)。退款前必须先查订单。需要时只输出JSON {tool,args},否则{reply}。"},
{"role": "user", "content": q},
]
for _ in range(3):
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 = T[d["tool"]](**d["args"])
m += [
{"role": "assistant", "content": o},
{"role": "user", "content": f"观察:{r}"},
]
return "转人工"这段代码跑通了“理解 → 选工具 → 执行 → 回复”。但它离上线,还差五件事。
第一,身份和权限。 工具调用必须带用户身份,服务端再校验一次。不能因为模型说“可以退款”,就直接退。模型只负责建议,权限必须由系统判断。
第二,幂等和确认。 退款、发邮件、删数据,都要幂等键,避免重复执行。危险操作要二次确认,金额大、影响广的,直接转人工。
第三,状态和记忆。 短期记忆存对话,长期记忆存知识,任务状态用 JSON 记录“待办、完成、失败、等待确认”。没有状态,智能体每轮都像失忆。
第四,失败和降级。 工具超时怎么办?返回空怎么办?重试几次?失败后能不能回滚?真实系统必须有兜底,最后一步永远是“转人工”。
第五,可观测和评测。 日志、追踪、指标、评测集,一个都不能少。至少要盯:任务成功率、平均步数、单次成本、越权次数、重复操作次数。
提示词不是许愿池,而是规则书。真实场景的提示词要写清:
例如:
你是客服智能体。可用工具:查订单(oid)、退款(oid)。规则:1. 退款前必须先查订单;2. 订单不存在或已退款,不得调用退款;3. 金额超过 500 元,转人工;4. 只输出 JSON。
但记住:提示词只是第一层,服务端必须再校验一遍。
用户说:“我要退款。” 智能体不能直接退款。它应该:先查订单,确认状态,询问原因,判断金额,满足条件才调用退款,最后告知结果。上面那段代码的循环,正好支持“先查后做”。
但真实系统还要加:用户身份、订单归属、退款幂等、金额限制、人工审核、操作日志。少了任何一项,都可能出事。
第一,没有最大步数,智能体无限循环。 第二,工具没有鉴权,模型一喊就执行。 第三,危险工具直接暴露,没有二次确认。 第四,不校验 JSON,解析失败就崩。 第五,不记录日志,出事查不到。 第六,没有评测集,改一版提示词不知道变好还是变坏。
真实场景的智能体开发,代码可以只有十几行,但规则要写几十条。模型负责想,工具负责做,你负责边界。先跑通最小闭环,再逐步加权限、幂等、评测和监控。
记住:能演示的智能体很多,能上线的,都是把边界写进代码和流程里的。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。