mirror of
https://github.com/langgenius/dify-docs-archived.git
synced 2026-07-19 22:43:32 -04:00
3.5 KiB
3.5 KiB
Endpoint(エンドポイント)
この記事では、プラグイン内のエンドポイントの構造を説明するために、クイックスタート:レインボーキャットプロジェクトを例として取り上げます。完全なプラグインコードは、Githubで確認できます。
グループの定義
Endpointグループは、複数のEndpointをまとめたものです。Difyプラグインで新しいEndpointを作成する際には、以下の設定項目を入力する必要があります。

「Endpoint Name」の他に、グループ構成情報を記述することで、新しいフォーム項目を追加できます。保存すると、同じ構成情報を使用する複数のインターフェースが表示されるようになります。

構造
settings(map[string] ProviderConfig): エンドポイントの設定定義endpoints(list[string], required): 特定の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): werkzeugからのリクエストオブジェクトvalues(Mapping): パスから解析されたパスパラメータsettings(Mapping): このエンドポイントの設定情報
- 戻り値
- werkzeugからのレスポンスオブジェクト。ストリーミングでの応答をサポートします。
- 直接的な文字列の戻り値はサポートしません。
コード例:
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")