開発例
レインボーキャットプロジェクト Endpoint(エンドポイント)
著者 Yeuoly、Allen このドキュメントでは、レインボーキャットプロジェクトを例に、DifyプラグインにおけるEndpointの構造と実装方法を詳しく説明します。内容には、Endpointグループの定義方法、インターフェースの設定、_invokeメソッドの実装、リクエストとレスポンスの処理が含まれます。このドキュメントでは、さまざまなYAML設定フィールドの意味と使用方法について詳しく説明します。
title: Endpoint(エンドポイント)
この記事では、プラグイン内のエンドポイントの構造を説明するために、クイックスタート:レインボーキャットプロジェクトを例として取り上げます。完全なプラグインコードは、Githubで確認できます。
グループの定義
Endpoint
グループは、複数のEndpoint
をまとめたものです。Dify
プラグインで新しいEndpoint
を作成する際には、以下の設定項目を入力する必要があります。
「Endpoint Name」の他に、グループ構成情報を記述することで、新しいフォーム項目を追加できます。保存すると、同じ構成情報を使用する複数のインターフェースが表示されるようになります。
構造
settings
(map[string] ProviderConfig): エンドポイントの設定定義endpoints
(list[string], required): 特定のendpoint
インターフェース定義を指定します。
インターフェース定義
path
(string): werkzeugのインターフェース標準に従います。method
(string): インターフェースのメソッド。HEAD
GET
POST
PUT
DELETE
OPTIONS
のみをサポートします。extra
(object): 基本情報以外の設定情報python
(object)source
(string): このインターフェースを実装するソースコード
エンドポイントの実装
dify_plugin.Endpoint
を継承したサブクラスを実装し、_invoke
メソッドを実装する必要があります。
- 入力パラメータ
r
(Request): werkzeugからのリクエストオブジェクトvalues
(Mapping): パスから解析されたパスパラメータsettings
(Mapping): このエンドポイントの設定情報
- 戻り値
- werkzeugからのレスポンスオブジェクト。ストリーミングでの応答をサポートします。
- 直接的な文字列の戻り値はサポートしません。
コード例: