必须用Python 3.9编写插件,核心结构为定义main()函数、用get_input()获取输入、用set_output()返回结果;仅支持标准库和requests,禁用文件操作与第三方包,HTTP请求需开启插件且timeout≤5秒。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你想在扣子(Coze)平台开发一个能调用外部API、处理用户输入或执行计算逻辑的自定义插件,但卡在代码编写环节,不清楚该用JavaScript还是Python、怎么组织结构、哪些接口必须写、哪些限制不能碰。
确认运行环境与语言选择
进入插件编辑页 → 点击「添加工具」→ 在右侧面板语言下拉菜单中【必须选中Python 3.9】;若误选JavaScript或留空,默认为JS环境,所有Python语法将直接报错。
Python 3.9是当前唯一支持的Python版本,且仅预装标准库与requests(HTTP插件开启后可用),不支持numpy、pandas等第三方包,也不支持文件读写操作。
JavaScript节点适用于简单字符串处理、正则提取、条件判断等轻量逻辑;涉及HTTP请求、随机数生成、JSON解析等需稳定IO控制的场景,一律优先用Python。
立即学习“Java免费学习笔记(深入)”;
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导致整个节点崩溃。


















