Files
dify-plugin-sdks/python/dify_plugin/invocations/app/workflow.py
2024-12-03 15:19:19 +08:00

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")