一、为什么你的 Agent 在生产环境总"翻车"?
过去半年,我帮团队把多个 LLM Demo 搬进了生产环境。发现 Agent 在实验室里表现越好,上线后越容易"抽风"——调用错 API、陷入循环、生成幻觉参数。根源在于:开放域的自主规划与垂直域的确定性要求之间存在天然矛盾。
学术界提出的 ReAct、CoT 模式确实强大,但在高频业务场景(如电商售后、数据运维)里,我们更需要可解释、可回滚、符合审计要求的执行路径。
二、"三明治"架构设计:让人工 SOP 做"护栏"
我的解法是把 Agent 拆成三层:
层级 |
职责 |
实现方式 |
感知层 |
接收用户输入,识别意图 |
Qwen3.6 意图分类 + 实体抽取 |
决策层 |
选择执行路径 |
规则引擎(人工 SOP)+ LLM 动态兜底 |
执行层 |
调用工具、返回结果 |
Function Calling + 本地微服务 |
核心思路是:高频路径走人工编排的 Workflow,异常分支才交给大模型自主决策。 这既保留了 LLM 的灵活性,又确保了核心链路的稳定性。
三、实战:基于百炼的售后工单 Agent
以下是一个简化版的决策层代码。我们先用 Qwen3.6 判断用户意图,再决定是否触发人工 SOP:
from dashscope import Generation import json # 定义人工SOP:退款流程必须严格执行 REFUND_SOP = { "steps": ["核实订单", "校验库存", "发起退款", "短信通知"], "api_sequence": ["check_order", "validate_stock", "create_refund", "send_sms"] } def agent_decision(user_query: str): # 第一步:意图识别(百炼Qwen3.6) response = Generation.call( model="qwen3-72b-instruct", messages=[{ "role": "system", "content": "你是意图识别专家,输出JSON:{intent: str, confidence: float}" }, { "role": "user", "content": user_query }] ) intent = json.loads(response.output.text) # 第二步:高频意图走SOP,低置信度走LLM自主规划 if intent["intent"] == "申请退款" and intent["confidence"] > 0.9: return {"mode": "SOP", "workflow": REFUND_SOP} else: return {"mode": "AUTO", "prompt": "请自主规划解决路径,可用的工具包括..."} # 执行层根据mode选择执行器
关键经验:
- Prompt 里要埋"钩子":在系统提示词中强制要求大模型输出
confidence_score,低于 0.85 一律转人工。 - 工具调用要限白名单:通过百炼的 Function Calling 功能,只开放特定 API,避免模型"胡思乱想"。
- 上下文要短:生产环境不要把整本手册塞给模型,用 RAG 动态检索相关 SOP 片段。
四、成本与模型选型建议
在模型选型上,Qwen3.6 的原生多模态能力和工具调用准确率非常适合做 Agent 的"大脑"。但如果你的 Agent 需要 7×24 小时跑在服务端,按量计费的 API 账单会是个隐形刺客。
我的建议是:先用按量模式验证 MVP,跑通后再切换到包月订阅。 阿里云百炼近期推出了面向个人开发者与中小企业的 Token Plan 订阅方案,支持多模型灵活切换、多模态调用,且承诺不使用对话数据训练,预算相对可控。如果你正在评估长期投入,可以先去了解当前的权益活动,看看是否有适合早期项目的入门套餐。
参考链接: 阿里云权益中心 - 云启 AI 普惠权益
五、总结
Agent 不是越"自主"越好。在生产环境里,"可控的智能"比"自由的幻觉"更有价值。 把高频路径交给人工 SOP,把边缘场景留给大模型,再配合百炼这类提供稳定模型服务与工具链的平台,才能真正让 Agent 从"玩具"变成"生产力"。