AI应用 Agent工作流自动化RPA效率
云
云铭
进化之路 · 扫码阅读
微信 · 浏览器扫码
在手机上获得更好的阅读体验
Agent工作流自动化:从想法到生产力
RPA只能处理规则明确的重复劳动。Agent能做的是:处理那些”看情况”的任务——需要一点判断力,但不值得占用你宝贵的大脑。
Agent自动化的独特价值
RPA vs Agent自动化
| 维度 | 传统RPA | Agent自动化 |
|---|---|---|
| 规则 | 需要精确编程 | 自然语言描述即可 |
| 异常处理 | 遇到意外即报错 | 可以自行判断和处理 |
| 适应性 | UI改动后需重写 | 可以适应一定变化 |
| 判断力 | 零 | |
| 有一定判断力 | ||
| 部署难度 | 高,需专业工程师 | 中,PM也能配置 |
| 成本 | 高(许可证+开发) | 中(API调用费) |
适合Agent自动化的任务特征
✅ 适合 Agent 自动化:
├── 有明确的输入和期望输出
├── 需要一定的模式识别和判断
├── 涉及非结构化数据的处理
├── 多步骤但每步逻辑清晰
└── 对错误有一定容忍度
❌ 不适合 Agent 自动化:
├── 需要100%精确性(如财务结算)
├── 实时性要求极高(毫秒级)
├── 涉及敏感决策(如医疗诊断)
└── 规则非常简单(传统脚本更快更便宜)
实战场景一:智能邮件处理
自动分类、提取、回复建议
import imaplib
import email
from email.header import decode_header
from typing import List, Dict
import json
class EmailAgent:
"""智能邮件处理Agent"""
def __init__(self, llm, email_config):
self.llm = llm
self.config = email_config
self.tools = self._create_email_tools()
def process_inbox(self, max_emails=50) -> List[Dict]:
"""处理收件箱"""
# 1. 获取未读邮件
emails = self._fetch_unread_emails(max_emails)
results = []
for email_data in emails:
# 2. Agent分析每封邮件
analysis = self._analyze_email(email_data)
# 3. 根据分析结果执行动作
action_result = self._execute_action(email_data, analysis)
results.append({
**analysis,
"action_taken": action_result
})
# 4. 生成汇总报告
return results, self._generate_summary(results)
def _analyze_email(self, email_data: dict) -> dict:
"""Agent分析邮件内容"""
prompt = f"""
分析以下邮件,以JSON格式返回:
邮件主题:{email_data['subject']}
发件人:{email_data['from']}
正文:
{email_data['body'][:1000]}
返回JSON:
{{
"category": "客户咨询/技术问题/会议邀请/广告/紧急事务/其他",
"priority": "urgent/high/medium/low",
"sentiment": "positive/neutral/negative/urgent",
"requires_response": true/false,
"suggested_response_type": "立即回复/24小时内/无需回复/转发他人",
"key_points": ["要点1", "要点2"],
"action_items": ["需要做的事"],
"suggested_reply": "如果需回复,建议的回复内容",
"should_forward_to": "如果需要转发,建议转给谁(role)",
"auto_reply_safe": true/false
}}
"""
response = self.llm.invoke(prompt)
return json.loads(response.content)
def _execute_action(self, email_data, analysis):
"""根据分析结果执行动作"""
actions = []
# 紧急邮件 → 标记+通知
if analysis['priority'] == 'urgent':
self._mark_as_important(email_data['id'])
self._send_notification(email_data, analysis)
actions.append("标记为紧急并通知")
# 可自动回复 → 自动回复
if analysis['auto_reply_safe'] and analysis['requires_response']:
self._send_reply(email_data, analysis['suggested_reply'])
actions.append("已自动回复")
# 需要转发 → 转发
if analysis.get('should_forward_to'):
self._forward_email(email_data, analysis['should_forward_to'])
actions.append(f"已转发至{analysis['should_forward_to']}")
# 分类标记
self._apply_label(email_data['id'], analysis['category'])
actions.append(f"标记为{analysis['category']}")
return actions
实战场景二:自动化竞品追踪
构建竞品情报自动收集系统
from apscheduler.schedulers.background import BackgroundScheduler
import hashlib
class CompetitiveIntelligenceAgent:
"""竞品情报自动追踪Agent"""
def __init__(self, llm, competitors: List[str], db):
self.llm = llm
self.competitors = competitors
self.db = db
self.scheduler = BackgroundScheduler()
def start_weekly_tracking(self):
"""启动每周自动追踪"""
self.scheduler.add_job(
self.run_full_scan,
'cron',
day_of_week='mon',
hour=9,
minute=0
)
self.scheduler.start()
def run_full_scan(self) -> dict:
"""执行完整的竞品扫描"""
report = {"date": datetime.now().isoformat(), "competitors": {}}
for competitor in self.competitors:
comp_report = self._scan_competitor(competitor)
# 检测重要变化
significant_changes = self._detect_changes(
competitor,
comp_report,
self.db.get_previous_report(competitor)
)
report["competitors"][competitor] = {
**comp_report,
"significant_changes": significant_changes
}
# 存储到数据库
self.db.save_report(competitor, report["competitors"][competitor])
# 生成可读的周报
readable_report = self._generate_readable_report(report)
self._send_report(readable_report)
return report
def _scan_competitor(self, competitor: str) -> dict:
"""Agent扫描单个竞品"""
prompt = f"""
请对"{competitor}"进行全面扫描,回答以下问题:
1. 产品变化:上周有何功能更新或变更?
2. 定价变化:价格、套餐、策略有无调整?
3. 市场动态:融资、合作、收购、人事变动?
4. 用户反应:社交媒体和论坛上的讨论情绪?
5. 内容策略:发布的重要文章、案例、白皮书?
请用Google搜索来获取最新信息。对每条信息标注来源。
以JSON格式返回。
"""
return self._run_agent_with_search(prompt)
def _detect_changes(self, competitor, current, previous) -> List[dict]:
"""检测值得注意的变化"""
if not previous:
return [{"type": "new", "message": "首次扫描"}]
prompt = f"""
对比"{competitor}"的前后两次扫描,找出值得注意的变化:
当前扫描:
{json.dumps(current, ensure_ascii=False)[:3000]}
上次扫描:
{json.dumps(previous, ensure_ascii=False)[:3000]}
重点关注:
- 意外的产品变化
- 战略转向的迹象
- 对我们产品的直接威胁
- 可以利用的机会窗口
输出显著变化列表(不超过5条),每条包含:
- change_type: "threat"/"opportunity"/"signal"/"neutral"
- description: 简洁描述
- recommended_action: 建议我们的应对
"""
response = self.llm.invoke(prompt)
return parse_changes(response.content)
实战场景三:数据分析Agent
从”帮我看数据”到”帮我做分析”
class DataAnalysisAgent:
"""自动数据分析Agent"""
def __init__(self, llm, db_connection):
self.llm = llm
self.db = db_connection
self.tools = [
self._sql_tool(),
self._visualization_tool(),
self._stats_tool()
]
def answer_question(self, question: str) -> dict:
"""回答分析问题"""
agent_prompt = f"""
你是一个数据分析师,可以查询数据库来分析问题。
数据库Schema:
{self._get_schema_summary()}
用户问题:{question}
请按以下步骤解决:
1. 理解问题,明确分析目标
2. 编写SQL查询数据
3. 分析查询结果
4. 如果有异常或值得深挖的线索,继续查询
5. 生成结论和建议
注意:
- SQL只做SELECT,不做增删改
- 大表查询要加LIMIT
- 对结果保持怀疑——交叉验证关键数字
"""
result = self.agent_executor.invoke({"input": agent_prompt})
return {
"answer": result["output"],
"sql_queries": result.get("intermediate_steps", []),
"visualization": self._auto_visualize(result)
}
Agent的权限管理
分级权限体系
from enum import Enum
class AgentPermission(Enum):
READ_ONLY = "read_only" # 只能读取
READ_WRITE = "read_write" # 可以读写(需确认)
AUTO_EXECUTE = "auto_execute" # 自动执行(高信任场景)
class PermissionAwareAgent:
"""带权限控制的Agent"""
def __init__(self, permission_level=AgentPermission.READ_ONLY):
self.permission = permission_level
self.confirmation_required = []
def execute_action(self, action: dict) -> bool:
"""执行行动前检查权限"""
action_risk = self._assess_risk(action)
if action_risk == "high" and self.permission != AgentPermission.AUTO_EXECUTE:
# 高风险操作:必须人类确认
return self._request_human_approval(action)
elif action_risk == "medium" and self.permission == AgentPermission.READ_ONLY:
# 中等风险操作:读写模式才执行
return self._request_human_approval(action)
else:
# 低风险或已授权:自动执行
return self._do_execute(action)
def _assess_risk(self, action: dict) -> str:
"""评估操作风险"""
HIGH_RISK_KEYWORDS = ['delete', 'drop', 'send', 'publish', 'charge', 'pay']
MEDIUM_RISK_KEYWORDS = ['create', 'update', 'modify', 'schedule']
action_str = str(action).lower()
if any(kw in action_str for kw in HIGH_RISK_KEYWORDS):
return "high"
if any(kw in action_str for kw in MEDIUM_RISK_KEYWORDS):
return "medium"
return "low"
自动化健康监控
关键监控指标
class AgentHealthMonitor:
"""Agent自动化健康监控"""
HEALTH_PROMPT = """
评估以下Agent运行日志的健康状态:
过去24小时:
- 总任务数:{total_tasks}
- 成功率:{success_rate:.1%}
- 平均耗时:{avg_duration:.1f}s
- Token消耗:{token_usage}
- 被人类拒绝的操作:{rejected_actions}
异常事件:
{anomalies}
请判断:
1. Agent运行是否健康?(healthy/warning/critical)
2. 最值得关注的1-2个问题
3. 建议的调整措施
"""
Agent自动化的终极目标不是替代人类员工,而是让每个人都能拥有一个不知疲倦的助手——处理重复但有判断力要求的任务,让人类把精力集中在真正需要创造力和同理心的事情上。