このドキュメントは 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