アプリ

リバース呼び出しとは、プラグインがDify内のAppデータにアクセスできることを意味します。このモジュールは、ストリーミングと非ストリーミングの両方のAppコールをサポートしています。

エンドポイントタイプ:

  • Chatbot/Agent/Chatflowタイプのアプリケーションは、すべてチャットタイプのアプリケーションであり、同じ入力パラメータと出力パラメータを持つため、統一的にチャットインターフェースとして扱うことができます。

  • Workflowアプリケーションは、独立したワークフローインターフェースを占有します。

  • Completion(テキスト生成)アプリケーションは、独立したCompletionエンドポイントを占有します。

注意:プラグインは、プラグインと同じWorkspace内のAppにのみアクセスできます。

チャットインターフェースのリクエスト エントリーポイント

エントリーポイント

self.session.app.chat

エンドポイント仕様

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_modestreamingの場合、インターフェースはGenerator[dict]を返し、それ以外の場合はdictを返します。具体的なインターフェースフィールドについては、ServiceApiの戻り値を参照してください。

Endpoint内でチャットタイプのAppをリクエストし、結果を直接返すことができます:

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:
        """
        与えられたリクエストでエンドポイントを呼び出します。
        """
        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")

ワークフローエンドポイント エントリーポイント

エントリー

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

Last updated