开源coze源码系列之插件架构

B站影视 欧美电影 2025-08-29 21:53 1

摘要:Coze Studio的插件架构提供了一个灵活且可扩展的框架,用于将外部工具和服务集成到您的代理和工作流程中。本文档探讨了插件系统的核心组件、设计原则和实现细节。

Coze Studio的插件架构提供了一个灵活且可扩展的框架,用于将外部工具和服务集成到您的代理和工作流程中。本文档探讨了插件系统的核心组件、设计原则和实现细节。

在Coze Studio中,插件充当桥接组件,将您的代理连接到外部API和服务。它们遵循模块化设计,将插件定义与其实现和使用分离。

插件架构的核心包括:

插件注册表 - 插件的集中存储和管理插件执行引擎 - 处理插件操作的调用插件开发框架 - 用于创建新插件的工具和API集成点 - 插件如何与代理和工作流程连接

插件系统基于领域驱动设计,具有明确定义的实体。主要实体包括:

PluginInfo:包含插件的元数据(名称、描述、版本等)ToolInfo:表示插件提供的单个API操作或工具AuthInfo:用于安全API访问的认证和授权信息

Coze Studio中的每个插件都遵循OpenAPI 3.0规范,使其与标准API文档和工具兼容。

插件服务层实现了管理插件的业务逻辑:

type PluginService interface {
// 草稿插件操作
CreateDraftPlugin(ctx context.Context, req *CreateDraftPluginRequest) (pluginID int64, err error)
GetDraftPlugin(ctx context.Context, pluginID int64) (plugin *entity.PluginInfo, err error)
ListDraftPlugins(ctx context.Context, req *ListDraftPluginsRequest) (resp *ListDraftPluginsResponse, err error)
UpdateDraftPlugin(ctx context.Context, plugin *UpdateDraftPluginRequest) (err error)

// 在线插件操作
PublishPlugin(ctx context.Context, req *PublishPluginRequest) (err error)
GetOnlinePlugin(ctx context.Context, pluginID int64) (plugin *entity.PluginInfo, err error)

// 工具操作
ExecuteTool(ctx context.Context, req *ExecuteToolRequest, opts ...entity.ExecuteToolOpt) (resp *ExecuteToolResponse, err error)
// ... 更多方法
}

此服务层强制执行业务规则,并协调存储层和应用层之间的操作。

Coze Studio中的插件遵循从创建到执行的定义生命周期:

插件从草稿状态开始,开发人员可以:

定义元数据(名称、描述、图标)配置认证机制定义带参数和响应的工具操作测试插件功能

一旦插件准备就绪,可以发布,使其对代理和工作流程可用:

已发布的插件可以与代理集成,使其能够使用插件的功能:

在运行时,代理可以通过执行引擎执行插件工具:

插件开发创建插件

插件可以通过两种方式创建:

基于UI的创建:使用插件开发界面定义元数据和配置通过表单界面逐个添加工具直接在浏览器中测试基于代码的创建:使用OpenAPI 3.0规范定义插件

创建插件时,您可以配置各种方面:

此JSON模式定义了插件的核心属性,包括认证和每个API请求将发送的公共参数。、

插件是Coze Studio工作流程中的关键组件,允许编排涉及外部服务的复杂过程。

在工作流程中,插件可以是:

触发节点:基于外部事件启动工作流程动作节点:作为工作流程的一部分执行操作决策节点:使用插件结果确定工作流程路径

工作流程系统通过标准接口与插件集成,处理:

从工作流程变量到插件输入的参数映射从插件输出到工作流程变量的结果映射错误处理和重试基于插件结果的条件分支

直接API测试:使用自定义输入测试单个工具请求/响应检查:查看完整的HTTP详细信息以进行调试参数验证:检查您的参数是否符合模式要求

在将插件与代理集成时,您还可以测试完整的对话流程,以确保插件在实际场景中按预期工作。

来源:码韵匠道

相关推荐