4、AI能力接入:调用百度AI开放平台API(文字识别)、调用OpenAI API(文本生成)、在RPA流程中集成AI服务。

好,咱们进入第四讲。前面几章我们把RPA的基础操作和流程设计讲透了,但说实话,纯RPA能干的事是有天花板的。你想想看,遇到一张模糊的发票照片,或者需要根据上下文写一段回复,传统RPA就抓瞎了。这时候,就得请AI出场。

这一章,我带你亲手把两个最常用的AI服务——百度的文字识别和OpenAI的文本生成——接入到RPA流程里。说白了,就是给机器人装上「眼睛」和「大脑」。

4.1 调用百度AI开放平台API(文字识别)

先聊文字识别。我在项目里遇到过最头疼的场景:客户发来一堆手机拍的合同照片,要提取里面的关键字段。人工录入?几百页,眼睛会瞎。用OCR?嗯,百度这个接口,我用了好几年,稳定且便宜。

4.1.1 准备工作:获取API Key

你得先去百度AI开放平台注册个账号,创建一个应用。拿到三个东西:AppID、API Key、Secret Key。这三个玩意儿就像你家的门牌号、钥匙和密码,缺一不可。

注意: Secret Key 千万别泄露到公开代码里。我曾经有个同事,直接把 Key 写死在脚本里上传到 GitHub,结果被人刷了十几万次调用,一天欠费好几百。血的教训。

拿到之后,咱们用Python写个获取Access Token的函数。百度API的认证机制是先用这三个参数换一个临时令牌(Access Token),再用令牌去调识别接口。令牌有效期大概一个月,过期了重新换就行。

import requests
import base64

def get_access_token(api_key, secret_key):
    url = "https://aip.baidubce.com/oauth/2.0/token"
    params = {
        "grant_type": "client_credentials",
        "client_id": api_key,
        "client_secret": secret_key
    }
    response = requests.post(url, params=params)
    return response.json().get("access_token")

4.1.2 调用通用文字识别接口

拿到Token后,就可以调真正的OCR接口了。我个人习惯把图片转成base64格式传过去,这样不用管文件路径,更灵活。

def ocr_image(image_path, access_token):
    url = "https://aip.baidubce.com/rest/2.0/ocr/v1/general_basic"
    
    with open(image_path, "rb") as f:
        img_base64 = base64.b64encode(f.read()).decode("utf-8")
    
    params = {
        "access_token": access_token,
        "image": img_base64
    }
    headers = {"Content-Type": "application/x-www-form-urlencoded"}
    
    response = requests.post(url, headers=headers, data=params)
    result = response.json()
    
    # 提取所有文字
    words = [item["words"] for item in result.get("words_result", [])]
    return "\n".join(words)

这里有个小坑:百度返回的字段叫 words_result,不是 words。我第一次调的时候直接取错了字段,debug了半天。你记住,返回结构是个列表,每个元素里有个 words 键。

4.1.3 在RPA中集成

在RPA工具里(比如UiPath或影刀),你只需要用一个「执行Python脚本」的活动,把上面这段代码嵌进去。输入参数是图片路径,输出就是识别出来的文本字符串。然后RPA拿到这个字符串,就可以做后续的录入、比对、存档了。

小技巧: 如果图片质量差,可以先用RPA自带的图像处理功能做一下灰度化、二值化,识别率能提升不少。我在处理超市小票时试过,从70%直接跳到95%。

4.2 调用OpenAI API(文本生成)

OCR解决了「看」的问题,那「写」呢?比如自动生成产品描述、回复客户邮件、总结会议纪要。这时候OpenAI的GPT模型就派上用场了。

4.2.1 环境准备与API调用

首先,你得有OpenAI的API Key。去platform.openai.com申请,充个几美元够用很久。然后安装 openai 库:

pip install openai

调用方式很简单,但要注意:OpenAI的API版本更新很快。我写这段时用的是 v1.0.0 之后的版本,接口风格变了,不再是 openai.Completion.create,而是用 client.chat.completions.create

from openai import OpenAI

client = OpenAI(api_key="你的API_KEY")

def generate_text(prompt, model="gpt-3.5-turbo"):
    response = client.chat.completions.create(
        model=model,
        messages=[
            {"role": "system", "content": "你是一个专业的自动化助手。"},
            {"role": "user", "content": prompt}
        ],
        temperature=0.7,
        max_tokens=500
    )
    return response.choices[0].message.content

为什么用 chat.completions 而不是 completions?因为Chat模型更便宜、更听话。你想想看,给它一个system prompt设定角色,它就知道自己是「自动化助手」而不是「诗人」,输出会更可控。

4.2.2 实际场景:自动生成邮件回复

我在做客服自动化时,经常需要根据客户的问题生成回复草稿。RPA先抓取客户留言,传给OpenAI,拿到回复后再粘贴到邮件系统里。流程大概这样:

  1. RPA读取Excel中的客户问题
  2. 拼接prompt:「请根据以下客户问题,生成一封礼貌且专业的回复邮件:{问题}」
  3. 调用 generate_text() 获取回复
  4. RPA将回复填入邮件正文,点击发送
关键点: Prompt 的质量直接决定输出质量。别写「帮我回复一下」这种模糊指令。要具体:语气、长度、是否包含解决方案、是否需要道歉。我习惯在prompt里加示例,效果立竿见影。

4.3 在RPA流程中集成AI服务

好,现在两个API都会调了。但怎么把它们无缝嵌入到RPA流程里?总不能让人手动跑Python脚本吧。这里我分享三种集成方式,按复杂度排序。

4.3.1 方式一:直接调用Python脚本

最直接的方法。RPA工具基本都支持「运行Python脚本」或「执行命令行」。你把上面两个功能封装成两个函数,保存为 ai_services.py。然后在RPA里这样调用:

  • 步骤1:获取图片路径 → 调用 python ai_services.py ocr 图片路径
  • 步骤2:拿到OCR结果 → 调用 python ai_services.py generate "请总结以下内容:{OCR结果}"
  • 步骤3:把生成结果写入Excel或数据库

这种方式适合快速验证。缺点是需要本地有Python环境,而且RPA和Python之间的数据传递靠标准输出,容易出编码问题。我建议统一用UTF-8,并在Python脚本里用 sys.stdout.reconfigure(encoding='utf-8') 强制指定。

4.3.2 方式二:封装为HTTP微服务

如果流程复杂,或者要多人共用,我推荐把AI能力封装成一个Web服务。用Flask写个简单的API:

from flask import Flask, request, jsonify
import your_ai_module  # 刚才写的OCR和GPT函数

app = Flask(__name__)

@app.route('/ocr', methods=['POST'])
def ocr():
    image_data = request.json.get('image_base64')
    result = your_ai_module.ocr_base64(image_data)
    return jsonify({"text": result})

@app.route('/generate', methods=['POST'])
def generate():
    prompt = request.json.get('prompt')
    result = your_ai_module.generate_text(prompt)
    return jsonify({"text": result})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

然后在RPA里用「HTTP请求」活动,POST数据到这个服务。好处是RPA端不需要装Python,只需要能发HTTP请求就行。而且这个服务可以部署在服务器上,多个机器人共享。

安全提醒: 如果服务暴露在公网,一定要加个简单的Token验证。我见过有人直接把API裸奔,被恶意调用,一个月花了八千块。加个请求头校验,几行代码的事。

4.3.3 方式三:使用RPA内置的AI活动(如果有)

像UiPath 2023以后的版本,内置了「AI Center」和「OpenAI连接器」。你可以在UiPath里直接拖一个「调用OpenAI模型」的活动,填上API Key和Prompt就行。连代码都不用写。

但说实话,这种方式灵活性差一些。比如你想在调用前对图片做预处理,或者想自定义错误重试逻辑,还是得回到代码方式。我个人习惯:简单场景用内置活动,复杂场景用HTTP微服务。

4.4 避坑指南与最佳实践

最后,分享几个我踩过的坑,你遇到了能少走弯路。

  • API调用频率限制: 百度OCR免费版每秒只能调2次。我曾在处理批量发票时没加延时,直接被封了10分钟。解决方案:在RPA循环里加 Delay(500) 毫秒,或者用队列控制并发。
  • OpenAI的Token消耗: 每次调用都计费,长文本尤其贵。我建议在prompt里限制 max_tokens,别让它自由发挥写一篇论文出来。另外,把常用的system prompt缓存起来,别每次都传一大段。
  • 错误处理: 网络请求一定会失败。我在每个API调用外面都套了try-except,失败后重试3次,每次间隔2秒。RPA流程里再加一个「如果失败则发送告警邮件」的分支。
  • 数据隐私: 调用外部API意味着数据离开你的电脑。如果处理的是客户身份证、合同金额等敏感信息,建议先脱敏,或者用私有化部署的模型。百度有私有化OCR方案,OpenAI也有Azure版本,数据不出境。
我的习惯: 每次集成AI服务前,先写一个独立的测试脚本,把各种边界情况跑一遍。比如空图片、模糊图片、超长文本、特殊字符。确认没问题了,再嵌入RPA流程。这一步能省掉后面80%的调试时间。

好了,这一章的内容就这些。你掌握了百度OCR和OpenAI GPT的调用方法,也知道了三种集成方式。下一章,我们会把这些能力组合起来,做一个真正的智能自动化助手——能看、能想、能干活的机器人。到时候你会发现,RPA+AI的组合拳,威力远超你想象。