メインコンテンツへスキップ
⚠️ このドキュメントはAIによって自動翻訳されています。不正確な部分がある場合は、英語版を参照してください。

Endpoint

このドキュメントでは、Neko Cat プロジェクトを例として、プラグイン内の Endpoint の構造について説明します。Endpoint はプラグインが公開する HTTP インターフェースで、外部システムとの統合に使用できます。完全なプラグインコードについては、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): インターフェースメソッド、HEADGETPOSTPUTDELETEOPTIONS のみサポートします。
  • extra (object): 基本情報以外の設定情報。
    • python (object)
      • source (string): このインターフェースを実装するソースコード。
path: "/duck/<app_id>"
method: "GET"
extra:
  python:
    source: "endpoints/duck.py"

インターフェース実装

dify_plugin.Endpoint を継承するサブクラスを実装し、_invoke メソッドを実装する必要があります。
  • 入力パラメータ
    • r (Request): werkzeugRequest オブジェクト。
    • values (Mapping): パスから解析されたパスパラメータ。
    • settings (Mapping): この Endpoint の設定情報。
  • 戻り値
    • werkzeugResponse オブジェクト、ストリーミングレスポンスをサポートします。
    • 文字列を直接返すことはサポートされていません。
サンプルコード:
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 コールバックの処理や、他のシステムが接続するためのインターフェースの提供に使用できます。
プラグイン開発を学習中の場合は、まずプラグイン開発入門開発者チートシートを読むことをお勧めします。

関連リソース


Edit this page | Report an issue