アプリのリバース呼び出しとは、プラグインがDify内のアプリデータにアクセスできることを指します。このモジュールは、ストリーミングと非ストリーミングの両方のアプリ呼び出しをサポートしています。リバース呼び出しの基本的な概念にまだ慣れていない場合は、まずDifyサービスのリバース呼び出しをお読みください。
インターフェースタイプ:
Chatbot/Agent/Chatflow
タイプのアプリケーションはすべてチャットタイプのアプリケーションであり、同じタイプの入力パラメータと出力パラメータを持つため、統一してチャットインターフェースと見なすことができます。
- Workflowアプリケーションの場合、単独でWorkflowインターフェースを占有します。
- Completion(テキスト生成アプリケーション)アプリケーションの場合、単独でCompletionインターフェースを占有します。
注意:プラグインは、プラグインが存在するワークスペース内のアプリにのみアクセスできます。
チャットインターフェースの呼び出し
エントリーポイント
インターフェース規約
def invoke(
self,
app_id: str,
inputs: dict,
response_mode: Literal["streaming", "blocking"],
conversation_id: str,
files: list,
) -> Generator[dict, None, None] | dict:
pass
response_mode
が streaming
の場合、このインターフェースは直接 Generator[dict]
を返します。そうでない場合は直接 dict
を返します。具体的なインターフェースフィールドについては、ServiceApi
の戻り結果を参照してください。
使用例
Endpoint
内でチャットタイプのアプリを呼び出し、結果を直接返すことができます。
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():
response = self.session.app.workflow.invoke(
app_id=app_id, inputs={}, response_mode="streaming", files=[]
)
for data in response:
yield f"{json.dumps(data)} <br>"
return Response(generator(), status=200, content_type="text/html")
Workflowインターフェースの呼び出し
エントリーポイント
self.session.app.workflow
インターフェース規約
def invoke(
self,
app_id: str,
inputs: dict,
response_mode: Literal["streaming", "blocking"],
files: list,
) -> Generator[dict, None, None] | dict:
pass
Completionインターフェースの呼び出し
エントリーポイント
self.session.app.completion
インターフェース規約
def invoke(
self,
app_id: str,
inputs: dict,
response_mode: Literal["streaming", "blocking"],
files: list,
) -> Generator[dict, None, None] | dict:
pass
関連リソース
このページを編集する | 問題を報告する
Responses are generated using AI and may contain mistakes.