mirror of
https://github.com/langgenius/dify-plugin-sdks.git
synced 2026-07-22 10:25:23 -04:00
51 lines
1.2 KiB
Python
51 lines
1.2 KiB
Python
from collections.abc import Generator
|
|
from typing import Literal, overload
|
|
|
|
from dify_plugin.core.entities.invocation import InvokeType
|
|
from dify_plugin.core.runtime import BackwardsInvocation
|
|
|
|
|
|
class WorkflowAppInvocation(BackwardsInvocation[dict]):
|
|
@overload
|
|
def invoke(
|
|
self,
|
|
app_id: str,
|
|
inputs: dict,
|
|
response_mode: Literal["streaming"],
|
|
) -> Generator[dict, None, None]: ...
|
|
|
|
@overload
|
|
def invoke(
|
|
self,
|
|
app_id: str,
|
|
inputs: dict,
|
|
response_mode: Literal["blocking"],
|
|
) -> dict: ...
|
|
|
|
def invoke(
|
|
self,
|
|
app_id: str,
|
|
inputs: dict,
|
|
response_mode: Literal["streaming", "blocking"] = "blocking",
|
|
) -> Generator[dict, None, None] | dict:
|
|
"""
|
|
Invoke workflow app
|
|
"""
|
|
response = self._backwards_invoke(
|
|
InvokeType.App,
|
|
dict,
|
|
{
|
|
"app_id": app_id,
|
|
"inputs": inputs,
|
|
"response_mode": response_mode,
|
|
},
|
|
)
|
|
|
|
if response_mode == "streaming":
|
|
return response
|
|
|
|
for data in response:
|
|
return data
|
|
|
|
raise Exception("No response from workflow")
|