业务工作流是有明确规则和边界的"受控 Agent":每一步做什么、什么时候切人工、失败了怎么回退,都有清晰定义。
前置知识
业务工作流 vs Agent
核心区别
简单理解: Agent = 给你目标,你自己想办法完成 Workflow = 按这个流程走,每步做什么我都规定好了
在商业场景中,工作流是主流,Agent 是补充。企业需要可控、可审计、可预测的 AI 系统,而不是一个自由发挥的 Agent。
典型业务工作流
客户邮件自动处理流程
这个流程的关键设计点:
Human-in-the-Loop 设计模式
模式 1:前置审核(Pre-Approval)
人工确认输入 → AI 生成 → 自动执行
流程: 人工先确认问题描述和上下文,AI 基于确认后的信息生成结果,自动执行。
适用场景:
Trade-off:
模式 2:后置审核(Post-Approval)
AI 生成 → 人工审核 → 确认后执行
流程: AI 自动生成结果(回复、决策、报告),人工审核通过后才执行。
模式 3:抽检审核(Spot-Check)
AI 生成 → 自动执行 → 定期抽样审核 → 统计合格率
流程: AI 全自动生成和执行,系统定期随机抽样,人工审核样本质量。
三种模式对比
审批流、回退、异常处理编排
正常路径 vs 异常路径
超时处理策略
当 AI 服务 30 秒内没有响应时:
# 超时降级策略示例TIMEOUT_MS = 30_000 # 30 秒超时async def handle_request_with_fallback(request): try: # 主路径:AI 处理 result = await asyncio.wait_for( ai_process(request), timeout=TIMEOUT_MS / 1000 ) return result except asyncio.TimeoutError: # 降级 1:返回预设的兜底回复 metrics.record("ai_timeout") return { "type": "fallback", "message": "我们正在处理您的请求,请稍候...", "ticket_id": create_ticket(request), # 创建工单后续处理 } except ExternalServiceError as e: # 降级 2:外部服务不可用,切人工 metrics.record("external_service_error") return route_to_human(request, reason=str(e))
回退规则(Confidence-Based Routing)
置信度 >= 0.9 → AI 自动处理置信度 0.7~0.9 → AI 生成 + 人工审核置信度 < 0.7 → 直接转人工 + AI 建议作为参考
业务状态机建模
用状态机描述工单处理流程的每一步状态转移:
状态机设计要点
工作流引擎工具对比
Temporal 示例:AI 工单处理
from temporalio.client import Clientfrom temporalio.worker import Workerfrom temporalio import activity, workflow@activity.defnasync def classify_ticket(ticket: dict) -> dict: """调用 LLM 对工单分类""" response = await llm_client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": f"分类此工单: {ticket['body']}"}] ) return {"category": response.choices[0].message.content, "confidence": 0.92}@activity.defnasync def generate_reply(ticket: dict, customer_data: dict) -> str: """基于客户资料和工单内容生成回复""" ...@activity.defnasync def send_email(to: str, subject: str, body: str) -> bool: """发送邮件""" ...@workflow.defnclass TicketProcessingWorkflow: @workflow.run async def run(self, ticket: dict) -> str: # Step 1: 分类 classification = await workflow.execute_activity( classify_ticket, ticket, start_to_close_timeout=timedelta(seconds=30) ) # Step 2: 置信度检查 if classification["confidence"] < 0.7: await workflow.execute_activity(escalate_to_human, ticket) return "escalated" # Step 3: 查询客户资料 customer_data = await workflow.execute_activity(fetch_customer, ticket["customer_id"]) # Step 4: 生成回复(等待人工审核) reply = await workflow.execute_activity(generate_reply, ticket, customer_data) # Step 5: 等待人工审核(Human-in-the-Loop) approved = await workflow.execute_activity(wait_for_human_approval, reply) if not approved: return "rejected" # Step 6: 发送邮件 await workflow.execute_activity(send_email, ticket["email"], "回复", reply) return "completed"
部署视角
工作流引擎在 K8s 中的部署模式
部署模式选择:
关键配置:
# Temporal Worker HPA 配置apiVersion: autoscaling/v2kind: HorizontalPodAutoscalermetadata: name: temporal-worker-hpaspec: scaleTargetRef: apiVersion: apps/v1 kind: Deployment name: temporal-worker minReplicas: 3 maxReplicas: 20 metrics: - type: Pods pods: metric: name: temporal_task_queue_depth target: type: AverageValue averageValue: "100"
面试视角
"设计一个 AI 工单处理系统"满分回答框架
面试官:设计一个 AI 工单处理系统,日均 10 万工单。1. 需求分析(1 分钟) → 日均 10 万,峰值约 5 万/小时 → 工单类型:咨询(50%)、投诉(20%)、退款(15%)、技术支持(15%) → 目标:减少人工处理量 60%,保证客户满意度不降2. 架构设计(2 分钟) → 流程:接收 → 分类 → 处理 → 审核 → 发送 → 归档 → 用 Temporal 做工作流编排(需要长期运行、失败重试、状态持久化) → Human-in-the-Loop:分类置信度 `<` 0.7 转人工,回复需审核后发送3. 关键设计决策(2 分钟) → 超时处理:AI 30s 超时 → 降级为预设回复 + 创建人工工单 → 回退规则:基于置信度动态路由(全自动/审核/全人工) → 数据飞轮:人工修改的回复用于模型微调,每周更新一次4. 运维和监控(1 分钟) → 技术指标:分类准确率、响应延迟、Worker 队列深度 → 业务指标:自动处理率、人工审核通过率、客户满意度 → 告警:自动处理率跌破 50% 触发告警5. 扩展性(30 秒) → Worker 水平扩展,按工单类型分队列 → 多模型降级策略:主模型 GPT-4o,备用 Claude,兜底规则引擎
最佳实践