0基础开发Coze智能体:第五章 插件介绍及应用

关注我,带你一起玩转AI!


大家好,我是罗康,公众号“无界生长”主理人,AI领域创业者,企业AI转型提效顾问/讲师,AI应用落地专家,拥有丰富的AI应用落地经验,交付各行各业AI应用几十个,付费学员6000+。

这是我的第 130 篇原创文章——《 0基础开发Coze智能体:第五章 插件介绍及应用 》

做了个非常艰难的决定,准备把付费课程的手册内容更新到公众号。

我认为,知识不值钱, 值钱的是 传递知识的过程。

我的愿景是在AI时代孵化1000个超级个体,影响10万人。

如果手册内容对你有所帮助,可以在文末打赏留下微信头像,经济条件允许,可以购买共创营产品,学习视频课程。

插件概述

插件是扣子生态系统中非常核心的功能,也是让扣子跻身国内智能体开发平台第一梯队的关键因素。

扣子的插件可以简单理解为实现特定功能的工具包,用户可以根据自身需要,为智能体或者工作流节点添加插件,以达成预期的目标。

picture.image

通过插件,我们能够非常方便的拓展大模型的能力边界,实现功能拓展。当前扣子平台的插件商店,有非常多的优质插件可用。

创建插件

端侧插件依赖硬件设备,本次课程主要讲解云侧插件

云侧插件 - 基于已有服务创建

以调用coze工作流为例,首先在 https://www.coze.cn/open/oauth/pats 创建令牌

为了方便理解,我这里使用个人访问令牌做演示,有效期最长为30天,如果你希望能长期使用,建议你采用服务访问令牌或OAuth 访问令牌。

具体内容说明,参考:https://www.coze.cn/open/docs/developer\_guides/preparation

生成的令牌仅在创建成功后展示一次,记得复制并保存。如果不小心忘记了,新建一个令牌。

新建插件

配置插件头像、名称、描述、创建方式、插件URL、Header列表和授权方式。

picture.image

创建工具

picture.image

picture.image

配置基本信息

填写工具名称、描述、路径、请求方法、配置输入参数和输出参数等,根据实际情况填写。

picture.image

测试插件

参考API文档,把相关参数填入,试运行插件

picture.image

更新输出参数

点击编辑按钮,选择“自动解析”

picture.image

填写插件相关参数

picture.image

保存自动解析的输出参数

picture.image

验证效果

查看数据是否正常写入

picture.image

发布插件

picture.image

执行工作流的API文档:https://www.coze.cn/open/docs/developer\_guides/workflow\_run

云侧插件 - 在 Coze IDE 中创建

新建插件

配置插件头像、名称、描述、创建方式和代码运行环境

picture.image

创建工具

picture.image

填写工具名称和介绍

picture.image

默认页面

picture.image

还是以调用工作流为例,通过http请求调用api

安装依赖包,输入 requests ,安装

picture.image

编写代码

定义插件的输入参数,编写插件代码

picture.image

这里直接让大模型帮我们写代码

  
我需要开发扣子插件调用工作流,工作流输入参数为name 和 nickname,输出参数为output。插件输入参数为access\_token、workflow\_id、name 和 nickname参考下方资料,帮忙编写插件代码。  
  
## 插件示例代码  
from runtime importArgs  
from typings.invoke\_workflow.invoke\_workflowimportInput, Output  
  
"""  
Each file needs to export a function named `handler`. This function is the entrance to the Tool.  
  
Parameters:  
args: parameters of the entry function.  
args.input - input parameters, you can get test input value by args.input.xxx.  
args.logger - logger instance used to print logs, injected by runtime.  
  
Remember to fill in input/output in Metadata, it helps LLM to recognize and use tool.  
  
Return:  
The return data of the function, which should match the declared output parameters.  
"""  
def handler(args: Args[Input])->Output:  
    return {"message": "Hello, world!"}  
  
## 调用工作流的api文档  
基础信息  
请求方式  
POST  
请求地址  
https://api.coze.cn/v1/workflow/run  
  
权限  
run  
确保调用该接口使用的个人令牌开通了 run 权限,详细信息参考鉴权方式。  
接口说明  
执行已发布的工作流。  
  
请求参数  
Header  
参数  
取值  
说明  
Authorization  
Bearer $Access\_Token  
用于验证客户端身份的访问令牌。你可以在扣子平台中生成访问令牌,详细信息,参考准备工作。  
Content-Type  
application/json  
解释请求正文的方式。  
  
Body  
参数  
类型  
是否必选  
示例  
说明  
workflow\_id  
String  
必选  
73664689170551*****  
待执行的 WorkflowID,此工作流应已发布。  
进入 Workflow 编排页面,在页面 URL 中,workflow 参数后的数字就是 WorkflowID。例如 https://www.coze.com/work\_flow?space\_id=42463***&workflow\_id=73505836754923***,Workflow ID 为 73505836754923***。  
parameters  
Map[String, Any]  
可选  
{  
"user\_id":"12345",  
"user\_name":"George"  
}  
工作流开始节点的输入参数及取值,你可以在指定工作流的编排页面查看参数列表。  
如果工作流输入参数为 Image 等类型的文件,可以调用上传文件 API 获取 file\_id,在调用此 API 时,在 parameters 中以序列化之后的 JSON 格式传入 file\_id。例如 “parameters” : { "input": "{\"file\_id\": \"xxxxx\"}" }。  
bot\_id  
String  
可选  
73428668*****  
需要关联的智能体 ID。 部分工作流执行时需要指定关联的智能体,例如存在数据库节点、变量节点等节点的工作流。  
  
进入智能体的开发页面,开发页面 URL 中 bot 参数后的数字就是智能体t ID。例如 https://www.coze.com/space/341****/bot/73428668*****,智能体 ID 为 73428668*****。  
确保调用该接口使用的令牌开通了此智能体所在空间的权限。  
确保该智能体已发布为 API 服务。  
  
ext  
JSONMap  
可选  
  
用于指定一些额外的字段,以 Map[String][String] 格式传入。例如某些插件 会隐式用到的经纬度等字段。  
目前仅支持以下字段:  
latitude:String 类型,表示经度。  
longitude:String 类型,表示纬度。  
user\_id:String 类型,表示用户 ID。  
is\_async  
Boolean  
可选  
true  
是否异步运行。异步运行后可通过本接口返回的 execute\_id 调用查询工作流异步执行结果API 获取工作流的最终执行结果。  
true:异步运行。  
false:(默认)同步运行。  
异步运行的参数 is\_async 仅限扣子个人进阶版、团队版、企业版和专业版使用,否则调用此接口会报错 6003Workflow execution with is\_async=true is a premium feature available only to CozeProfessional users。  
  
app\_id  
String  
可选  
749081945898306****  
该工作流关联的应用的 ID  
  
返回参数  
参数  
类型  
示例  
说明  
code  
Long  
0  
调用状态码。  
0 表示调用成功。  
其他值表示调用失败。你可以通过 msg 字段判断详细的错误原因。  
msg  
String  
Success  
状态信息。API 调用失败时可通过此字段查看详细错误信息。  
data  
String  
  
工作流执行结果,通常为 JSON 序列化字符串,部分场景下可能返回非 JSON 结构的字符串。  
execute\_id  
String  
741364789030728****  
异步执行的事件 ID。  
token  
Long  
  
预留字段,无需关注。  
cost  
String  
0  
预留字段,无需关注。  
debug\_url  
String  
https://www.coze.cn/work\_flow?execute\_id=741364789030728****&space\_id=736142423532160****&workflow\_id=738958910358870****  
工作流试运行调试页面。访问此页面可查看每个工作流节点的运行结果、输入输出等信息。  
detail  
ObjectofResponseDetail  
  
返回的详情。  
  
ResponseDetail  
参数  
类型  
示例  
说明  
logid  
String  
20241210152726467C48D89D6DB2****  
本次请求的日志 ID。如果遇到异常报错场景,且反复重试仍然报错,可以根据此 logid 及错误码联系扣子团队获取帮助。详细说明可参考获取帮助和技术支持。

把生成好的代码粘贴到 Coze IDE

picture.image

  
import requests  
import json  
from runtime import Args  
from typings.invoke\_workflow.invoke\_workflow import Input, Output  
  
defhandler(args: Args[Input]) -> Output:  
    # 获取所有输入参数  
    name = args.input.name  
    nickname = args.input.nickname  
    access\_token = args.input.access\_token  
    workflow\_id = args.input.workflow\_id  
      
    # 验证必填参数  
    ifnotall([name, nickname, access\_token, workflow\_id]):  
        raise ValueError("所有输入参数(name, nickname, access\_token, workflow\_id)都是必填项")  
      
    # 构造API请求  
    url = "https://api.coze.cn/v1/workflow/run"  
    headers = {  
        "Authorization": f"Bearer {access\_token}",  
        "Content-Type": "application/json"  
    }  
    payload = {  
        "workflow\_id": workflow\_id,  
        "parameters": {  
            "name": name,  
            "nickname": nickname  
        }  
    }  
      
    try:  
        # 发送API请求  
        response = requests.post(url, headers=headers, json=payload, timeout=30)  
        response.raise\_for\_status()  
        result = response.json()  
          
        # 检查API响应状态  
        if result.get("code") != 0:  
            error\_msg = result.get("msg", "未知错误")  
            args.logger.error(f"工作流执行失败: {error\_msg} | 响应: {result}")  
            raise RuntimeError(f"工作流执行失败: {error\_msg}")  
          
        # 解析工作流输出  
        output\_data = json.loads(result["data"])  
        return {"output": output\_data}  
      
    except requests.exceptions.RequestException as e:  
        args.logger.error(f"API请求异常: {str(e)}")  
        raise RuntimeError(f"网络请求失败: {str(e)}")  
    except json.JSONDecodeError as e:  
        args.logger.error(f"API响应解析失败: {response.text}")  
        raise RuntimeError("工作流响应格式错误")  
    except Exception as e:  
        args.logger.error(f"未处理的异常: {str(e)}")  
        raise RuntimeError(f"插件执行出错: {str(e)}")

测试代码

  • access_token:填写访问令牌
  • workflow_id:通过工作流页面获取

picture.image

  • name:工作流参数,名称
  • nickname:工作流参数,花名

picture.image

更新输出参数

picture.image

picture.image

picture.image

验证效果

picture.image

发布插件

picture.image

picture.image

picture.image

使用插件

如何选择插件

官方插件 2. 2. 自己开发或者用知名开发者提供的插件

查看插件的数据,从调用成功率、使用人数/次数、耗时等指标考量

智能体

创建智能体

picture.image

添加插件

添加两个插件进去

picture.image

picture.image

编写人设与回复逻辑

  
如果用户输入的信息中包含名称、花名、工作流ID、访问令牌,提取对应的内容,调用工作流{#LibraryBlock id="7530257856889831424" uuid="Ns3MXac\_Pc1e3N64XCD4E" type="plugin" apiId="7530258448685187087"#}invoke\_workflow{#/LibraryBlock#}。  
如果用户输入的信息中包含工作流参数、工作流ID、解释请求正文的方式、认证类型,调用工作流{#LibraryBlock id="7530261097295888434" uuid="Cwi24m7LDTV2sT0XS1pSU" type="plugin" apiId="7530261346399780873"#}invoke\_workflow{#/LibraryBlock#}。

调试智能体

picture.image

工作流

创建工作流

picture.image

添加插件

picture.image

维护插件

编辑插件

picture.image

复制插件

picture.image

删除插件

picture.image

其他高级功能

picture.image

更多内容参考:https://www.coze.cn/open/docs/guides/plugin\_version

插件常见问题

更多内容参考:https://www.coze.cn/open/docs/guides/plugin\_faq

Coze限时优惠

官方优惠渠道,关联账号享95折优惠。

点击阅读原文 或 复制下方链接:

https://tcnlyrb26udn.feishu.cn/wiki/HY7SwLA98ip82akU8Hec9sKCnmh?from=from\_copylink

如果想学习视频课程,深耕智能体赛道,可以购买文末商品链接,加入我们共创团队!


关注我,带你一起玩转AI!如果你觉得我分享的内容对你有帮助,麻烦点赞、分享、在看,你的支持是我创作的最大动力!

私人微信限时开放一天

picture.image

欢迎加入我的智能体共创团队

0
0
0
0
评论
未登录
暂无评论