革新业务流程:如何通过扣子平台(API)实现高效自动化-工作流

2,311 阅读5分钟

现如今,自动化和集成已经成为任何技术驱动中不可或缺的一部分。拥有强大 API 的平台可以加速和简化的工作流程。而扣子平台(Coze)正提供了一种运行工作流的 API 接口,这让业务流程自动化变得极为简便。

只需要简单几个步骤就可实现使用。首先,开发者需要在扣子平台上获取扣子的 WORKFLOW_IDPERSONAL_ACCESS_TOKEN(工作流需要自己搭建),没有尝试过搭建过程,文章结尾介绍。

扣子工作流id.png

扣子token.png

扣子官方快速调用方法

下列展示其中一种方法:非流式调用

import os
from cozepy import COZE_CN_BASE_URL
# from cozepy import COZE_COM_BASE_URL


coze_api_token = '扣子个人访问令牌'
# 默认访问地址是 api.coze.com,但如果您需要访问 api.coze.cn,请使用 base_url 配置要访问的 API 端点
# 两者为不同的环境,token和工作流id不通用。
# coze_api_base = COZE_COM_BASE_URL
coze_api_base = COZE_CN_BASE_URL

from cozepy import Coze, TokenAuth, Message, ChatStatus, MessageContentType  # noqa

coze = Coze(auth=TokenAuth(token=coze_api_token), base_url=coze_api_base)

# 在 Coze 中创建一个工作流实例,从网页链接中复制最后一个数字作为工作流的 ID。
workflow_id = '工作流id'

workflow = coze.workflows.runs.create(
    workflow_id=workflow_id,
    # 工作流开始节点的输入参数及取值,你可以在指定工作流的编排页面查看参数列表。
    parameters={
                 "BOT_USER_INPUT": "如何评价《老友记》?"
                }
    # 其他可选参数,详情请参考 API 文档。
    #bot_id = '', #  需要关联的 Bot ID。 部分工作流执行时需要指定关联的 Bot,例如存在数据库节点、变量节点等节点的工作流。
    # app_id='', #  引用 workflow 的应用 ID
    # is_async = False, # 是否异步执行,默认为 False。(仅限扣子专业版使用)
    # ext ={
    # #目前仅支持以下字段:
    # latitude:String 类型,表示经度。
    # longitude:String 类型,表示纬度。
    # user_id:Integer 类型,表示用户 ID。
    # }

)

print("workflow结果:\n", workflow)  # 通过url可以查看执行过程
print("workflow.data结果:\n", workflow.data)

自定义调用方法

优势:

  • 1.可以自选多种工作流方式,封装程度低。
  • 2.无添加引用其他工作流id(若工作流中有引用),只需目标工作流id。

扣子执行工作流方式有多种,下面展示其中一种【同步执行工作流】,其他执行方式参考官方开发文档(curl) 转换成自己熟悉的语言(java,python等)即可。

import requests
import json

# API URL
url = 'https://api.coze.cn/v1/workflow/run'

# Headers
headers = {
    'Authorization': 'Bearer pat_hfwkehfncaf****',  # 替换为真实的token
    'Content-Type': 'application/json'
}

# 请求数据
data = {
    "workflow_id": "73664689170551*****",  # 替换为实际的workflow_id
    "parameters": {
        "user_id": "12345",
        "user_name": "George"
    }
}

# 发送 POST 请求
response = requests.post(url, headers=headers, data=json.dumps(data))

# 输出响应内容
print(response.status_code)
print(response.json())  # 如果返回的是 JSON 数据

对官方原代码进一步处理,划分结构和异常处理,便于后续的维护和应用

import requests
import json
from requests.exceptions import RequestException


def http_request_structure(question_input):
    """发送聊天请求,封装了请求头、数据和异常处理"""
    # 工作流id
    WORKFLOW_ID = "工作流id"
    # 扣子个人访问的Token值
    PERSONAL_ACCESS_TOKEN = "扣子个人访问的Token值"
    # 验证工作流ID和Token
    if not WORKFLOW_ID and not PERSONAL_ACCESS_TOKEN:
        raise ValueError("WORKFLOW_ID 或 PERSONAL_ACCESS_TOKEN 无效")
    # 扣子的工作流请求路径
    url = 'https://api.coze.cn/v1/workflow/run'

    # 设置请求头
    headers = {
        'Authorization': f'Bearer {PERSONAL_ACCESS_TOKEN}',
        'Content-Type': 'application/json'
    }

    # [设置请求体的](url) body 数据
    body = {
        "workflow_id": WORKFLOW_ID,  
        "parameters": {
            "BOT_USER_INPUT": question_input,
        }
    }
    return url, headers, body


def get_chat_messages(url, headers, body):
    """发送请求的通用函数,包含简化的异常处理"""
    try:
        # 调用通用函数发送请求
        response = requests.post(url, headers=headers, json=body)
        # 如果响应的 HTTP 状态码不是 2xx,抛出异常
        response.raise_for_status()
        # 尝试解析响应体为 JSON
        return response.json()

    except (RequestException, json.JSONDecodeError) as err:
        # 捕获所有与请求相关的异常(HTTP 错误、网络问题、JSON 解析错误等)
        print(f"请求发生错误:{err}")
    except Exception as err:
        # 捕获任何其他类型的异常
        print(f"发生意外错误:{err}")


def request_process_result(question_input):
    url, headers, body = http_request_structure(question_input)
    response = get_chat_messages(url, headers, body)
    return response


user_dialogue = "如何评价《老友记》?"
model_output = request_process_result(user_dialogue)
print(model_output)

实现结果.png 其中请求体bodyparameters是工作流开始节点的输入参数及取值,你可以在指定工作流的编排页面查看参数列表。

扣子输入变量名.png 这个 API 的核心在于 url 和 headersurl 指向扣子平台的工作流运行接口,而 headers 包含了需要的认证信息如 Bearer Token。请求体(body)则包括对应的工作流 ID 和输入参数,这些参数可以基于实际业务需求进行配置。

通过 requests 库发送 POST 请求,并适当处理任何可能的异常情况,如网络问题或JSON解析错误。这种模块化的请求设计不仅保持了代码的整洁性,而且增强了代码的健壮性,使得开发者可以更专注于优化业务逻辑而不是处理底层网络通信。

工作流简单搭建过程:

1.选择工作流搭建

打开工作流.png

2.工作流命名和描述

工作流描述.png

3.选择模型,选择模型输入的来源,功能作用(提示词),输出内容(可语言描述指定输出,但在编写提示词时要有体现)

添加模型进入工作流.png

模型流程实现.png

4.结束模块指定输出,测试和发布

结束流程.png