【搭建工作流教程】使用数眼智能 API 搭建 AI 智能体工作流教程(含可视化流程图)

一、教程概述

本教程将基于数眼智能 API,结合 AI 智能体工作流的核心设计理念,手把手教你搭建一套可复用、高灵活的智能工作流。通过数眼智能 API 的多场景能力(如数据识别、智能分析、结果输出等),配合工作流的步骤拆分与逻辑编排,实现复杂任务的自动化处理。

适用场景:文档智能审核、数据批量处理、客户咨询自动响应、供应链数据协同等需要多步骤流程化的业务场景。前置条件:

已注册数眼智能平台账号并获取 API 密钥(Access Key/Secret Key)

具备基础的接口调用知识(HTTP/HTTPS)

了解 JSON 数据格式

可选工具:Postman(接口测试)、Draw.io(流程图绘制)、Python/Java(代码集成)

二、核心概念铺垫

在搭建前,先明确两个关键概念:

数眼智能 API:提供标准化的智能能力接口,支持数据识别、内容审核、信息提取、智能分析等核心功能,可理解为工作流中的 "专业工具"。

AI 智能体工作流:将复杂任务拆分为有序的步骤,通过 API 调用、规则判断、结果流转,实现任务的自动化执行(参考文档中 "流水线" 类比)。

本教程将采用「提示链 + 路由器」混合设计模式(文档核心模式组合):

提示链:按顺序执行 API 调用步骤,上一步输出作为下一步输入

路由器:根据 API 返回结果动态分支,处理不同场景(如正常结果 / 异常情况)

三、搭建步骤(附流程图)

第一步:需求拆解与工作流设计

以「企业合同智能审核工作流」为例,拆解核心需求与步骤:

上传合同文件(支持 PDF/Word)

调用数眼智能 API 提取合同关键信息(甲方、乙方、金额、有效期等)

规则校验(判断金额是否超预算、有效期是否合理)

结果分支处理:

校验通过:生成审核报告并推送至审批系统

校验异常:标记问题点并推送人工复核

记录流程日志(便于追溯)
工作流可视化流程图

第二步:数眼智能 API 准备

登录数眼智能开放平台,进入「API 管理」页面,申请以下核心 API 权限:

文件存储 API:用于上传合同文件(接口地址:https://api.shuyanai.com/v1/storage/upload)

合同信息提取 API:提取关键字段(接口地址:https://api.shuyanai.com/v1/contract/extract)

报告生成 API:生成标准化审核报告(接口地址:https://api.shuyanai.com/v1/report/generate)

获取 API 密钥:在「个人中心 - 开发者设置」中查看 Access Key 和 Secret Key(用于接口鉴权)

接口调用格式(通用):

  • 请求方式:POST
  • 请求头:
javascript 复制代码
{
  "Authorization": "Bearer {Access Key}_{Secret Key}",
  "Content-Type": "application/json"
}
  • 响应格式:JSON(包含 code/msg/data 字段,code=200 表示成功)

第三步:分步骤实现工作流(附代码示例)

以下以 Python 为例,实现核心步骤的 API 调用与流程编排(实际生产可集成到业务系统中)。

  1. 工具准备
    安装依赖库:
bash 复制代码
pip install requests  # 用于API调用
pip install python-dotenv  # 用于管理API密钥
  1. 核心代码实现
python 复制代码
import requests
import os
from dotenv import load_dotenv

# 加载API密钥(建议放在.env文件中,避免硬编码)
load_dotenv()
ACCESS_KEY = os.getenv("SHUYAN_ACCESS_KEY")
SECRET_KEY = os.getenv("SHUYAN_SECRET_KEY")
BASE_URL = "https://api.shuyanai.com/v1"

# 1. 上传合同文件
def upload_contract(file_path):
    url = f"{BASE_URL}/storage/upload"
    headers = {
        "Authorization": f"Bearer {ACCESS_KEY}_{SECRET_KEY}"
    }
    files = {
        "file": open(file_path, "rb")
    }
    response = requests.post(url, headers=headers, files=files)
    result = response.json()
    if result["code"] == 200:
        return result["data"]["file_id"]  # 返回文件ID,用于后续提取
    else:
        raise Exception(f"文件上传失败:{result['msg']}")

# 2. 提取合同关键信息
def extract_contract_info(file_id):
    url = f"{BASE_URL}/contract/extract"
    headers = {
        "Authorization": f"Bearer {ACCESS_KEY}_{SECRET_KEY}",
        "Content-Type": "application/json"
    }
    data = {
        "file_id": file_id,
        "extract_fields": ["party_a", "party_b", "amount", "valid_period"]  # 指定提取字段
    }
    response = requests.post(url, headers=headers, json=data)
    result = response.json()
    if result["code"] == 200:
        return result["data"]  # 返回提取结果:{"party_a": "XX公司", ...}
    else:
        raise Exception(f"信息提取失败:{result['msg']}")

# 3. 规则校验逻辑
def validate_contract(contract_info, max_budget=1000000, max_valid_period=3):
    """
    校验规则:金额≤预算(默认100万),有效期≤3年
    返回:(校验结果, 异常信息)
    """
    amount = contract_info.get("amount", 0)
    valid_period = contract_info.get("valid_period", 0)
    errors = []
    
    if amount > max_budget:
        errors.append(f"合同金额{amount}元,超出预算{max_budget}元")
    if valid_period > max_valid_period:
        errors.append(f"合同有效期{valid_period}年,超出最大允许期限{max_valid_period}年")
    
    return len(errors) == 0, errors

# 4. 生成审核报告
def generate_report(contract_info, is_pass, errors=None):
    url = f"{BASE_URL}/report/generate"
    headers = {
        "Authorization": f"Bearer {ACCESS_KEY}_{SECRET_KEY}",
        "Content-Type": "application/json"
    }
    data = {
        "contract_info": contract_info,
        "audit_result": "通过" if is_pass else "待复核",
        "error_details": errors or []
    }
    response = requests.post(url, headers=headers, json=data)
    result = response.json()
    if result["code"] == 200:
        return result["data"]["report_url"]  # 报告访问URL
    else:
        raise Exception(f"报告生成失败:{result['msg']}")

# 5. 推送结果至下游系统(示例:审批系统/OA系统)
def push_to_system(report_url, is_pass, contract_info):
    if is_pass:
        # 推送至审批系统
        approval_url = "https://your-approval-system.com/api/push"
        data = {
            "contract_name": f"{contract_info['party_a']}与{contract_info['party_b']}合同",
            "report_url": report_url,
            "status": "待审批"
        }
    else:
        # 推送至OA系统(人工复核)
        approval_url = "https://your-oa-system.com/api/push-task"
        data = {
            "contract_name": f"{contract_info['party_a']}与{contract_info['party_b']}合同",
            "report_url": report_url,
            "status": "待复核",
            "error_details": contract_info.get("error_details", [])
        }
    
    response = requests.post(approval_url, json=data)
    return response.json()

# 6. 流程日志记录
def record_log(contract_info, status, log_path="contract_audit_logs.txt"):
    log_content = (
        f"时间:{pd.Timestamp.now()}\n"
        f"合同:{contract_info['party_a']} - {contract_info['party_b']}\n"
        f"状态:{status}\n"
        f"----------------------------------------\n"
    )
    with open(log_path, "a", encoding="utf-8") as f:
        f.write(log_content)

# 主工作流执行函数
def run_contract_audit_workflow(file_path):
    try:
        # 步骤1:上传文件
        file_id = upload_contract(file_path)
        print(f"文件上传成功,file_id:{file_id}")
        
        # 步骤2:提取信息
        contract_info = extract_contract_info(file_id)
        print(f"信息提取成功:{contract_info}")
        
        # 步骤3:规则校验
        is_pass, errors = validate_contract(contract_info)
        contract_info["error_details"] = errors
        print(f"规则校验结果:{'通过' if is_pass else '异常'},异常信息:{errors}")
        
        # 步骤4:生成报告
        report_url = generate_report(contract_info, is_pass, errors)
        print(f"报告生成成功:{report_url}")
        
        # 步骤5:推送下游系统
        push_result = push_to_system(report_url, is_pass, contract_info)
        print(f"结果推送成功:{push_result}")
        
        # 步骤6:记录日志
        status = "审核通过,已推送审批" if is_pass else "存在异常,已推送复核"
        record_log(contract_info, status)
        print("工作流执行完成!")
        
    except Exception as e:
        print(f"工作流执行失败:{str(e)}")
        record_log({"party_a": "未知", "party_b": "未知"}, f"执行失败:{str(e)}")

# 执行工作流(传入合同文件路径)
if __name__ == "__main__":
    run_contract_audit_workflow("test_contract.pdf")

第四步:工作流测试与优化

  1. 测试场景覆盖:
  • 正常场景:文件上传成功→信息提取完整→规则校验通过→报告生成→推送审批
  • 异常场景 1:文件格式错误(如上传图片文件)→ 上传失败→流程终止
  • 异常场景 2:合同信息提取不全(如缺少金额字段)→ 提取失败→触发人工干预
  • 异常场景 3:金额超预算→校验异常→推送人工复核
  1. 优化方向:
  • 增加重试机制:API 调用失败时(如网络波动),自动重试 2-3 次
  • 扩展规则库:根据业务需求添加更多校验规则(如合同条款合规性检查)
  • 性能优化:大文件上传采用分片上传,批量合同处理采用并行化(参考文档 Map-Reduce 模式)
  • 监控告警:通过数眼智能 API 的监控接口,实时查看工作流执行状态,异常时触发邮件 / 短信告警
    第五步:工作流发布与复用
  1. 发布:将工作流代码集成到业务系统(如企业 ERP、OA 平台),配置定时任务或触发条件(如用户上传合同后自动执行)
  2. 复用:通过参数化配置(如修改max_budget、extract_fields等参数),快速适配不同类型的合同审核(如采购合同、销售合同)
  3. 迭代:定期分析工作流日志,优化 API 调用顺序、规则校验逻辑,提升自动化率和准确性

四、常见问题排查

  1. API 调用报错 401:检查 Access Key/Secret Key 是否正确,是否过期
  2. 信息提取不完整:在extract_contract_info函数中扩展extract_fields字段,或联系数眼智能技术支持优化模型
  3. 流程执行超时:大文件处理时增加超时时间(requests.post(timeout=30)),或采用异步调用方式
  4. 报告格式不符合需求:通过generate_report接口的template_id参数,选择数眼智能提供的标准化模板,或自定义报告模板

五、扩展场景

基于本教程的搭建思路,可扩展其他数眼智能 API 工作流:

  1. 客户咨询自动响应工作流:

    上传咨询记录→调用数眼智能意图识别 API→路由至对应回答模板→生成回复内容→推送客户

  2. 供应链数据处理工作流:

    上传采购订单→调用数眼智能数据提取 API→库存校验→生成补货建议→推送供应商

  3. 文档智能分类工作流:

    上传多类型文档→调用数眼智能文档分类 API→路由至对应处理流程(如合同→审核、发票→报销)

六、总结

使用数眼智能 API 搭建工作流的核心是「拆分步骤 + API 串联 + 规则驱动」,通过本教程的方法,你可以快速实现复杂任务的自动化处理,提升业务效率。关键在于:

  1. 合理拆解任务,确保每个步骤单一职责
  2. 灵活运用工作流设计模式(如提示链、路由器)
  3. 充分利用数眼智能 API 的标准化能力,减少重复开发
  4. 持续测试与优化,提升工作流的稳定性和适应性

随着 AI 技术的发展,可进一步引入数眼智能的高级能力(如多模态识别、智能决策),结合文档中的协调器 - 工作者模式,实现更复杂的动态任务处理,助力企业数字化转型。

相关推荐
LYFlied2 小时前
Spec Coding:AI时代前端开发的范式革新
前端·人工智能·工程化·spec coding
databook2 小时前
拒绝“凭感觉”:用回归分析看透数据背后的秘密
python·数据挖掘·数据分析
2401_841495642 小时前
知识工程:人工智能从通用求解到知识驱动的演进基石
人工智能·自然语言处理·知识图谱·语义网络·状态空间·知识工程·自然语言理解
救救孩子把2 小时前
中文命名实体识别(NER)数据集全面整理
人工智能·机器学习·数据集
Psycho_MrZhang2 小时前
Flask 设计思想总结
后端·python·flask
是一个Bug2 小时前
桌面GUI应用开发
python
wang_yb2 小时前
拒绝“凭感觉”:用回归分析看透数据背后的秘密
大数据·databook
张彦峰ZYF2 小时前
Python 文件读写核心机制与最佳实践
python·python 文件读写核心机制
DBA小马哥2 小时前
国产数据库加速替代Oracle:聚焦信创背景下的平滑迁移与性能突破
数据库·oracle