影刀RPA与ChatGPT联动实战:AI+RPA打造智能办公助手

当RPA的自动化能力遇上ChatGPT的智能理解能力,会发生什么?答案是:你的RPA机器人不再只是机械执行指令的工具,而是真正能"理解"内容、"思考"对策、"生成"方案的智能助手。本文手把手教你用影刀RPA对接ChatGPT,实现5个实战场景。

作者:林焱


为什么需要RPA+AI

传统RPA有一个明显短板:只能做"规则明确"的事。遇到需要理解语义、判断意图、生成内容的场景就束手无策了。

举个例子:
在这里插入图片描述

  • RPA可以从邮件中提取文本,但无法判断邮件是"投诉"还是"咨询"
  • RPA可以采集商品评论,但无法自动分析评论的"情感倾向"
  • RPA可以获取会议纪要文本,但无法自动生成"待办事项清单"

接入ChatGPT后,这些都不是问题了。RPA负责"做",AI负责"想"——这就是AI+RPA的核心价值。


对接方案:影刀RPA调用ChatGPT API

方案架构

数据源 → 影刀RPA采集 → 构造Prompt → HTTP请求ChatGPT API → 解析响应 → 后续处理

基础封装函数

先封装一个通用的ChatGPT调用函数,后面所有场景都会用到。

# 影刀RPA Python代码块 - ChatGPT API调用封装
import json
import requests

def call_chatgpt(messages, model="gpt-3.5-turbo", temperature=0.7, max_tokens=2000):
    """
    调用ChatGPT API的通用函数

    参数:
        messages: 对话消息列表 [{"role": "system/user/assistant", "content": "..."}]
        model: 模型名称
        temperature: 创造性参数(0-2,越高越随机)
        max_tokens: 最大返回token数
    """
    api_key = "your-api-key"  # 建议从配置文件读取
    url = "https://api.openai.com/v1/chat/completions"

    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {api_key}"
    }

    payload = {
        "model": model,
        "messages": messages,
        ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/8202eb91dd064722a1583925ea25c679.png#pic_center)
        ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/4d48122457324e2d880f8e0a5d4a29ad.png#pic_center)


        "temperature": temperature,
        "max_tokens": max_tokens
    }

    try:
        response = requests.post(url, headers=headers, json=payload, timeout=60)
        response.raise_for_status()
        result = response.json()
        return result["choices"][0]["message"]["content"]
    except requests.exceptions.Timeout:
        return "错误:请求超时"
    except requests.exceptions.RequestException as e:
        return f"错误:{str(e)}"


# 简化版:单次提问
def ask_chatgpt(prompt, system_prompt="你是一个专业的办公助手。"):
    """单次提问,快速获取回答"""
    messages = [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": prompt}
    ]
    return call_chatgpt(messages)

安全提示

API Key千万不要硬编码在代码里! 建议使用影刀RPA的配置文件管理功能:

# 从配置文件读取API Key
import json

def get_api_key():
    with open("D:\\RPA配置\\api_config.json", "r", encoding="utf-8") as f:
    
[video(video-0mUgoBZc-1781675974856)(type-csdn)(url-https://live.csdn.net/v/embed/526818)(image-https://v-blog.csdnimg.cn/asset/582d14c3bd0451c5399cd990b56e2a0d/cover/Cover0.jpg)(title-拼多多店群自动化报活动上架!)]

        config = json.load(f)
    return config["openai_api_key"]

实战场景一:智能邮件分类与自动回复

场景描述

每天收到几十封客户邮件,手动分类再回复太耗时间。用RPA读取邮件→AI分类→自动生成回复→人工确认后发送。

完整实现

# 步骤1:RPA读取未读邮件
import win32com.client

outlook = win32com.client.Dispatch("Outlook.Application")
namespace = outlook.GetNamespace("MAPI")
inbox = namespace.GetDefaultFolder(6)
messages = inbox.Items.Restrict("[Unread]=True")

for msg in messages:
    subject = msg.Subject
    body = msg.Body
    sender = msg.SenderEmailAddress

    # 步骤2:AI分类
    classify_prompt = f"""
    请将以下邮件分类到以下类别之一:
    - 投诉:客户不满、要求赔偿、威胁投诉监管部门
    - 咨询:询问产品功能、价格、使用方法
    - 合作:商务合作、渠道代理、投资意向
    - 技术:Bug反馈、功能异常、部署问题
    - 其他

    邮件主题:{subject}
    邮件内容:{body[:500]}

    请只输出类别名称,不要其他内容。
    """
    category = ask_chatgpt(classify_prompt).strip()

    # 步骤3:AI生成回复草稿
    reply_prompt = f"""
    你是客服经理,收到一封"{category}"类邮件。
    请生成专业、礼貌的回复。

    发件人:{sender}
    主题:{subject}
    内容:{body[:1000]}

    要求:
    - 语气专业友好
    - 针对具体问题回复
    - 如需转交,说明后续处理流程
    - 200字以内
    """
    reply_content = ask_chatgpt(reply_prompt)

    # 步骤4:创建回复草稿(不自动发送,人工确认)
    reply = msg.Reply()
    reply.Body = reply_content
    reply.Save()  # 保存到草稿箱

    # 步骤5:标记分类(移动到对应文件夹)
    folder_map = {
        "投诉": "投诉处理",
        "咨询": "客户咨询",
        "合作": "商务合作",
        "技术": "技术支持",
        "其他": "其他"
    }
    target_folder = inbox.Folders(folder_map.get(category, "其他"))
    msg.Move(target_folder)

    print(f"✅ 分类:{category} | 主题:{subject}")

实战场景二:商品评论情感分析

场景描述

电商运营需要了解用户对产品的真实评价。用RPA批量采集评论→AI分析情感→自动生成分析报告。

完整实现

# 步骤1:RPA采集商品评论
def scrape_reviews(product_url, max_pages=5):
    """采集商品评论"""
    reviews = []
    web.open(product_url)

    for page in range(max_pages):
        # 获取评论列表
        comment_elements = web.find_elements(".comment-item")

        for elem in comment_elements:
            review = {
                "用户": web.get_text(".user-name", elem),
                "评分": web.get_text(".score", elem),
                "内容": web.get_text(".comment-text", elem),
                "日期": web.get_text(".comment-date", elem),
            }
            reviews.append(review)

        # 翻页
        if not web.click(".next-page"):
            break

    return reviews

# 步骤2:批量情感分析
def analyze_sentiment_batch(reviews, batch_size=10):
    """批量分析评论情感"""
    results = []

    for i in range(0, len(reviews), batch_size):
        batch = reviews[i:i+batch_size]
        # 构造批量分析Prompt
        reviews_text = "\n".join([
            f"{j+1}. {r['内容']}"
            for j, r in enumerate(batch)
        ])

        prompt = f"""
        请分析以下{len(batch)}条商品评论的情感倾向。
        对每条评论,输出:
        1. 情感:正面/中性/负面
        2. 关键词:提取2-3个关键词
        3. 痛点(仅负面评论):用户不满的具体原因

        评论列表:
        {reviews_text}

        请用JSON格式输出:
        [
          {{"id": 1, "sentiment": "正面/中性/负面", "keywords": ["关键词1", "关键词2"], "pain_point": ""}},
          ...
        ]
        """

        analysis = ask_chatgpt(prompt, temperature=0.3)

        try:
            parsed = json.loads(analysis)
            for j, item in enumerate(parsed):
                batch[j]["情感"] = item.get("sentiment", "未知")
                batch[j]["关键词"] = ", ".join(item.get("keywords", []))
                batch[j]["痛点"] = item.get("pain_point", "")
        except json.JSONDecodeError:
            for r in batch:
                r["情感"] = "解析失败"
                r["关键词"] = ""
                r["痛点"] = ""

        results.extend(batch)

    return results

# 步骤3:生成分析报告
def generate_report(analyzed_reviews, product_name):
    """生成情感分析报告"""
    # 统计
    total = len(analyzed_reviews)
    positive = sum(1 for r in analyzed_reviews if r["情感"] == "正面")
    neutral = sum(1 for r in analyzed_reviews if r["情感"] == "中性")
    negative = sum(1 for r in analyzed_reviews if r["情感"] == "负面")

    # 提取负面痛点
    pain_points = [r["痛点"] for r in analyzed_reviews if r["痛点"]]

    # AI生成总结
    summary_prompt = f"""
    请根据以下数据分析报告生成一份专业的产品评论分析报告:

    产品:{product_name}
    总评论数:{total}
    正面评论:{positive}条({positive/total*100:.1f}%)
    中性评论:{neutral}条({neutral/total*100:.1f}%)
    负面评论:{negative}条({negative/total*100:.1f}%)

    主要痛点:{'; '.join(pain_points[:5])}

    请包含:
    1. 整体评价概述
    2. 用户满意点
    3. 需要改进的问题
    4. 改进建议
    """

    report = ask_chatgpt(summary_prompt, temperature=0.5)

    # 写入报告文件
    with open(f"D:\\评论分析\\{product_name}_情感分析报告.md", "w", encoding="utf-8") as f:
        f.write(f"# {product_name} 评论情感分析报告\n\n")
        f.write(f"**分析时间**:{datetime.now().strftime('%Y-%m-%d %H:%M')}\n\n")
        f.write(f"**数据概览**:共{total}条评论,正面{positive}条,中性{neutral}条,负面{negative}条\n\n")
        f.write(report)

    return report

# 主流程
product_url = "https://item.jd.com/12345678.html"
reviews = scrape_reviews(product_url)
analyzed = analyze_sentiment_batch(reviews)
report = generate_report(analyzed, "智能手表Pro")

实战场景三:智能文档摘要生成

场景描述

在这里插入图片描述

每天要处理大量长文档——合同、报告、论文,手动阅读耗时巨大。用RPA读取文档→AI生成摘要→快速了解核心内容。

完整实现

# 影刀RPA + ChatGPT 文档摘要系统

def summarize_document(file_path, summary_type="详细"):
    """智能文档摘要"""
    # 步骤1:读取文档内容
    if file_path.endswith(".docx"):
        from docx import Document
        doc = Document(file_path)
        text = "\n".join([p.text for p in doc.paragraphs])
    elif file_path.endswith(".pdf"):
        import fitz  # PyMuPDF
        pdf = fitz.open(file_path)
        text = "\n".join([page.get_text() for page in pdf])
    elif file_path.endswith(".txt") or file_path.endswith(".md"):
        with open(file_path, "r", encoding="utf-8") as f:
            text = f.read()
    else:
        return "不支持的文件格式"

    # 步骤2:处理长文档(分段摘要)
    max_chunk = 3000  # 每段最大字符数
    chunks = [text[i:i+max_chunk] for i in range(0, len(text), max_chunk)]

    if len(chunks) == 1:
        # 短文档直接摘要
        prompt = f"请对以下文档生成{summary_type}摘要:\n\n{text[:3000]}"
        return ask_chatgpt(prompt)
    else:
        # 长文档分段摘要再合并
        chunk_summaries = []
        for i, chunk in enumerate(chunks):
            prompt = f"这是文档的第{i+1}/{len(chunks)}部分,请生成摘要:\n\n{chunk}"
            summary = ask_chatgpt(prompt, temperature=0.3)
            chunk_summaries.append(summary)

        # 合并所有段落的摘要
        combined = "\n\n".join(chunk_summaries)
        final_prompt = f"以下是文档各部分的摘要,请整合为一份完整的{summary_type}摘要:\n\n{combined}"
        return ask_chatgpt(final_prompt, temperature=0.3)


# 批量处理文件夹中的文档
import os

doc_dir = "D:\\待处理文档\\"
for filename in os.listdir(doc_dir):
    if filename.endswith((".docx", ".pdf", ".txt")):
        filepath = os.path.join(doc_dir, filename)
        summary = summarize_document(filepath, "详细")

        # 保存摘要
        summary_file = f"D:\\文档摘要\\{filename}_摘要.md"
        with open(summary_file, "w", encoding="utf-8") as f:
            f.write(f"# {filename} 摘要\n\n{summary}")

        print(f"✅ 已生成摘要:{filename}")

实战场景四:智能数据录入校验

场景描述

从各种渠道收集的客户信息需要录入系统,但数据格式混乱、可能有错误。用AI来智能校验和修正。

完整实现

在这里插入图片描述

# 影刀RPA + ChatGPT 智能数据校验

def validate_and_correct(record):
    """AI智能校验数据记录"""
    prompt = f"""
    请校验以下客户数据记录,检查并修正错误:

    原始数据:
    {json.dumps(record, ensure_ascii=False, indent=2)}

    检查项:
    1. 姓名格式是否正确(2-4个中文字符)
    2. 手机号是否有效(11位,1开头)
    3. 邮箱格式是否正确
    4. 地址是否完整(省-市-区-详细地址)
    5. 公司名称是否规范(去除多余空格、统一格式)

    请输出JSON格式的校验结果:
    {{
        "is_valid": true/false,
        "errors": ["错误描述1", "错误描述2"],
        "corrected_data": {{修正后的完整数据}},
        "confidence": 0.0-1.0
    }}
    """

    result = ask_chatgpt(prompt, temperature=0.2)  # 低temperature保证准确性

    try:
        return json.loads(result)
    except json.JSONDecodeError:
        return {"is_valid": False, "errors": ["AI返回格式错误"], "corrected_data": record, "confidence": 0}

# 批量校验
import pandas as pd

df = pd.read_excel("客户数据_待校验.xlsx")
validated_records = []

for _, row in df.iterrows():
    record = row.to_dict()
    result = validate_and_correct(record)

    if result["is_valid"]:
        # 校验通过,使用修正后的数据
        validated_records.append(result["corrected_data"])
    else:
        # 校验失败,标记问题
        record["校验状态"] = "异常"
        record["问题描述"] = "; ".join(result["errors"])
        validated_records.append(record)

# 输出校验结果
result_df = pd.DataFrame(validated_records)
result_df.to_excel("客户数据_已校验.xlsx", index=False)

实战场景五:智能报表解读

场景描述

每周要给领导发报表,但纯数字报表领导看不懂。用AI自动生成"人话版"的报表解读。

完整实现

# 影刀RPA + ChatGPT 智能报表解读

def generate_report_narrative(excel_path, sheet_name="Sheet1"):
    """将Excel报表转为自然语言解读"""
    import pandas as pd

    df = pd.read_excel(excel_path, sheet_name=sheet_name)

    # 步骤1:提取关键数据统计
    stats = {
        "行数": len(df),
        "列名": list(df.columns),
        "数值列统计": {}
    }

    for col in df.select_dtypes(include=["number"]).columns:
        stats["数值列统计"][col] = {
            "总和": round(df[col].sum(), 2),
            "平均值": round(df[col].mean(), 2),
            "最大值": round(df[col].max(), 2),
            "最小值": round(df[col].min(), 2),
        }

    # 步骤2:AI生成解读
    prompt = f"""
    你是数据分析顾问。请根据以下数据统计生成一份通俗易懂的报表解读。

    数据概况:
    - 总记录数:{stats['行数']}
    - 字段:{stats['列名']}
    - 数值统计:{json.dumps(stats['数值列统计'], ensure_ascii=False)}

    要求:
    1. 用通俗易懂的语言描述数据整体情况
    2. 指出关键趋势和异常值
    3. 给出业务建议
    4. 300字以内,分段落,重点加粗
    """

    narrative = ask_chatgpt(prompt, temperature=0.6)

    # 步骤3:组装完整报告
    report = f"""
# 周报解读 - {datetime.now().strftime('%Y年第%W周')}

## 数据概览
- 总记录数:{stats['行数']}条
- 数据字段:{', '.join(stats['列名'])}

## 智能解读
{narrative}

## 关键数据
| 指标 | 总和 | 平均值 | 最大值 | 最小值 |
|------|------|--------|--------|--------|
"""

    for col, values in stats["数值列统计"].items():
        report += f"| {col} | {values['总和']} | {values['平均值']} | {values['最大值']} | {values['最小值']} |\n"

    # 步骤4:自动发送
    send_email(
        to="boss@company.com",
        subject=f"周报解读 - {datetime.now().strftime('%Y年第%W周')}",
        body=report
    )

    return report

在这里插入图片描述

成本控制与优化建议

ChatGPT API是按Token计费的,批量处理时要注意控制成本:

1. 控制输入长度

# 截断过长的文本
def truncate_text(text, max_chars=2000):
    if len(text) > max_chars:
        return text[:max_chars] + "...(内容已截断)"
    return text

2. 使用更便宜的模型

# 简单任务用GPT-3.5,复杂任务用GPT-4
def smart_call(prompt, complexity="simple"):
    model = "gpt-3.5-turbo" if complexity == "simple" else "gpt-4"
    return call_chatgpt([{"role": "user", "content": prompt}], model=model)

3. 缓存结果

TEMU店群矩阵自动化运营核价报活动

在这里插入图片描述

# 对相同输入缓存结果,避免重复调用
import hashlib
import json

cache = {}

def cached_ask(prompt, system_prompt="你是一个专业的办公助手。"):
    cache_key = hashlib.md5(f"{system_prompt}:{prompt}".encode()).hexdigest()
    if cache_key in cache:
        return cache[cache_key]

    result = ask_chatgpt(prompt, system_prompt)
    cache[cache_key] = result
    return result

4. 批量处理

# 将多条记录合并成一次请求
def batch_process(items, prompt_template):
    """批量处理,减少API调用次数"""
    batch_text = "\n".join([f"{i+1}. {item}" for i, item in enumerate(items)])
    prompt = prompt_template.format(count=len(items), items=batch_text)
    return ask_chatgpt(prompt, temperature=0.2)

常见问题

Q:ChatGPT API访问不稳定怎么办?

国内访问OpenAI API可能不稳定,建议:

  1. 使用稳定的代理服务
  2. 设置合理的超时时间和重试机制
  3. 考虑使用国内大模型API替代(如通义千问、文心一言),接口兼容
  4. 在这里插入图片描述

Q:AI生成的内容不准确怎么办?

AI输出存在"幻觉"问题,建议:

  1. 对关键数据做二次校验
  2. 使用较低的temperature参数(0.2-0.3)
  3. 在Prompt中明确要求"只基于提供的信息回答"
  4. 重要场景采用"AI生成→人工确认"的流程

Q:处理速度慢怎么办?

ChatGPT API单次请求通常需要2-5秒。对于批量处理:

  1. 使用异步并发请求
  2. 适当增大batch_size,减少请求次数
  3. 使用更快的模型(gpt-3.5-turbo比gpt-4快3-5倍)

总结

影刀RPA + ChatGPT的联动,本质上是在RPA的自动化流程中嵌入"AI大脑",让机器人从"只会执行"进化为"能理解、会判断、可生成"。

在这里插入图片描述

5个实战场景覆盖了最常见的AI+RPA应用:

  1. 智能邮件分类:理解语义,自动归类
  2. 评论情感分析:批量分析用户情绪
  3. 文档摘要生成:长文档快速阅读
  4. 数据录入校验:智能纠错,提高数据质量
  5. 报表智能解读:数据变人话,领导看得懂

核心原则:RPA负责干活,AI负责动脑,人负责把关。


作者:林焱 | 如果这篇文章对你有帮助,欢迎点赞收藏,关注我获取更多RPA自动化教程
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐