本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版。
Endpoint 是插件对外暴露的 HTTP 接口,用于与外部系统集成。本文以 Neko Cat 项目为例,讲解其结构。完整的插件代码参考 GitHub 仓库。
分组定义
Endpoint 分组是多个 Endpoint 的集合。在 Dify 插件中创建新的 Endpoint 时,可能需要填写以下配置。
除了 Endpoint Name 之外,可通过编写分组的配置来添加表单项。保存后,即可看到该分组包含的多个接口,它们共用同一份配置。
settings (map[string] ProviderConfig):Endpoint 配置定义。
endpoints (list[string],必填):指向具体的 endpoint 接口定义。
settings:
api_key:
type: secret-input
required: true
label:
en_US: API key
zh_Hans: API key
ja_Jp: API key
pt_BR: API key
placeholder:
en_US: Please input your API key
zh_Hans: 请输入你的 API key
ja_Jp: あなたの API key を入れてください
pt_BR: Por favor, insira sua chave API
endpoints:
- endpoints/duck.yaml
- endpoints/neko.yaml
接口定义
path (string):遵循 Werkzeug 接口标准。
method (string):接口方法,仅支持 HEAD、GET、POST、PUT、DELETE 和 OPTIONS。
extra (object):基本详情之外的配置信息。
python (object)
source (string):实现此接口的源代码。
path: "/duck/<app_id>"
method: "GET"
extra:
python:
source: "endpoints/duck.py"
接口实现
实现一个继承自 dify_plugin.Endpoint 的子类,并实现其 _invoke 方法。
- 输入参数
r (Request):来自 werkzeug 的 Request 对象。
values (Mapping):从路径解析出的路径参数。
settings (Mapping):此 Endpoint 的配置信息。
- 返回
- 来自
werkzeug 的 Response 对象,支持流式响应。
- 不支持直接返回字符串。
示例代码:
import json
from typing import Mapping
from werkzeug import Request, Response
from dify_plugin import Endpoint
class Duck(Endpoint):
def _invoke(self, r: Request, values: Mapping, settings: Mapping) -> Response:
"""
Invokes the endpoint with the given request.
"""
app_id = values["app_id"]
def generator():
yield f"{app_id} <br>"
return Response(generator(), status=200, content_type="text/html")
注意事项
- Endpoint 仅在插件被调用时实例化,并非长期运行的服务。
- 开发 Endpoint 时注意安全性,避免执行危险操作。
- Endpoint 可用于处理 Webhook 回调,或为其他系统提供对接接口。
如果你刚接触插件开发,可先阅读 插件开发入门 和 开发者速查表。
相关资源
Last modified on June 25, 2026