AI应用 Agent工作流自动化RPA效率

Agent工作流自动化:从想法到生产力

RPA只能处理规则明确的重复劳动。Agent能做的是:处理那些”看情况”的任务——需要一点判断力,但不值得占用你宝贵的大脑。

Agent自动化的独特价值

RPA vs Agent自动化

维度传统RPAAgent自动化
规则需要精确编程自然语言描述即可
异常处理遇到意外即报错可以自行判断和处理
适应性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自动化的终极目标不是替代人类员工,而是让每个人都能拥有一个不知疲倦的助手——处理重复但有判断力要求的任务,让人类把精力集中在真正需要创造力和同理心的事情上。