企业业务流程型Agent架构实战
🧠 摘要 在企业项目落地过程中,Agent 最具商业价值的场景不是“问答”,而是流程:审批自动化、报表生成、客户服务、入职流程、订单流转等。它们天然具备结构化输入、清晰阶段、明确规则,却又充满信息冗余与重复劳动,正是智能体系统最适合切入的空间。
一、为什么企业级 Agent 应该从「流程型任务系统」切入?
问答不等于智能,流程才是生产力场景。审批 × 报表 × 客服,本质都是「状态驱动 + 动作执行」的智能流程。
很多团队落地 Agent 系统时,优先选择做问答机器人: ❌ 文档问答系统 ❌ 客户知识搜索助手 ❌ “问啥答啥”的 AI 小助手
这类产品有智能体验,但落地业务会遇到明显问题:
•
模型输出不稳定
•
无法控制行为路径
•
结果不可复用、不可回放、不可复审
•
难以嵌入流程系统 / ERP / 表单审批流
企业真正高价值是大量重复、标准化、流程化工作:
#rLnaTAtJMDUU text { white-space: pre; }#rLnaTAtJMDUU .fb0 { stroke: var(--N900-FG, 0.15); }#rLnaTAtJMDUU .fb0 {stroke: rgba(31,35,41, 0.15)}#rLnaTAtJMDUU .fx0 { stroke-miterlimit: 10; }#rLnaTAtJMDUU .fx0 {stroke-miterlimit: 10}#rLnaTAtJMDUU .fa1 { fill: rgb(187, 191, 196); }#rLnaTAtJMDUU .fa1 {fill: rgb(187, 191, 196)}#rLnaTAtJMDUU .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#rLnaTAtJMDUU .fx1 {font-style: normal}#rLnaTAtJMDUU .fx2 { text-anchor: middle; }#rLnaTAtJMDUU .fx2 {text-anchor: middle}#rLnaTAtJMDUU .fx3 { dominant-baseline: central; }#rLnaTAtJMDUU .fx3 {dominant-baseline: central}#rLnaTAtJMDUU .fx4 { stroke: none; }#rLnaTAtJMDUU .fx4 {stroke: none}#rLnaTAtJMDUU .fc0 { fill: var(--text-caption); }#rLnaTAtJMDUU .fc0 {fill: #646a73}#rLnaTAtJMDUU .fa2 { fill: var(--text-link-disabled); }#rLnaTAtJMDUU .fa2 {fill: rgb(187, 191, 196)}#rLnaTAtJMDUU .fx5 { font: 700 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#rLnaTAtJMDUU .fx5 {font-style: normal}#rLnaTAtJMDUU .fx6 { text-anchor: start; }#rLnaTAtJMDUU .fx6 {text-anchor: start}#rLnaTAtJMDUU .fx7 { dominant-baseline: alphabetic; }#rLnaTAtJMDUU .fx7 {dominant-baseline: alphabetic}#rLnaTAtJMDUU .fc1 { fill: rgb(0, 0, 0); }#rLnaTAtJMDUU .fc1 {fill: rgb(0, 0, 0)}#rLnaTAtJMDUU .fx8 { font: 400 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#rLnaTAtJMDUU .fx8 {font-style: normal}#rLnaTAtJMDUU .fb1 { fill: var(--N900-FG, 0.15); }#rLnaTAtJMDUU .fb1 {fill: rgba(31,35,41, 0.15)}#rLnaTAtJMDUU .fa3 { fill: var(--bg-body); }#rLnaTAtJMDUU .fa3 {fill: #fff}AB1234业务流程核心任务审批流报表流客服流识别表单内容 → 判定是否合规 → 触发流程转移对比上传数据 → 抽取指标 → 生成日报/周报多轮对话理解 → 生成答复内容 → 标记处理状态
这类场景非常适合 Agent 介入: ✅ 提取关键信息 ✅ 判定行为路径 ✅ 生成可复用结果 ✅ 管理任务状态与角色权限 ✅ 具备过程透明性与可审计性
📌 换句话说:流程型任务系统才是 Agent 真正成为生产力工具的起点。
二、统一流程型 Agent 系统的核心结构设计
企业流程不等同于传统 BPM 流程图引擎,而是一种 Agent 可理解 × 可执行 × 可反馈 的智能流程结构。核心由三大组件构成:
流程定义器(FlowSchema × DSL × Graph)
用来描述:
•
流程包含哪些阶段
•
每个阶段由哪个 Agent 执行
•
阶段之间跳转逻辑
•
何时进入终态 / 失败态
代码块
Plain Text
{
"flow_id": "approval_001",
"nodes": [
{"id": "start", "type": "input", "agent": "FormReaderAgent"},
{"id": "validate", "type": "decision", "agent": "PolicyCheckAgent"},
{"id": "approve", "type": "action", "agent": "SupervisorAgent"},
{"id": "end", "type": "terminal"}
📌 这是一套迷你 DSL(流程图语义),本质构建任务状态图。
状态机引擎(StateNode × EventTrigger × TransitionGuard)
流程系统是状态机,维护:
•
当前节点状态
•
可触发事件(用户行为 / Agent 输出)
•
节点跳转条件与守卫函数(通过/失败)
代码块
Plain Text
📌 将上下文封装为 task_state,支持多 Agent 注入输入数据。
多 Agent 注册体系(Role × Trigger × Action)
Agent 注册机制定义:
•
Agent 负责哪个流程节点
•
输入数据格式
•
输出写入流程哪个变量
•
输出后是否触发流程跳转
代码块
Plain Text
{
"agent": "FormReaderAgent",
"role": "表单结构抽取",
"input": {"form_image": "base64"},
"output": {"fields": "dict"},
"bind_node": "start"
}
📌 每个 Agent 成为流程系统的动作节点,由流程引擎统一调度执行。
组件汇总表
三、实战场景一:审批流程 × 表单智能抽取 × 多级指令判定
🎯 场景简介:员工报销审批流 业务原始流程:
员工提交发票图片 / 报销申请表
系统自动抽取信息(发票号、金额、科目)
判断是否符合公司制度(是否超额、是否重复、是否特殊类别)
根据规则流转审批链(直属上级 → 财务 → 管理层)
生成审批报告,反馈结果给员工
步骤一:构建流程图结构(FlowSchema)
代码块
Plain Text
步骤二:Agent 注册与输入输出结构
#UPOUUPNzmFzr text { white-space: pre; }#UPOUUPNzmFzr .fb0 { stroke: var(--N900-FG, 0.15); }#UPOUUPNzmFzr .fb0 {stroke: rgba(31,35,41, 0.15)}#UPOUUPNzmFzr .fx0 { stroke-miterlimit: 10; }#UPOUUPNzmFzr .fx0 {stroke-miterlimit: 10}#UPOUUPNzmFzr .fa1 { fill: rgb(187, 191, 196); }#UPOUUPNzmFzr .fa1 {fill: rgb(187, 191, 196)}#UPOUUPNzmFzr .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#UPOUUPNzmFzr .fx1 {font-style: normal}#UPOUUPNzmFzr .fx2 { text-anchor: middle; }#UPOUUPNzmFzr .fx2 {text-anchor: middle}#UPOUUPNzmFzr .fx3 { dominant-baseline: central; }#UPOUUPNzmFzr .fx3 {dominant-baseline: central}#UPOUUPNzmFzr .fx4 { stroke: none; }#UPOUUPNzmFzr .fx4 {stroke: none}#UPOUUPNzmFzr .fc0 { fill: var(--text-caption); }#UPOUUPNzmFzr .fc0 {fill: #646a73}#UPOUUPNzmFzr .fa2 { fill: var(--text-link-disabled); }#UPOUUPNzmFzr .fa2 {fill: rgb(187, 191, 196)}#UPOUUPNzmFzr .fx5 { font: 700 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#UPOUUPNzmFzr .fx5 {font-style: normal}#UPOUUPNzmFzr .fx6 { text-anchor: start; }#UPOUUPNzmFzr .fx6 {text-anchor: start}#UPOUUPNzmFzr .fx7 { dominant-baseline: alphabetic; }#UPOUUPNzmFzr .fx7 {dominant-baseline: alphabetic}#UPOUUPNzmFzr .fc1 { fill: rgb(0, 0, 0); }#UPOUUPNzmFzr .fc1 {fill: rgb(0, 0, 0)}#UPOUUPNzmFzr .fx8 { font: 400 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#UPOUUPNzmFzr .fx8 {font-style: normal}#UPOUUPNzmFzr .fx9 { font: 400 13px LarkHackSafariFont, LarkEmojiFont, "monospace", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "Noto Sans", Tahoma, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", STHeiti, SimHei, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui; }#UPOUUPNzmFzr .fx9 {font-style: normal}#UPOUUPNzmFzr .fb1 { fill: var(--N900-FG, 0.15); }#UPOUUPNzmFzr .fb1 {fill: rgba(31,35,41, 0.15)}#UPOUUPNzmFzr .fa3 { fill: var(--bg-body); }#UPOUUPNzmFzr .fa3 {fill: #fff}ABCD12345Agent功能输入输出FormReaderAgentPolicyCheckAgentTeamLeadAgentFinanceAgent提取票据结构校验是否违规部门审批财务终审发票图片抽取数据校验通过后 trigger审批意见 + 结构数据{ "invoice_no": "xxx", "amount": 123, ... }{"pass": true, "reason": "金额未超限"}{"opinion": "同意", "signed_by": "张经理"}{"final_result": "通过"}
📌 所有中间输出写入 task_state.agent_outputs,系统依靠 task_state 完成流程跳转。
步骤三:流程判定规则(TransitionGuard)
代码块
Plain Text
class RuleEngine:
def validate_policy(state):
amount = state["agent_outputs"]["FormReaderAgent"]["amount"]
if amount > 10000:
return {"condition": "reject"}
return {"condition": "pass"}
📌 通过规则引擎来实现节点跳转条件判断。
步骤四:Prompt 模板设计(PolicyCheckAgent)
代码块
Plain Text
请根据以下报销信息判断是否存在违反公司财务制度的情况:
报销信息:
- 金额:{{amount}} 元
- 科目:{{category}}
- 附件数量:{{attachments_count}}
输出格式:
{
"pass": true/false,
"reason": "..."
}
🧠 模板+动态变量注入,保证流程行为稳定可控。
拓展能力建议
#XMwOUBPlIonU text { white-space: pre; }#XMwOUBPlIonU .fb0 { stroke: var(--N900-FG, 0.15); }#XMwOUBPlIonU .fb0 {stroke: rgba(31,35,41, 0.15)}#XMwOUBPlIonU .fx0 { stroke-miterlimit: 10; }#XMwOUBPlIonU .fx0 {stroke-miterlimit: 10}#XMwOUBPlIonU .fa1 { fill: rgb(187, 191, 196); }#XMwOUBPlIonU .fa1 {fill: rgb(187, 191, 196)}#XMwOUBPlIonU .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#XMwOUBPlIonU .fx1 {font-style: normal}#XMwOUBPlIonU .fx2 { text-anchor: middle; }#XMwOUBPlIonU .fx2 {text-anchor: middle}#XMwOUBPlIonU .fx3 { dominant-baseline: central; }#XMwOUBPlIonU .fx3 {dominant-baseline: central}#XMwOUBPlIonU .fx4 { stroke: none; }#XMwOUBPlIonU .fx4 {stroke: none}#XMwOUBPlIonU .fc0 { fill: var(--text-caption); }#XMwOUBPlIonU .fc0 {fill: #646a73}#XMwOUBPlIonU .fa2 { fill: var(--text-link-disabled); }#XMwOUBPlIonU .fa2 {fill: rgb(187, 191, 196)}#XMwOUBPlIonU .fx5 { font: 700 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#XMwOUBPlIonU .fx5 {font-style: normal}#XMwOUBPlIonU .fx6 { text-anchor: start; }#XMwOUBPlIonU .fx6 {text-anchor: start}#XMwOUBPlIonU .fx7 { dominant-baseline: alphabetic; }#XMwOUBPlIonU .fx7 {dominant-baseline: alphabetic}#XMwOUBPlIonU .fc1 { fill: rgb(0, 0, 0); }#XMwOUBPlIonU .fc1 {fill: rgb(0, 0, 0)}#XMwOUBPlIonU .fx8 { font: 400 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#XMwOUBPlIonU .fx8 {font-style: normal}#XMwOUBPlIonU .fx9 { font: 400 13px LarkHackSafariFont, LarkEmojiFont, "monospace", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "Noto Sans", Tahoma, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", STHeiti, SimHei, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui; }#XMwOUBPlIonU .fx9 {font-style: normal}#XMwOUBPlIonU .fb1 { fill: var(--N900-FG, 0.15); }#XMwOUBPlIonU .fb1 {fill: rgba(31,35,41, 0.15)}#XMwOUBPlIonU .fa3 { fill: var(--bg-body); }#XMwOUBPlIonU .fa3 {fill: #fff}AB12345能力实现方式动态审批人注入审批意见总结多轮补充材料审计回放 决定审批路径SummaryAgent 对多级审批做 NLP 总结AsyncFlow + MessageAgent 请求用户补件trace_id 保存全流程输出,支持审计回查task_state["user_info"]
📌 报销审批 Agent 系统收益:
•
判断逻辑通过 Prompt + Tool 快速组合
•
流程路径可控,支持条件跳转、动态插入、链路回滚
•
Agent 每一步行为可追踪、可复盘、可 Debug
•
将多人人工协作转为多智能体协作,增强系统感知能力
四、实战场景二:报表流转 × 数据对齐 × KPI × NLP 多模联动
🎯 场景简介:日报 / 周报自动生成任务 业务痛点:业务人员需要上传截图、复制数据、填写KPI、撰写总结、提交上级审核,重复度高、人效低。
🎯 系统目标:上传报表截图 → 结构化抽取 → 自动总结 → 审核输出
核心步骤拆解
task_state 示例结构:
代码块
Plain Text
{
"agent_outputs": {
"VisionAgent": {"table": [[...], [...]]},
Prompt 结构控制(SummaryAgent)
代码块
Plain Text
请根据以下 KPI 数据,生成一条日报内容,要求风格简洁、符合业务用语:
KPI 数据:
- 销售额:{{销售额}}
- 同比增长:{{同比}}
输出:
- 中文一句话
- 开头报数据,结尾给判断
📌 支持多套输出版本:正式/新闻/创意,通过参数切换。
审核模块设计(CriticAgent)
职责:校验输出风格、打分、给出改写建议,不合格则回退重生成。
代码块
Plain Text
{
"score": 0.91,
"pass": true,
"suggestion": null
}
🧠 可接入大模型打分器,也可基于关键词规则校验。
多模输入整合机制
支持图片、Excel、语音多种输入源:
代码块
Plain Text
{
不同模态并发调用Agent处理:
代码块
Plain Text
results = await gather(
vision_agent.receive(image),
excel_agent.receive(excel),
asr_agent.receive(audio)
)
📌 多模态输出汇总到统一状态池,交由 KPIAgent 做联合处理。
输出合成策略
ReportBuilderAgent 统一组装结果:
代码块
Plain Text
{
"report": "今日销售额122万,同比上涨14%。",
"data": {
"表格": "...",
"kpi": {...},
"审核意见": "合格"
}
}
支持能力:Markdown导出、推送至企业IM、trace日志存档。
📌 完整任务闭环: 图像/数据输入 → 多模抽取 → 指标解析 → NLP生成 → 内容审核 → 汇总输出 适用于日报、周报、财务数据流、质量周报等场景。
五、实战场景三:客服自动流转系统 × 工单理解 × 多轮状态管理
🎯 场景简介:客户支持与工单处理流程 业务流程:用户发起咨询 → 自动分类生成答复 → 工单流转人工 → 多轮上下文跟踪 → 归档审计。
客服任务独有特征:
🎯 系统目标:多轮对话理解 + 工单流转 + 状态闭环
Agent角色设计
#ATmKspMGofZI text { white-space: pre; }#ATmKspMGofZI .fb0 { stroke: var(--N900-FG, 0.15); }#ATmKspMGofZI .fb0 {stroke: rgba(31,35,41, 0.15)}#ATmKspMGofZI .fx0 { stroke-miterlimit: 10; }#ATmKspMGofZI .fx0 {stroke-miterlimit: 10}#ATmKspMGofZI .fa1 { fill: rgb(187, 191, 196); }#ATmKspMGofZI .fa1 {fill: rgb(187, 191, 196)}#ATmKspMGofZI .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#ATmKspMGofZI .fx1 {font-style: normal}#ATmKspMGofZI .fx2 { text-anchor: middle; }#ATmKspMGofZI .fx2 {text-anchor: middle}#ATmKspMGofZI .fx3 { dominant-baseline: central; }#ATmKspMGofZI .fx3 {dominant-baseline: central}#ATmKspMGofZI .fx4 { stroke: none; }#ATmKspMGofZI .fx4 {stroke: none}#ATmKspMGofZI .fc0 { fill: var(--text-caption); }#ATmKspMGofZI .fc0 {fill: #646a73}#ATmKspMGofZI .fa2 { fill: var(--text-link-disabled); }#ATmKspMGofZI .fa2 {fill: rgb(187, 191, 196)}#ATmKspMGofZI .fx5 { font: 700 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#ATmKspMGofZI .fx5 {font-style: normal}#ATmKspMGofZI .fx6 { text-anchor: start; }#ATmKspMGofZI .fx6 {text-anchor: start}#ATmKspMGofZI .fx7 { dominant-baseline: alphabetic; }#ATmKspMGofZI .fx7 {dominant-baseline: alphabetic}#ATmKspMGofZI .fc1 { fill: rgb(0, 0, 0); }#ATmKspMGofZI .fc1 {fill: rgb(0, 0, 0)}#ATmKspMGofZI .fx8 { font: 400 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#ATmKspMGofZI .fx8 {font-style: normal}#ATmKspMGofZI .fb1 { fill: var(--N900-FG, 0.15); }#ATmKspMGofZI .fb1 {fill: rgba(31,35,41, 0.15)}#ATmKspMGofZI .fa3 { fill: var(--bg-body); }#ATmKspMGofZI .fa3 {fill: #fff}ABC1234567Agent角色功能UserInputAgentIntentClassifierQAAgentSentimentAgentRouterAgentLogAgent对话接入意图分类回答生成情绪识别流转控制日志记录接收用户输入,维护多轮历史上下文判断用户请求类型,标记业务场景检索知识库,生成应答文本判断情绪,识别转人工条件根据状态决定转人工或直接归档工单写入、标签标记、质量打分
task_state 示例:
代码块
Plain Text
{
"user_input": "我的订单没收到也没人联系我怎么办",
"agent_outputs": {
"IntentClassifier": {"intent": "订单未配送"},
"QAAgent": {"answer": "很抱歉,请提供订单号,我们将尽快处理"},
"SentimentAgent": {"anger": 0.8},
"RouterAgent": {"action": "转人工"}
},
"status": "处理中",
"trace": [...]
}
对话状态管理机制
双结构存储:
•
session_context:保存对话历史
•
task_state:保存业务结构化流转状态
代码块
Plain Text
{
"session_context": [
{"role": "user", "content": "..."},
{"role": "agent", "content": "..."},
{"role": "user", "content": "那到底什么时候能到货"}
]
}
Prompt 控制(IntentClassifier)
代码块
Plain Text
你是一个意图识别智能体,请根据以下用户对话内容判断用户的诉求。
历史对话:
{{session_context}}
当前输入:
{{user_input}}
请输出如下结构:
{
"intent": "订单查询 / 投诉 / 售后 / 咨询 / 其他",
"confidence": 0.92
}
多轮触发策略
•
每三轮对话重新做意图分类
•
情绪分值超过阈值自动转人工
•
答案匹配失败3次,兜底应答+转人工
工单归档与审计
会话结束落盘完整工单记录:
代码块
Plain Text
{
"ticket_id": "tk-20250423-001",
"intent": "投诉",
"final_response": "请放心,我们已安排客服专员联系您处理",
"transferred": true,
"anger_score": 0.83
}
📌 适用范围:SaaS客服、工单自动化、多轮信息采集、客服质量评估体系。
六、总结:如何构建一个企业级 Agent 工作流系统?
三类场景统一抽象
审批流、报表流、客服流可以抽象成同一个模型:
输入(多模态/多轮) → 状态管理 → Agent触发 → 工具执行 → 状态更新 → 路径跳转
通用流程型 Agent 系统架构
流程型 Agent 六大核心能力
工程落地建议
流程版本控制:DSL变更携带版本号,trace绑定流程版本
多角色协作机制:用协作图谱表达Agent依赖调用链
日志与审计闭环:全链路行为落盘,支持检索对账复盘
Prompt‑DSL‑Tool解耦:三者解耦,最大化组件复用
用户行为轨迹:用户行为、Agent决策、输出统一归档
✅ 典型落地场景 报销审批、合同审核、招聘流程、报表生成、工单处理、客服对话; 统一复用框架:FlowSchema × Agent × ToolChain × State。
🧠 一句话收尾 企业级 Agent 系统,不能停留在对话,而应进化为智能流程编排系统:它由结构驱动、由角色执行、由行为追踪、由状态控制,是下一代数字化业务的操作系统。