--- dimensions: type: primary: reference detail: examples level: intermediate standard_title: Endpoint language: ja title: レインボーキャットプロジェクト Endpoint(エンドポイント) description: 著者 Yeuoly、Allen このドキュメントでは、レインボーキャットプロジェクトを例に、DifyプラグインにおけるEndpointの構造と実装方法を詳しく説明します。内容には、Endpointグループの定義方法、インターフェースの設定、_invokeメソッドの実装、リクエストとレスポンスの処理が含まれます。このドキュメントでは、さまざまなYAML設定フィールドの意味と使用方法について詳しく説明します。 --- --- title: Endpoint(エンドポイント) --- この記事では、プラグイン内のエンドポイントの構造を説明するために、[クイックスタート:レインボーキャットプロジェクト](/ja-jp/plugins/quick-start/develop-plugins/extension-plugin)を例として取り上げます。完全なプラグインコードは、[GitHub](https://github.com/langgenius/dify-plugin-sdks/tree/main/python/examples/neko)で確認できます。 ### **グループの定義** `Endpoint`グループは、複数の`Endpoint`をまとめたものです。`Dify`プラグインで新しい`Endpoint`を作成する際には、以下の設定項目を入力する必要があります。 「Endpoint Name」の他に、グループ構成情報を記述することで、新しいフォーム項目を追加できます。保存すると、同じ構成情報を使用する複数のインターフェースが表示されるようになります。 #### **構造** * `settings` (map\[string] [ProviderConfig](/ja-jp/plugins/schema-definition/general-specifications)): エンドポイントの設定定義 * `endpoints` (list\[string], required): 特定の`endpoint`インターフェース定義を指定します。 ```yaml 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): このインターフェースを実装するソースコード ```yaml path: "/duck/" method: "GET" extra: python: source: "endpoints/duck.py" ``` ### エンドポイントの実装 `dify_plugin.Endpoint`を継承したサブクラスを実装し、`_invoke`メソッドを実装する必要があります。 * **入力パラメータ** * `r` (Request): werkzeugからのリクエストオブジェクト * `values` (Mapping): パスから解析されたパスパラメータ * `settings` (Mapping): このエンドポイントの設定情報 * **戻り値** * werkzeugからのレスポンスオブジェクト。ストリーミングでの応答をサポートします。 * 直接的な文字列の戻り値はサポートしません。 **コード例:** ```python 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}
" return Response(generator(), status=200, content_type="text/html") ``` {/* Contributing Section DO NOT edit this section! It will be automatically generated by the script. */} --- [このページを編集する](https://github.com/langgenius/dify-docs/edit/main/plugin-dev-ja/0432-endpoint.mdx) | [問題を報告する](https://github.com/langgenius/dify-docs/issues/new?template=docs.yml)