Skip to main content

本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。

Endpoint 是插件对外暴露的 HTTP 接口,用于与外部系统集成。本文以 Neko Cat 项目为例,讲解其结构。

Info

该示例已从 SDK 仓库移除,链接指向最后包含它的版本。持续维护的插件示例参考 官方插件示例。

分组定义#

Endpoint 分组是多个 Endpoint 的集合。在 Dify 插件中创建新的 Endpoint 时,可能需要填写以下配置。

Endpoint 分组配置表单

除了 Endpoint Name 之外,可通过编写分组的配置来添加表单项。保存后,即可看到该分组包含的多个接口,它们共用同一份配置。

Endpoint 分组接口列表

结构#

  • settings (map[string] ProviderConfig):Endpoint 配置定义。
  • endpoints (list[string],必填):指向具体的 endpoint 接口定义。

接口定义#

  • path (string):遵循 Werkzeug 接口标准。
  • method (string):接口方法,仅支持 HEAD、GET、POST、PUT、DELETE 和 OPTIONS。
  • extra (object):基本详情之外的配置信息。
    • python (object)
      • source (string):实现此接口的源代码。

接口实现#

实现一个继承自 dify_plugin.Endpoint 的子类,并实现其 _invoke 方法。

  • 输入参数
    • r (Request):来自 werkzeug 的 Request 对象。
    • values (Mapping):从路径解析出的路径参数。
    • settings (Mapping):此 Endpoint 的配置信息。
  • 返回
    • 来自 werkzeug 的 Response 对象,支持流式响应。
    • 不支持直接返回字符串。

示例代码:

注意事项#

  • Endpoint 仅在插件被调用时实例化,并非长期运行的服务。
  • 开发 Endpoint 时注意安全性,避免执行危险操作。
  • Endpoint 可用于处理 Webhook 回调,或为其他系统提供对接接口。

如果你刚接触插件开发,可先阅读 插件开发入门 和 开发者速查表。

相关资源#