游乐游手机版
首页/AI热点日报/热点详情

扣子自定义插件JavaScript/Python编写指南

类型:热点整理2026-06-09
扣子自定义插件开发环境必须为Python3 9,脚本强制包含main()函数作为入口,通过get_input()和set_output()实现数据传递。仅支持Python标准库及requests库,严禁使用文件操作及任何第三方包。发起HTTP请求前需手动开启插件开关,且超时时间不得超过5秒。

在使用扣子(Coze)平台开发自定义插件时,有几项核心规范必须遵守:插件代码需运行于 Python 3.9 环境,代码结构中必须包含 main() 函数,并依赖 get_input()set_output() 进行数据传递;仅支持标准库与 requests 库,严禁文件操作及第三方包;若涉及 HTTP 请求,务必提前开启插件开关,且超时时间不得超过 5 秒。

当你在扣子(Coze)平台尝试编写自定义插件,希望实现调用外部 API、处理用户输入或执行计算逻辑时,常常会卡在代码编写环节——不确定选用 JavaScript 还是 Python、如何组织代码结构、哪些接口必须实现、有哪些限制需要规避。本文将完整拆解整个开发流程。

确认运行环境与编程语言选择

进入插件编辑页面后,点击「添加工具」,在右侧面板的语言下拉菜单中务必选择 Python 3.9。若误选 JavaScript 或保持默认,系统将默认使用 JS 环境,此时写入 Python 语法会直接引发错误。

Python 3.9 是目前平台唯一支持的 Python 版本。该环境仅预装了标准库与 requests 库(前提是已开启 HTTP 插件),numpy、pandas 等第三方包均不被支持,文件读写操作同样不可用。

JavaScript 节点适合处理简单的字符串操作、正则提取、条件判断等轻量逻辑;但凡是涉及 HTTP 请求、随机数生成、JSON 解析等需要稳定 IO 控制的场景,都应当优先选用 Python。

Python 插件核心结构:三个关键要素缺一不可

所有 Python 代码必须完整包含以下三个组成部分:

① 定义 main() 函数;

② 使用 get_input('字段名') 获取上游传入的数据,字段名必须与前序节点输出的字段名完全一致;

③ 使用 set_output('字段名', 值) 返回处理结果,字段名需提前在元数据中声明为输出参数。

若遗漏 main() 函数定义,或未显式调用 main(),脚本会静默失败——平台不会报错,但输出结果为空。此外,print() 语句在日志中不可见,调试时只能借助 set_output() 临时输出中间值。

方法一:纯本地逻辑处理(无需网络请求)

直接在代码框中编写标准库逻辑,例如清洗手机号:

import re

def main():

input_text = get_input('text')

cleaned = re.sub(r'[^0-9]', '', input_text)

set_output('phone', cleaned)

main()

实现方式非常简单,直接将上述代码完整粘贴即可。需要注意 re.sub 正则中 [^0-9] 表示“匹配非数字字符”,相比 \D 更为稳妥,可有效避免 Unicode 数字的干扰。

方法二:发起 HTTP 请求(需预先开启插件)

第一步:返回工作流画布顶部,点击「设置」→「插件」→ 开启「HTTP Request」插件,然后保存设置。

第二步:在代码节点中调用 requests(平台已预装):

import requests

def main():

url = get_input('api_url')

res = requests.get(url, timeout=5)

set_output('status', res.status_code)

set_output('body', res.text[:200])

main()

timeout 参数必须设置为 ≤5 秒,否则平台将强制终止请求;响应体务必截取前 200 个字符,超长内容会触发输出校验失败。

方法三:解析 JSON 响应并提取字段

当 API 返回 JSON 格式数据时,无需手动调用 json.loads(res.text)——平台已自动完成 JSON 反序列化,直接使用 res.json() 即可:

import requests

def main():

url = get_input('api_url')

res = requests.get(url, timeout=5)

data = res.json()

set_output('title', data[0]['title'] if isinstance(data, list) and data else 'No title')

main()

这行 isinstance(data, list) and data 的判断至关重要:它能有效避免 API 返回单对象或空数组时,data[0] 抛出 IndexError 导致整个节点崩溃。处理 JSON 返回时加入此类防御性检查,能确保大多数接口稳定运行。

来源:https://www.php.cn/faq/2616110.html?uid=1589237

相关热点

继续查看同栏目近期热点。

延伸阅读

补充最近整理过的热点入口。