OpenReplay Spot 浏览器扩展开发与构建指南:从 `yarn dev` 本地调试到 Chrome MV3 打包发布
2026/9/23 1:38:47
告别僵化规则,拥抱认知智能:构建能理解、会决策、可进化的下一代自动化流程。
标题:超越RPA:基于大语言模型的AI驱动流程自动化架构实战
摘要/引言
目标读者与前置知识
文章目录
传统流程自动化之困:RPA的瓶颈
AI破局点:大语言模型的认知革命
核心范式:Agent, Orchestrator, Tools架构拆解
[ 用户 / 系统触发事件 ] | v [ 意图识别 Agent ] -- (识别目标&初始参数) --> | v [ 动态决策 Orchestrator ] | | | (调用特定工具) | v v [ 工具Agent 1: 数据库查询 ] [ 工具Agent 2: 文档解析 ] | | v v [ Orchestrator (整合结果, 决定下一步) ] | | (需要执行? 需要更多信息?) v [ 执行 Agent / 工具 (发送邮件, 更新工单系统) ] | v [ 结果反馈 & 学习循环 ]理论基础:LLM如何驱动决策与执行 - ReAct范式
Tool(如SearchDatabase(customer_id=123))或直接给出最终答案。环境准备:工具栈选型与配置
gpt-4-turbo,gpt-3.5-turbo) - 常用,API稳定,性能强。claude-3-opus/sonnet/haiku) - 长文本、强推理、低幻觉。Llama 3,Mixtral) via Ollama/vLLM/HuggingFace - 数据隐私可控,成本低。LangChain。requests(HTTP),python-docx/PyPDF2(文档),sqlalchemy(DB),beautifulsoup(网页),或特定系统的SDK。pip, virtualenv (推荐)`。requirements.txtsnippet):langchain-core==0.1.0 langchain-community==0.0.1 langchain-openai==0.0.1# 如果使用OpenAIpython-dotenv# 管理环境变量requests# 调用工具API实战:构建AI工单处理助手
步骤1: 接收工单 - 意图识别Agent
agent_intent.py):fromlangchain_core.promptsimportChatPromptTemplatefromlangchain_openaiimportChatOpenAIfromlangchain.agentsimportAgentExecutor,create_tool_calling_agentfromlangchain_core.toolsimporttool# 1. 定义工具 (例如: 在真实系统里可能调用CRM API)@tooldefclassify_ticket_intent(ticket_text:str)->str:"""Classify the main intent of a customer support ticket. Only use if needed."""# 这里是示例,实际可调用另一个小的LLM分类器或规则库return"Forced classification (Demo)"# 演示用占位符tools=[classify_ticket_intent]# 2. 构建提示词(Prompt),明确角色和任务system_prompt="""你是专业的客服工单意图分类专家。 用户输入: {input} 你的任务:分析输入内容,准确判断用户的核心诉求类型。 已知类型:[账单查询, 密码重置, 产品故障报告, 功能咨询, 订单状态, 其他] 只输出类型名称! """prompt=ChatPromptTemplate.from_messages([("system",system_prompt),("human","{input}")])# 3. 创建Agentllm=ChatOpenAI(model="gpt-3.5-turbo",temperature=0)agent=create_tool_calling_agent(llm,tools,prompt)agent_executor=AgentExecutor(agent=agent,tools=tools,verbose=True)# 4. 使用Agentticket_text="您好,我无法登录系统了,提示密码错误。昨天还能登的。"result=agent_executor.invoke({"input":ticket_text})print("Identified Intent:",result["output"])# 期望输出: "密码重置"步骤2: 解析工单 - 文档解析Agent & 工具调用
Agent调用OCR工具或特定文档解析工具。parse_tools.py):@tooldefextract_info_from_image(image_path:str)->dict:"""从工单截图/照片中提取文本信息。使用OCR服务API。"""# 假设调用真实OCR API (如Google Vision, Azure OCR)print(f"[DEMO] Calling OCR on{image_path}")return{"text":"Mock OCR Output: Username: john_doe, Error: Connection Timeout"}@tooldefparse_error_log(log_path:str)->dict:"""解析上传的错误日志文件。识别错误码、时间戳、堆栈信息关键词。"""# 使用正则或解析库处理文本日志 (DEMO)print(f"[DEMO] Parsing log:{log_path}")return{"error_code":"ERR_TIMEOUT_101","timestamp":"2024-05-26 14:30:02"}步骤3: 动态决策 - Orchestrator路由与资源分配
orchestrator.pysnippet):defdecide_action(intent:str,parsed_data:dict)->dict:"""核心协调逻辑:基于规则和简单LLM判断做决策."""# 1. 简单规则处理ifintent=="密码重置":user=parsed_data.get("username")ifuser:return{"action":"AUTO_RESET_PASSWORD","target":user}else:return{"action":"REQUEST_INFO","message":"请提供需要重置密码的用户名"}# 2. 复杂情况:使用LLM辅助决策elifintent=="产品故障报告":llm=ChatOpenAI(model="gpt-3.5-turbo",temperature=0)prompt=f"""已知: 故障报告:{parsed_data.get('description','')}错误代码:{parsed_data.get('error_code','N/A')}产品版本:{parsed_data.get('version','未知')}工程师资源状态: - Team A (擅长网络): 当前空闲 - Team B (擅长数据库): 中等负载 请判断: 1. 是否足以自动生成解决方案?(是/否) 2. 如果否,应分配给哪个Team?(Team A/Team B) 只输出 JSON: {{ "auto_solve": boolean, "assign_to": string (if not auto) }}"""response=llm.invoke(prompt)decision=json.loads(response.content)# 假设输出合规JSONreturndecision步骤4: 执行与反馈 - 执行Agent & 外部工具调用
Orchestrator的决策命令。调用具体操作工具(CRM、邮件、DB、内部API)。execution_tools.py):@tooldefauto_reset_password(username:str)->str:"""调用用户管理系统的密码重置API。"""# DEMO: 模拟API调用print(f"[EXEC] Resetting password for user:{username}")returnf"密码重置邮件已发送至{username}的注册邮箱。"@tooldefassign_ticket_to_team(ticket_id:int,team_name:str)->str:"""调用工单系统API,分配工单到指定组。"""print(f"[EXEC] Assigning ticket{ticket_id}to team:{team_name}")returnf"工单 #{ticket_id}已成功分配至{team_name}。"步骤5: 闭环学习 - 人工审核与模型微调
核心代码解析:动态决策Orchestrator的奥秘 (core_orchestrator.py)
classOrchestrator:def__init__(self,llm,tools:dict):self.llm=llm# LangChain LLMself.tools=tools# 字典: {'intent': agent, 'parser': agent, 'executor': agent}self.rule_engine=...# 可存放硬编码规则或决策表defhandle_ticket(self,ticket:dict)->dict:"""处理一个工单的生命周期"""# Step 1: 识别意图 (调用Agent)intent_result=self.tools['intent'].run(ticket['description'])ticket['intent']=intent_result['intent']# Step 2: 如果需要,解析附件 (调用解析Agent + 工具)ifticket.get('attachment'):parsed_data=self.tools['parser'].run(attachment=ticket['attachment'])ticket.update(parsed_data)# Step 3: 核心决策 - 融合规则与LLM推理decision=self._make_decision(ticket)# 调用私有决策方法# Step 4: 执行决策 (调用执行Agent + 工具)exec_result=self.tools['executor'].run(action=decision)ticket['status']=exec_result['status']ticket['ai_notes']=decision['reason']+" | "+exec_result['message']# Step 5: (异步) 触发反馈收集self._send_feedback_request(ticket)returnticketdef_make_decision(self,ticket:dict)->dict:"""核心决策逻辑,优先规则,复杂情况调用LLM"""# 尝试匹配硬规则 (快速、可靠)match=self.rule_engine.match(ticket)ifmatch:return{'action':match['action'],'reason':'Rule Engine Matched'}# 规则不覆盖的复杂场景:调用LLM Agent协调决策llm_prompt=f"复杂工单决策Prompt...{ticket}"decision=self.llm.predict(llm_prompt)# 简化表示return{'action':decision['action'],'reason':'LLM Agent Decision'}结果展示与验证
平均处理周期、首次响应时间、自动解决率、人工干预比例。性能优化与最佳实践
gpt-3.5-turbo,claude-3-haiku)。max_tokens。常见问题与解决方案 (FAQ / Troubleshooting)
Orchestrator层校验Action是否在允许范围内;使用支持工具调用的LLM(OpenAI Tool Calls)。未来展望与扩展方向
技术专家Agent+沟通协调Agent。总结
AI驱动的流程自动化远不仅是给RPA加个“AI外壳”。它是构建在大语言模型这一全新基础设施上,以智能体(Agent)为执行单元,由协调器(Orchestrator)进行动态编排,借助丰富工具(Tools)完成任务的系统性工程。作为AI应用架构师,你需要:
参考资料
附录
https://github.com/[YOUR_USER]/ai-orchestrated-workflow-demo