💁‍♀️Coze官方插件不够用?手把手教你自己造(白嫖)

1. 引言

😄 在《💁‍♂️Coze国内版插件汇总-By油猴》中我们提到了这几点:

  • 插件工作流节点本质API接口调用的封装
  • 插件工具插件子集 ,插件指定【BaseURL + 默认请求头】,插件工具指定【调用接口、输入/输出参数】,调用同一插件下的不同插件工具,本质上就是调用 同一域名下的不同接口
  • Coze国内版 提供了如下 68个 官方插件工具:
插件工具名 所属插件 作用
bingWebSearch 必应搜索 必应搜索引擎。当你需要搜索你不知道的信息,比如天气、汇率、时事等,这个工具非常有用。但是绝对不要在用户想要翻译的时候使用它。
text2image ByteArtist 通过文字描述生成图片
new_year_pets_image ByteArtist 提供新春萌宠图片生成,当用户上传宠物图片或者提供图片链接时,可以用此工具生成新的新春萌宠图片
ImageToolPro ByteArtist 根据用户的描述生成多种风格的图片
LinkReaderPlugin Link Reader 当你需要获取网页、pdf、抖音视频内容时,使用此工具。可以获取url链接下的标题和内容。
imgUnderstand 图片理解 回答用户关于图像的问题
browse 头条搜索 从url链接获取正文信息
search 头条搜索 搜索用户询问的内容
CodeRunner 代码执行器 这个插件将被调用来运行python代码并在60秒内获取结果,尤其处理数学、计算机、图片和文件等。首先,LLM将分析问题,并用python输出解决这个问题的步骤。其次,LLM立即生成代码,按照步骤解决问题。LLM会参考错误消息调整代码,直到成功。当LLM接收到文件链接时,将文件url和文件名放入参数upload_file_url和upload_file_name中,插件将保存。
getToutiaoNews 头条新闻 搜索新闻讯息
web_pilot WebPilot WebPilot 进行互联网搜索、分析以及数据生成。
bingImageSearch 必应图片搜索 必应图像搜索API允许您的用户在全球范围内找到图片。
query Wolfram Alpha 算式计算,如1+1=2。如果输入的不是数学表达式,需要将输入转换成数学表达式并添加"()"以确保运算的顺序。如果计算失败,尝试再次调用此工具。
DayWeather 墨迹天气 获取指定日期的天气
EmojiMessage Emojesus 这用于处理用户输入的信息,它将用户输入的信息转换为表情符号,同时在当前消息状态下生成表情符号,并推荐可能需要的表情符号。
EmojiKitchen Emojesus 将用户发送的两个emoji组合成一个emoji。
EmojiTranslation Emojesus 将用户输入的信息翻译成表情符号。
EmojiSearch Emojesus 根据用户当前的消息搜索对应的表情符号。
search arXiv 帮助用户在arXiv中搜索论文。
company_info 国内股票 显示公司基本信息。 接口说明:根据"股票列表"中获取的股票代码,检索上市公司的公司概况。 包括公司基本信息、概念、发行信息等。
company_recent_benefits 国内股票 公司最近的利润情况。 界面说明:根据"股票榜"中获取的股票代码,获取上市公司过去一年各季度的利润情况。 按截止日期倒序排列。
profitability_of_company 国内股票 显示给定公司的季节性盈利能力。 接口说明:该接口汇总个股盈利情况,支持"Year_Quarter"查询。 年份可以选择1989年至今年,季度可以选择1:第一季度、2:中期报告、3:第三季度、4:年报。 例如,"2021_1"表示2021年第一季度的数据。
season_operate_of_company 国内股票 接口说明:个股操作能力汇总,支持按"年_季度"查询。 年份可以选择1989年至今年,季度可以选择1:第一季度、2:中期报告、3:第三季度、4:年报。 例如,"2021_1"表示2021年第一季度的数据。
season_growth_of_company 国内股票 公司的季节增长。 接口说明:该接口汇总了个股的成长能力,支持"Year_Quarter"格式的查询。 年份可以选择1989年至今年,季度可以选择1:第一季度、2:中期报告、3:第三季度、4:年报。 例如"2021_1"表示查询2021年第一季度的数据。
season_debt_repay_of_company 国内股票 接口说明:个股偿债能力汇总,支持"年_季度"查询。 年份可以选择1989年至今年,季度可以选择(1:第一季度报告,2:中期报告,3:第三季度报告,4:年报)。 例如"2021_1"表示查询2021年第一季度的数据。
GenPdf Doc Maker 从您提供的文本生成PDF。
getRoute 飞常准 获取航班列表
get_notion_document_info Notion 获取Notion文件信息
search 中国诗搜索 根据给定条件搜索中国诗
createDocument 飞书云文档 这是一个可以根据用户输入或者要记录的 Markdown 字符串和总结的标题来创建云文档的工具。
SecondHandCar 懂车帝 当你查询二手车的售卖信息时候可以使用此工具,可以获得二手车的价格、二手车车况图片等信息
CarSeries 懂车帝 当你需要查询新车信息或者查询某个特定车系(如宝马3系,奔驰e级)信息的时候可以使用此工具,可以获得新车价格,车辆结构,车辆生产年份,售卖链接等信息
get_express_info 快递查询助手 获取快递信息。
SearchHotels 猫途鹰 根据城市名称、入住日期和退房日期搜索酒店。
SearchFlights 猫途鹰 根据出发地、目的地、日期、行程类型、排序顺序、成人数量、老年人数量和服务等级搜索航班。
charactor_fate 起名 根据命运给出一个合适的名字。
search_population_density 世界银行 人口密度(每平方公里土地面积的人口数量)。人口密度是年中人口除以平方公里的土地面积。
search_foreign_direct_invest 世界银行 外国直接投资,净流入(国际收支平衡表,当前美元)。外国直接投资是指报告经济体中的直接投资股权流入。它是股本、利润再投资及其他资本的总和。返回的数据单位是1美元。
search_total_population 世界银行 总人口是基于人口的事实定义,计算所有居民,无论法律身份或公民身份如何。显示的值是年中估计值。返回的数据单位是1个个体。
search_income_share_highest_10 世界银行 最高10%的人持有的收入份额。收入或消费的百分比份额是按十分位数或五分位数划分的人口子组所获得的份额。
search_current_account_balance 世界银行 经常账户余额(国际收支平衡表,当前美元)。经常账户余额是货物和服务净出口、初级收入净额和二次收入净额的总和。数据以当前美元计价。返回的数据单位是1美元。
search_gdp_info 世界银行 购买者价格的GDP是经济中所有常住生产者的总价值增加之和,再加上任何产品税收,减去未包含在产品价值中的任何补贴。数据以当前的美元表示。返回的数据单位为1美元。
search_center_gov_debt_gdp 世界银行 中央政府债务总额(占GDP的百分比)。债务是指在特定日期上政府对他人的所有固定期限合约义务的全部储备。它包括国内外的债务,如货币和货币存款、非股份证券和贷款。
search_consumer_price_index 世界银行 消费者价格指数(2010年=100)。消费者价格指数反映的是平均消费者获取一篮子可能固定或在指定间隔(如每年)改变的商品和服务的成本变化。通常使用Laspeyres公式计算。数据为期间平均值。
search_a_country_basic_info 世界银行 搜索国家id,国际代码,首都城市,经度,纬度。特殊提示,您可以一次性通过这个工具获取所有国家的国家id。国家id是这个插件的所有其他工具需要使用的参数。
search_unemployment 世界银行 总失业人数(占劳动力总数的百分比)(国家估计)。失业是指劳动力中没有工作但现有并寻求就业的人口的比例。各国对劳动力和失业的定义不同。
search_gdp_per_capita 世界银行 人均GDP是国内生产总值除以年中人口数。GDP是经济中所有常住生产者的总价值增加之和,再加上任何产品税收,减去未包含在产品价值中的任何补贴。数据以当前的美元表示。返回的数据单位为1美元。
food 食物大师 食物热量查询。输入食物名称,输出其热量。
calories 食物大师 搜索适合输入热量的食物。
create_hanzi_gif 写汉字 为用户创建展示汉字笔顺的gif动画。输入参数必须是中文。
BankInterestRate 国内银行利率 银行利率查询,可查询指定银行的贷款利率、存款利率、公积金利率
job_recommendation 猎聘 帮助用户搜索工作招聘,基于用户的工作经验、教育经历、地理位置、薪水、职位名称、工作性质等
ocr Simple OCR 图像URL的光学字符识别
lyrics_to_song AI乐队 根据歌词生成歌曲
searchLocation 地图精灵 周边搜索:用户可以轻松搜索附近的餐厅、娱乐场所以及各种其他餐饮和休闲点,让他们快速找到周围的服务和娱乐选择。
searchDirection 地图精灵 路线推荐:提供高效的路线规划和建议,帮助用户快速找到最佳出行路线,节省时间和精力。
ForexTrendPlugin 外汇走势 外汇走势
ExpressDeliveryPlugin 国内快递查询 快递状态查询
SecondHandHouse 幸福里 如果想要购买二手房或者查询二手房信息的时候可以使用此工具,输入二手房的城市、户型、小区名称等,可以获取二手房所在的区域,房子图片,二手房总价,每平米价格等信息
NewHouse 幸福里 如果你想买新房,可以先用这个工具获取新房的信息,输入想要的户型、区域、城市、小区名称等,可以获取新房的具体信息,包括房子图片,价格,每平米价格等
HouseRenting 幸福里 通过此工具获取租房的信息,包括房子所在的区域,小区名称,房子图片,租房的价格
roll_the_dice 骰子大师 掷骰子
get_dice_images 骰子大师 根据输入的整数获取对应值的骰子图像。
count_dice 骰子大师 找到具有某一设定值的骰子数量。(包括可以被视为任何数字的1。)
AddRankConfig 游戏积分排行榜 添加排名配置。
WriteRank 游戏积分排行榜 编写排名。
GetRankInfo 游戏积分排行榜 获取排名信息。
GameEnd 游戏积分排行榜 游戏结束。

😆 前些天又开放了 上架插件 的功能,可以看到 首页商店-插件 多了新插件:

自定义插件 的步骤非常简单:

  • 选中一个工作区 (个人空间或团队),点击顶部的 插件 标签切换到插件页,点击右上角的 创建插件
  • 在弹出的 编辑插件配置 窗口中依次配置:插件图标插件名称插件描述插件URL (接口的BaseURL)、Header 列表(请求头列表)、授权方式 (不需要授权、Service[Token或API Key]、Oauth)。

插件创建完,就到 创建工具 了:

  • 填写基本信息工具名称工具描述工具路径 (API接口)、请求方式(GET、POST等);
  • 配置输入参数 :点击 新增参数 ,完成相关配置:参数名称参数描述参数类型传入方法是否必填
  • 配置输出参数: 点击 新增参数 ,完成相关配置:参数名称参数描述参数类型是否必填 。也可以点击右上角的 自动解析 来自动生成输出参数,注:只支持JSON类型的返回数据!!!
  • 调试与校验 :输入参数,点击运行,查看插件工具的响应结果,如果 调试通过 ,点击 完成 即可。

😁 具体创建的 操作流程图解 可以看我之前写的《用Coze扣子轻松搭个Bot,从此告别"标题党"》,非常简单,等下也会讲到。我感觉 自定义插件的难点 ,反而是去哪找 称心如意的API接口?常规思路无非这几个:

  • 搜索免费/开源接口 → 如:玩Android开放APISocialSisterYi/bilibili-API-collect 等,这个得自己搜,Github上挺多。
  • 付费接口 → 如:聚合数据,一般按照调用次数收费,也会提供一定的 免费调用次数 (如50次/天)。
  • 接口破解 → 通过 抓包逆向破解APP 等方式获取私密API,但谨记偷着乐,这很可👮。
  • 买云服务器自己提供接口 → 成本较高,首先你得买个云服务器,然后有技术门槛,你起码能能把站点支棱起来,感觉能通过扣子插件 获利了,再搞也不迟,当然,你要为爱发电也是可以的👍。

😏 真的就只有上面几种 获取API接口 的方式么?嘿嘿,杰哥再给你支个 奇招Mock API ,简单点说就是:定义接口API,每次请求返回写死的数据

😊 不懂没关系,看我怎么 操作 就行了,以 Apifox 为例实现一波~

2. 启用云端Mock

注册账号登录后,点击我的团队,在 My Workspace 里新建一个项目:

接着右上角点击 请选择环境 ,此时只有前面三个环境可以用,但它们都是需要有 自己服务器 的:

点击 管理环境 ,定位到 云端Mock ,提示 未开启云端Mock功能

点击 去开启 ,跳转页面后,定位到 云端Mock 右侧的开关,启用

然后就可以 访问到我们定义的API接口 了,点击复制URL,加上 pet/1,回车发起请求,可以看到返回的数据:

😆 行吧,接着以聚合数据的新闻头条接口为例,来新建一个接口。

3. 添加Mock期望

简单设置下接口地址,加一个分页的请求参数。

返回响应那里,点击 通过JSON等生成

粘贴聚合数据接口返回的json,会自动解析生成对应字段,然后点击 确定

然后响应那里就可以看到生成的字段啦:

保存下接口,直接浏览器访问下:mock.apifox.com/m1/xxx-0-de...

可以,数据正常返回,问题来了,这个数据是写死的,如果想 根据不同的条件返回不同的数据呢 ?比如page=2,返回第二页的数据,page = 3,返回第三页的数据这样? :😁Apifox提供了 Mock期望 。点击 高级Mock

点击 新建期望 ,设置下 参数条件,比如,设置url里的page为1和2,分别返回不同的数据:

此时访问:mock.apifox.com/m1/xxx-0-de...

就是第二页的数据啦♪(^∇^*)

4. Coze自定义插件

接着回到 扣子,新建插件,插件url配置成我们的云端Mock的url:

接着点击 创建工具,填下API地址:

配置下page参数,传入方法要用 Query

点下 自动解析,会自动完成输出参数的配置,点击保存并继续:

接着可以分别 输入1、2 测试是否为期望的返回结果,如果输入其它值则是根据字段自动生成的数据:

点击 完成 ,然后 发布上架插件 简单填下插件信息:

上架成功后,就可以在首页看到我们的自定义插件啦:

新建一个 工作流,测试下我们的自定义插件:

😉 Nice,接着如法炮制添加更多API来完善插件里的插件工具吧!

5. 自动更新Mock的返回数据

Mock API 返回的响应数据都是固定,如果想更新,需要自己 手动 复制新的Json数据去覆盖。对于 新闻 这类 时效性 要求比较高的信息,更新频率会有点高,比如:每30分钟需要更新一次,让人手动去更

妥妥得想办法弄下 自动更新,思路:

写个Python脚本定时请求聚合数据的接口,然后调用下apifox的接口更新下返回数据。

定时任务还好,网上资料全得很:schedule库APScheduler库 ,或者直接用 操作系统的任务计划器 都行,这其中最重要的一环是 Apifox有没有提供API? 把文档都翻遍了,😪 终于让我找到了 修改接口的API

点击 账户设置API访问令牌新建令牌 ,输入名称,设置下有效期,点击生成,生成的令牌要保存好,后面是看不到的了,只能 重置

看了下 接口详情的响应参数修改接口的请求参数 字段基本是一样的,先写代码获取下我们上面创建的新闻头条接口的详情:

python 复制代码
import requests as r

headers = {
    'X-Apifox-Version': '2024-01-20',
    'Authorization': 'Bearer APS-xxx',
    'User-Agent': 'Apifox/1.0.0 (https://apifox.com)'
}


def get_api_info(project_id, api_id):
    resp = r.get("https://api.apifox.com/api/v1/projects/{}/http-apis/{}".format(project_id, api_id), headers=headers)
    print(resp.text)


if __name__ == '__main__':
    get_api_info(xxx, xxxxxx)

格式化下接口返回的json,不难看出这就是我们提供的Mock数据列表:

接着就是 对字段 ,将 接口详情返回的数据修改接口的请求参数 关联上,请求下聚合数据的新闻头条数据,更新下responseExamples字段,具体代码如下:

python 复制代码
import json
import requests as r

# 请求头
headers = {
    'X-Apifox-Version': '2024-01-20',
    'Authorization': 'Bearer APS-xxx',
    'User-Agent': 'Apifox/1.0.0 (https://apifox.com)',
    'Content-Type': 'application/json'
}


# 更新api接口
def update_api(project_id, api_id):
    request_url = "https://api.apifox.com/api/v1/projects/{}/http-apis/{}?locale=zh-CN".format(project_id, api_id)
    # 拉取接口信息
    resp = r.get(request_url, headers=headers)
    data_json = resp.json()['data']
    # 对下不变的参数
    put_data = {
        "tags": data_json['tags'],
        "requestBody": data_json['requestBody'],
        "parameters": data_json['parameters'],
        "name": data_json['name'],
        "description": data_json['description'],
        "method": data_json['method'],
        "path": data_json['path'],
        "status": data_json['status'],
        "projectId": data_json['projectId'],
        "folderId": data_json['folderId'],
        "auth": data_json['auth'],
        "advancedSettings": data_json['advancedSettings'],
        "responses": data_json['responses'],
    }
    # 请求聚合数据的新闻头条数据
    jh_resp = r.get("https://v.juhe.cn/toutiao/index", params={"key": "xxx"})
    jh_json = jh_resp.text

    # 更新返回数据responseExamples对应的数据
    put_data['responseExamples'] = [{'name': "成功示例", "ordering": 1, "data": jh_json}]

    # 调用修改接口
    resp = r.put(request_url, headers=headers, json=put_data)
    print(resp.text)    # 输出:{"success":true,"data":null}


if __name__ == '__main__':
    update_api(xxx, yyy)

😝 运行后,可以看到接口文档的 响应数据 也更新了!赶紧去试试吧~

相关推荐
我算是程序猿1 小时前
用AI做电子萌宠,快速涨粉变现
人工智能·stable diffusion·aigc
哪 吒2 小时前
吊打ChatGPT4o!大学生如何用上原版O1辅助论文写作(附论文教程)
人工智能·ai·自然语言处理·chatgpt·aigc
AI绘画君5 小时前
Stable Diffusion绘画 | AI 图片智能扩充,超越PS扩图的AI扩图功能(附安装包)
人工智能·ai作画·stable diffusion·aigc·ai绘画·ai扩图
乔代码嘚8 小时前
AI2.0时代,普通小白如何通过AI月入30万
人工智能·stable diffusion·aigc
XiaoLiuLB9 小时前
ChatGPT Canvas:交互式对话编辑器
人工智能·自然语言处理·chatgpt·编辑器·aigc
Java小卷9 小时前
自研API接口管理工具APIFirst1.0版本介绍
api·swagger
学习前端的小z1 天前
【AIGC】ChatGPT提示词解析:如何打造个人IP、CSDN爆款技术文案与高效教案设计
人工智能·chatgpt·aigc
wgggfiy2 天前
chatgpt学术科研prompt模板有哪些?chatgpt的学术prompt有哪些?学术gpt,学术科研
论文阅读·人工智能·gpt·chatgpt·prompt·aigc
⊙月2 天前
CMU 10423 Generative AI:lec15(Scaling Laws 大规模语言模型的扩展法则)
人工智能·aigc
贪玩懒悦2 天前
用langchain+streamlit应用RAG实现个人知识库助手搭建
人工智能·ai·语言模型·langchain·aigc