自定义插件
自定义插件
自定义插件 自定义插件 Modified April 30, 2025 完整代码 Python Copy return { "total days": total days, "working days": working days, "non working days": total days working days, "date details": date details } def get chinese holidays(year): """ 获取中国法定节假日(简化版) 参数: year (int): 年份 返回: list: 节假日日期列表,格式为 ['YYYY MM DD', ...] """ holidays = [] 元旦(1月1日) holidays.append(f"{year} 01 01") 春节(农历正月初一、初二、初三,这里使用近似日期) 注意:实际春节日期需要根据农历计算,这里仅为示例 if year == 2023: holidays.extend([f"{year} 01 22", f"{year} 01 23", f"{year} 01 24"]) elif year == 2024: holidays.extend([f"{year} 02 10", f"{year} 02 11", f"{year} 02 12"]) elif year == 2025: holidays.extend([f"{year} 01 29", f"{year} 01 30", f"{year} 01 31"]) 清明节(4月4日或5日) holidays.append(f"{year} 04 05") 劳动节(5月1日) holidays.append(f"{year} 05 01") 端午节(农历五月初五,这里使用近似日期) if year == 2023: holidays.append(f"{year} 06 22") elif year == 2024: holidays.append(f"{year} 06 10") elif year == 2025: holidays.append(f"{year} 05 31") 中秋节(农历八月十五,这里使用近似日期) if year == 2023: holidays.append(f"{year} 09 29") elif year == 2024: holidays.append(f"{year} 09 17") elif year == 2025: holidays.append(f"{year} 10 06") 国庆节(10月1日) holidays.append(f"{year} 10 01") return holidays def main(event, context): """ 云函数入口函数 参数: event: 事件参数,包含调用信息 context: 上下文参数,包含运行信息 返回: dict: 统一格式的响应结果,包含状态码、消息和主体数据 """ 创建一个默认的空结果结构,与成功时的结构一致 empty result = { "total days": 0, "working days": 0, "non working days": 0, "date details": [] } 解析请求参数 try: 从事件中获取参数 start date = event.get('start date') end date = event.get('end date') exclude holidays = event.get('exclude holidays', []) 检查必要参数 if not start date or not end date: response = ResponseModel( code=400, message='缺少必要参数:start date 和 end date 是必需的', body=empty result 使用与成功时相同结构的空结果 ) return response.model dump() 如果传入了年份参数,自动添加该年份的中国法定节假日 include zh holidays = event.get('include zh holidays', False) if include zh holidays: start year = int(start date.split(' ')[0]) end year = int(end date.split(' ')[0]) for year in range(start year, end year + 1): chinese holidays = get chinese holidays(year) exclude holidays.extend(chinese holidays) 计算日期 result = date calculator(start date, end date, exclude holidays) 使用Pydantic模型创建响应 response = ResponseModel( code=200, message='计算成功', body=result ) return response.model dump() except Exception as e: 统一错误处理,使用与成功时相同结构的空结果 response = ResponseModel( code=500, message=f'计算过程中发生错误: {str(e)}', body=empty result 使用与成功时相同结构的空结果 ) return response.model dump() 本地调试没问题后,我们将代码复制粘贴进云 IDE: 并在左侧依赖包中,添加 pydantic库 6️⃣ 调试插件 点击「调试」,输入参数。这里支持两种模式, 第一种是 表单输入 (默认),可按照预设的参数输入值 第二种是 代码输入 。这个适合在本地创建大量的测试集,按需输入调剂 这里我也准备了几个测试集,大家可以通过代码输入的方式进行测试 Code block Python Copy { "start date": "2025 04 28", "end date": "2025 05 05" } { "start date": "2025 04 28", "end date": "2025 05 05", "exclude holidays": ["2025 05 01"] } { "start date": "2025 04 28", "end date": "2025 05 05", "include zh holidays": true } 自动更新输出参数:如果代码写嗨了,与原先预设的输出参数不符,可以自动更新输出参数👍 7️⃣ 发布插件 注意:插件里的每个工具都调试通过后,才可以发布插件。 点击右上角「发布」按钮即可。 8️⃣ 使用插件 发布后,在「我的插件」中即可找到。 关于更多的插件使用方法,可查看文档:【进阶】如何使用插件和 MCP 拓展智能体能力 【进阶】如何使用插件和 MCP 拓展智能体能力 本地调试没问题后,我们将代码复制粘贴进云 IDE: 并在左侧依赖包中,添加 pydantic库 6️⃣ 调试插件 点击「调试」,输入参数。这里支持两种模式, 第一种是 表单输入 (默认),可按照预设的参数输入值 第二种是 代码输入 。这个适合在本地创建大量的测试集,按需输入调剂 这里我也准备了几个测试集,大家可以通过代码输入的方式进行测试 自动更新输出参数:如果代码写嗨了,与原先预设的输出参数不符,可以自动更新输出参数👍 7️⃣ 发布插件 注意:插件里的每个工具都调试通过后,才可以发布插件。 点击右上角「发布」按钮即可。 8️⃣ 使用插件 发布后,在「我的插件」中即可找到。 关于更多的插件使用方法,可查看文档:【进阶】如何使用插件和 MCP 拓展智能体能力 【进阶】如何使用插件和 MCP 拓展智能体能力 通过本章节,可以学习如果添加「自定义插件」,满足私人需求 链接直达:https://tbox.alipay.com/pro/plugin 蚂蚁百宝箱提供两种方式创建自定义插件: 1. 基于已有 API 创建 2. 在百宝箱 IDE 中直接云开发创建插件 基于已有 API 创建 如果有现有的服务,可以通过 url 或者 json/yaml 格式创建。 具体可以参考下面两篇文档 基于已有 API 通过表单创建 基于已有 API 通过表单创建 导入 JSON/YAML 创建 导入 JSON/YAML 创建 通过百宝箱 IDE 云开发创建插件 我们着重来讲,如何基于百宝箱 IDE 云开发创建插件,满足私有化需求。 1️⃣ 新建插件,选择「在百宝箱 IDE 中创建」 2️⃣ 配置插件信息 注意:大模型将根据插件名称和插件描述来自主选择插件调用,所以需要好好写这个描述~ 另外,百宝箱支持 Node.js和 python两种运行时,这里开发者用户可以选择熟悉的语言。我们以 python 为例。 3️⃣ 创建工具 这里我们可以创建多个工具,满足不同的使用场景。 这里我们创建一个工具,叫「日期计算器」, 计算两个日期之间的天数、工作日数量 点击「新建工具」 编辑参数名 我们可以看到这里有完整的元数据配置信息 参数配置: 配置完成后,点击右上角「保存元数据」 5️⃣ 编辑代码 在左侧,可以添加第三方包(python、nodejs 界面一致) 基础结构 这里我们可以看到一个插件的基础结构,与常见的云函数结构基本一致 最佳实践:超级好用的调试技巧 因为百宝箱 IDE 受限,我们可以在本地搭建测试环境,方便调试,这个在复杂场景下特别有用,如果是简单场景,也可以直接在百宝箱 IDE 中编写。 我们在本地有两个代码文件(以 python 为例),第一个 cloud func.py,就是我们要编写的插件内容,代码一致,第二个是 test cloud func.py,用于测试这个云函数 我们在 event 里定义入参,结构需与参数里设置的一致(当然开发调试时候可以任意更改值,记得同步修改插件编辑界面里的输入参数即可)。 最佳实践:规范的输出格式 因为我们是在云函数环境中,并且需要在后续节点中引用相关的返回数据。 如果遇到代码运行异常情况,没有按照预期的输出格式返回,会引发报错。 为了让代码更加健壮,我们需要统一输出格式,在 python 中使用 pydantic库实现