Skip to main content
本文档由 AI 自动翻译。如有任何不准确之处,请参考 英文原版
插件可反向调用 Dify 内的应用以访问其数据,支持流式和非流式调用。如果你不熟悉反向调用的基本概念,先阅读反向调用 Dify 服务 接口类型
  • Chat 接口ChatbotAgentChatflow 应用都是基于对话的应用,输入和输出参数类型相同,因此共用此接口。
  • Workflow 接口:供 Workflow 应用使用。
  • Completion 接口:供 Completion(文本生成)应用使用。
插件只能访问其所在工作空间内的应用。

调用 Chat 接口

入口点

    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 内调用 Chat 类型的应用并直接返回结果:
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.chat.invoke(
                app_id=app_id,
                inputs={},
                response_mode="streaming",
                conversation_id="some-conversation-id",
                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

相关资源

Last modified on June 25, 2026