dify-oapi2 0.1.1__py3-none-any.whl → 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dify_oapi/api/completion/v1/model/annotation/annotation_info.py +43 -0
- dify_oapi/api/completion/v1/model/annotation/annotation_reply_settings_request.py +39 -0
- dify_oapi/api/completion/v1/model/annotation/annotation_reply_settings_request_body.py +33 -0
- dify_oapi/api/completion/v1/model/annotation/annotation_reply_settings_response.py +9 -0
- dify_oapi/api/completion/v1/model/annotation/create_annotation_request.py +32 -0
- dify_oapi/api/completion/v1/model/annotation/create_annotation_request_body.py +28 -0
- dify_oapi/api/completion/v1/model/annotation/create_annotation_response.py +9 -0
- dify_oapi/api/completion/v1/model/annotation/delete_annotation_request.py +30 -0
- dify_oapi/api/completion/v1/model/annotation/delete_annotation_response.py +7 -0
- dify_oapi/api/completion/v1/model/annotation/job_status_info.py +35 -0
- dify_oapi/api/completion/v1/model/annotation/list_annotations_request.py +32 -0
- dify_oapi/api/completion/v1/model/annotation/list_annotations_response.py +13 -0
- dify_oapi/api/completion/v1/model/annotation/query_annotation_reply_status_request.py +38 -0
- dify_oapi/api/completion/v1/model/annotation/query_annotation_reply_status_response.py +9 -0
- dify_oapi/api/completion/v1/model/annotation/update_annotation_request.py +38 -0
- dify_oapi/api/completion/v1/model/annotation/update_annotation_request_body.py +28 -0
- dify_oapi/api/completion/v1/model/annotation/update_annotation_response.py +9 -0
- dify_oapi/api/completion/v1/model/audio/audio_info.py +28 -0
- dify_oapi/api/completion/v1/model/audio/text_to_audio_request.py +32 -0
- dify_oapi/api/completion/v1/model/audio/text_to_audio_request_body.py +33 -0
- dify_oapi/api/completion/v1/model/audio/text_to_audio_response.py +9 -0
- dify_oapi/api/completion/v1/model/completion/completion_inputs.py +28 -0
- dify_oapi/api/completion/v1/model/completion/completion_message_info.py +46 -0
- dify_oapi/api/completion/v1/model/completion/completion_types.py +27 -0
- dify_oapi/api/completion/v1/model/completion/metadata.py +31 -0
- dify_oapi/api/completion/v1/model/completion/retriever_resource.py +58 -0
- dify_oapi/api/completion/v1/model/completion/send_message_request.py +32 -0
- dify_oapi/api/completion/v1/model/completion/send_message_request_body.py +76 -0
- dify_oapi/api/completion/v1/model/completion/send_message_response.py +9 -0
- dify_oapi/api/completion/v1/model/completion/stop_response_request.py +38 -0
- dify_oapi/api/completion/v1/model/completion/stop_response_request_body.py +23 -0
- dify_oapi/api/completion/v1/model/{stop_completion_response.py → completion/stop_response_response.py} +3 -1
- dify_oapi/api/completion/v1/model/completion/usage.py +78 -0
- dify_oapi/api/completion/v1/model/feedback/feedback_info.py +53 -0
- dify_oapi/api/completion/v1/model/feedback/get_feedbacks_request.py +32 -0
- dify_oapi/api/completion/v1/model/feedback/get_feedbacks_response.py +9 -0
- dify_oapi/api/completion/v1/model/feedback/message_feedback_request.py +38 -0
- dify_oapi/api/completion/v1/model/feedback/message_feedback_request_body.py +35 -0
- dify_oapi/api/completion/v1/model/feedback/message_feedback_response.py +7 -0
- dify_oapi/api/completion/v1/model/file/file_info.py +53 -0
- dify_oapi/api/completion/v1/model/file/upload_file_request.py +42 -0
- dify_oapi/api/completion/v1/model/file/upload_file_request_body.py +23 -0
- dify_oapi/api/completion/v1/model/file/upload_file_response.py +9 -0
- dify_oapi/api/completion/v1/model/info/app_info.py +43 -0
- dify_oapi/api/completion/v1/model/info/file_upload_config.py +23 -0
- dify_oapi/api/completion/v1/model/info/get_info_request.py +24 -0
- dify_oapi/api/completion/v1/model/info/get_info_response.py +9 -0
- dify_oapi/api/completion/v1/model/info/get_parameters_request.py +24 -0
- dify_oapi/api/completion/v1/model/info/get_parameters_response.py +9 -0
- dify_oapi/api/completion/v1/model/info/get_site_request.py +24 -0
- dify_oapi/api/completion/v1/model/info/get_site_response.py +9 -0
- dify_oapi/api/completion/v1/model/info/parameters_info.py +67 -0
- dify_oapi/api/completion/v1/model/info/site_info.py +90 -0
- dify_oapi/api/completion/v1/model/info/system_parameters.py +38 -0
- dify_oapi/api/completion/v1/model/info/user_input_form.py +43 -0
- dify_oapi/api/completion/v1/resource/__init__.py +5 -0
- dify_oapi/api/completion/v1/resource/annotation.py +99 -0
- dify_oapi/api/completion/v1/resource/audio.py +19 -0
- dify_oapi/api/completion/v1/resource/completion.py +36 -46
- dify_oapi/api/completion/v1/resource/feedback.py +33 -0
- dify_oapi/api/completion/v1/resource/file.py +19 -0
- dify_oapi/api/completion/v1/resource/info.py +39 -0
- dify_oapi/api/completion/v1/version.py +11 -1
- dify_oapi/api/knowledge_base/v1/model/dataset/create_request_body.py +3 -4
- dify_oapi/api/knowledge_base/v1/model/dataset/dataset_types.py +36 -0
- dify_oapi/api/knowledge_base/v1/model/dataset/retrieval_model.py +3 -6
- dify_oapi/api/knowledge_base/v1/model/document/create_by_text_request_body.py +7 -12
- dify_oapi/api/knowledge_base/v1/model/document/document_types.py +36 -0
- dify_oapi/api/knowledge_base/v1/model/metadata/metadata_types.py +15 -0
- dify_oapi/api/knowledge_base/v1/model/segment/segment_types.py +24 -0
- dify_oapi/api/knowledge_base/v1/model/tag/tag_types.py +12 -0
- dify_oapi/api/knowledge_base/v1/model/tag/update_response.py +5 -1
- dify_oapi/api/workflow/v1/model/file/__init__.py +1 -0
- dify_oapi/api/workflow/v1/model/file/file_info.py +53 -0
- dify_oapi/api/workflow/v1/model/file/preview_file_request.py +34 -0
- dify_oapi/api/workflow/v1/model/file/preview_file_response.py +9 -0
- dify_oapi/api/workflow/v1/model/file/upload_file_request.py +42 -0
- dify_oapi/api/workflow/v1/model/file/upload_file_request_body.py +23 -0
- dify_oapi/api/workflow/v1/model/file/upload_file_response.py +9 -0
- dify_oapi/api/workflow/v1/model/info/app_info.py +45 -0
- dify_oapi/api/workflow/v1/model/info/file_upload_config.py +45 -0
- dify_oapi/api/workflow/v1/model/info/get_info_request.py +24 -0
- dify_oapi/api/workflow/v1/model/info/get_info_response.py +9 -0
- dify_oapi/api/workflow/v1/model/info/get_parameters_request.py +24 -0
- dify_oapi/api/workflow/v1/model/info/get_parameters_response.py +9 -0
- dify_oapi/api/workflow/v1/model/info/get_site_request.py +24 -0
- dify_oapi/api/workflow/v1/model/info/get_site_response.py +9 -0
- dify_oapi/api/workflow/v1/model/info/parameters_info.py +37 -0
- dify_oapi/api/workflow/v1/model/info/site_info.py +75 -0
- dify_oapi/api/workflow/v1/model/info/system_parameters.py +38 -0
- dify_oapi/api/workflow/v1/model/info/user_input_form.py +43 -0
- dify_oapi/api/workflow/v1/model/log/__init__.py +0 -0
- dify_oapi/api/workflow/v1/model/log/end_user_info.py +38 -0
- dify_oapi/api/workflow/v1/model/log/get_workflow_logs_request.py +48 -0
- dify_oapi/api/workflow/v1/model/log/get_workflow_logs_response.py +13 -0
- dify_oapi/api/workflow/v1/model/log/log_info.py +57 -0
- dify_oapi/api/workflow/v1/model/log/workflow_run_log_info.py +65 -0
- dify_oapi/api/workflow/v1/model/workflow/execution_metadata.py +33 -0
- dify_oapi/api/workflow/v1/model/workflow/get_workflow_run_detail_request.py +30 -0
- dify_oapi/api/workflow/v1/model/{run_workflow_response.py → workflow/get_workflow_run_detail_response.py} +8 -11
- dify_oapi/api/workflow/v1/model/workflow/node_info.py +88 -0
- dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request.py +38 -0
- dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request_body.py +47 -0
- dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_response.py +9 -0
- dify_oapi/api/workflow/v1/model/{run_workflow_request.py → workflow/run_workflow_request.py} +4 -4
- dify_oapi/api/workflow/v1/model/workflow/run_workflow_request_body.py +47 -0
- dify_oapi/api/workflow/v1/model/workflow/run_workflow_response.py +9 -0
- dify_oapi/api/workflow/v1/model/{stop_workflow_request.py → workflow/stop_workflow_request.py} +9 -9
- dify_oapi/api/workflow/v1/model/{stop_workflow_request_body.py → workflow/stop_workflow_request_body.py} +3 -3
- dify_oapi/api/workflow/v1/model/{stop_workflow_response.py → workflow/stop_workflow_response.py} +2 -0
- dify_oapi/api/workflow/v1/model/workflow/streaming_event.py +42 -0
- dify_oapi/api/workflow/v1/model/workflow/workflow_file_info.py +40 -0
- dify_oapi/api/workflow/v1/model/workflow/workflow_inputs.py +56 -0
- dify_oapi/api/workflow/v1/model/workflow/workflow_run_data.py +72 -0
- dify_oapi/api/workflow/v1/model/workflow/workflow_run_info.py +35 -0
- dify_oapi/api/workflow/v1/model/workflow/workflow_types.py +54 -0
- dify_oapi/api/workflow/v1/resource/__init__.py +0 -1
- dify_oapi/api/workflow/v1/resource/file.py +63 -0
- dify_oapi/api/workflow/v1/resource/info.py +93 -0
- dify_oapi/api/workflow/v1/resource/log.py +43 -0
- dify_oapi/api/workflow/v1/resource/workflow.py +171 -53
- dify_oapi/api/workflow/v1/version.py +7 -1
- dify_oapi/core/http/transport/_misc.py +54 -14
- {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/METADATA +10 -6
- {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/RECORD +127 -34
- dify_oapi/api/completion/v1/model/completion_request.py +0 -34
- dify_oapi/api/completion/v1/model/completion_request_body.py +0 -43
- dify_oapi/api/completion/v1/model/completion_request_body_input.py +0 -38
- dify_oapi/api/completion/v1/model/completion_request_file.py +0 -49
- dify_oapi/api/completion/v1/model/completion_response.py +0 -18
- dify_oapi/api/completion/v1/model/stop_completion_request.py +0 -38
- dify_oapi/api/completion/v1/model/stop_completion_request_body.py +0 -23
- dify_oapi/api/workflow/v1/model/get_workflow_log_request.py +0 -50
- dify_oapi/api/workflow/v1/model/get_workflow_log_response.py +0 -42
- dify_oapi/api/workflow/v1/model/get_workflow_result_request.py +0 -30
- dify_oapi/api/workflow/v1/model/get_workflow_result_response.py +0 -17
- dify_oapi/api/workflow/v1/model/run_workflow_request_body.py +0 -42
- dify_oapi/api/workflow/v1/model/run_workflow_request_file.py +0 -50
- {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/LICENSE +0 -0
- {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,38 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from dify_oapi.core.enum import HttpMethod
|
4
|
+
from dify_oapi.core.model.base_request import BaseRequest
|
5
|
+
|
6
|
+
from .run_specific_workflow_request_body import RunSpecificWorkflowRequestBody
|
7
|
+
|
8
|
+
|
9
|
+
class RunSpecificWorkflowRequest(BaseRequest):
|
10
|
+
def __init__(self) -> None:
|
11
|
+
super().__init__()
|
12
|
+
self.workflow_id: str | None = None
|
13
|
+
self.request_body: RunSpecificWorkflowRequestBody | None = None
|
14
|
+
|
15
|
+
@staticmethod
|
16
|
+
def builder() -> RunSpecificWorkflowRequestBuilder:
|
17
|
+
return RunSpecificWorkflowRequestBuilder()
|
18
|
+
|
19
|
+
|
20
|
+
class RunSpecificWorkflowRequestBuilder:
|
21
|
+
def __init__(self):
|
22
|
+
run_specific_workflow_request = RunSpecificWorkflowRequest()
|
23
|
+
run_specific_workflow_request.http_method = HttpMethod.POST
|
24
|
+
run_specific_workflow_request.uri = "/v1/workflows/:workflow_id/run"
|
25
|
+
self._run_specific_workflow_request = run_specific_workflow_request
|
26
|
+
|
27
|
+
def build(self) -> RunSpecificWorkflowRequest:
|
28
|
+
return self._run_specific_workflow_request
|
29
|
+
|
30
|
+
def workflow_id(self, workflow_id: str) -> RunSpecificWorkflowRequestBuilder:
|
31
|
+
self._run_specific_workflow_request.workflow_id = workflow_id
|
32
|
+
self._run_specific_workflow_request.paths["workflow_id"] = workflow_id
|
33
|
+
return self
|
34
|
+
|
35
|
+
def request_body(self, request_body: RunSpecificWorkflowRequestBody) -> RunSpecificWorkflowRequestBuilder:
|
36
|
+
self._run_specific_workflow_request.request_body = request_body
|
37
|
+
self._run_specific_workflow_request.body = request_body.model_dump(exclude_none=True, mode="json")
|
38
|
+
return self
|
@@ -0,0 +1,47 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from pydantic import BaseModel
|
4
|
+
|
5
|
+
from .workflow_file_info import WorkflowFileInfo
|
6
|
+
from .workflow_inputs import WorkflowInputs
|
7
|
+
from .workflow_types import ResponseMode
|
8
|
+
|
9
|
+
|
10
|
+
class RunSpecificWorkflowRequestBody(BaseModel):
|
11
|
+
inputs: WorkflowInputs | None = None
|
12
|
+
response_mode: ResponseMode | None = None
|
13
|
+
user: str | None = None
|
14
|
+
files: list[WorkflowFileInfo] | None = None
|
15
|
+
trace_id: str | None = None
|
16
|
+
|
17
|
+
@staticmethod
|
18
|
+
def builder() -> RunSpecificWorkflowRequestBodyBuilder:
|
19
|
+
return RunSpecificWorkflowRequestBodyBuilder()
|
20
|
+
|
21
|
+
|
22
|
+
class RunSpecificWorkflowRequestBodyBuilder:
|
23
|
+
def __init__(self):
|
24
|
+
self._run_specific_workflow_request_body = RunSpecificWorkflowRequestBody()
|
25
|
+
|
26
|
+
def build(self) -> RunSpecificWorkflowRequestBody:
|
27
|
+
return self._run_specific_workflow_request_body
|
28
|
+
|
29
|
+
def inputs(self, inputs: WorkflowInputs) -> RunSpecificWorkflowRequestBodyBuilder:
|
30
|
+
self._run_specific_workflow_request_body.inputs = inputs
|
31
|
+
return self
|
32
|
+
|
33
|
+
def response_mode(self, response_mode: ResponseMode) -> RunSpecificWorkflowRequestBodyBuilder:
|
34
|
+
self._run_specific_workflow_request_body.response_mode = response_mode
|
35
|
+
return self
|
36
|
+
|
37
|
+
def user(self, user: str) -> RunSpecificWorkflowRequestBodyBuilder:
|
38
|
+
self._run_specific_workflow_request_body.user = user
|
39
|
+
return self
|
40
|
+
|
41
|
+
def files(self, files: list[WorkflowFileInfo]) -> RunSpecificWorkflowRequestBodyBuilder:
|
42
|
+
self._run_specific_workflow_request_body.files = files
|
43
|
+
return self
|
44
|
+
|
45
|
+
def trace_id(self, trace_id: str) -> RunSpecificWorkflowRequestBodyBuilder:
|
46
|
+
self._run_specific_workflow_request_body.trace_id = trace_id
|
47
|
+
return self
|
dify_oapi/api/workflow/v1/model/{run_workflow_request.py → workflow/run_workflow_request.py}
RENAMED
@@ -21,12 +21,12 @@ class RunWorkflowRequestBuilder:
|
|
21
21
|
run_workflow_request = RunWorkflowRequest()
|
22
22
|
run_workflow_request.http_method = HttpMethod.POST
|
23
23
|
run_workflow_request.uri = "/v1/workflows/run"
|
24
|
-
self._run_workflow_request
|
24
|
+
self._run_workflow_request = run_workflow_request
|
25
|
+
|
26
|
+
def build(self) -> RunWorkflowRequest:
|
27
|
+
return self._run_workflow_request
|
25
28
|
|
26
29
|
def request_body(self, request_body: RunWorkflowRequestBody) -> RunWorkflowRequestBuilder:
|
27
30
|
self._run_workflow_request.request_body = request_body
|
28
31
|
self._run_workflow_request.body = request_body.model_dump(exclude_none=True, mode="json")
|
29
32
|
return self
|
30
|
-
|
31
|
-
def build(self) -> RunWorkflowRequest:
|
32
|
-
return self._run_workflow_request
|
@@ -0,0 +1,47 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from pydantic import BaseModel
|
4
|
+
|
5
|
+
from .workflow_file_info import WorkflowFileInfo
|
6
|
+
from .workflow_inputs import WorkflowInputs
|
7
|
+
from .workflow_types import ResponseMode
|
8
|
+
|
9
|
+
|
10
|
+
class RunWorkflowRequestBody(BaseModel):
|
11
|
+
inputs: WorkflowInputs | None = None
|
12
|
+
response_mode: ResponseMode | None = None
|
13
|
+
user: str | None = None
|
14
|
+
files: list[WorkflowFileInfo] | None = None
|
15
|
+
trace_id: str | None = None
|
16
|
+
|
17
|
+
@staticmethod
|
18
|
+
def builder() -> RunWorkflowRequestBodyBuilder:
|
19
|
+
return RunWorkflowRequestBodyBuilder()
|
20
|
+
|
21
|
+
|
22
|
+
class RunWorkflowRequestBodyBuilder:
|
23
|
+
def __init__(self) -> None:
|
24
|
+
self._run_workflow_request_body = RunWorkflowRequestBody()
|
25
|
+
|
26
|
+
def build(self) -> RunWorkflowRequestBody:
|
27
|
+
return self._run_workflow_request_body
|
28
|
+
|
29
|
+
def inputs(self, inputs: WorkflowInputs) -> RunWorkflowRequestBodyBuilder:
|
30
|
+
self._run_workflow_request_body.inputs = inputs
|
31
|
+
return self
|
32
|
+
|
33
|
+
def response_mode(self, response_mode: ResponseMode) -> RunWorkflowRequestBodyBuilder:
|
34
|
+
self._run_workflow_request_body.response_mode = response_mode
|
35
|
+
return self
|
36
|
+
|
37
|
+
def user(self, user: str) -> RunWorkflowRequestBodyBuilder:
|
38
|
+
self._run_workflow_request_body.user = user
|
39
|
+
return self
|
40
|
+
|
41
|
+
def files(self, files: list[WorkflowFileInfo]) -> RunWorkflowRequestBodyBuilder:
|
42
|
+
self._run_workflow_request_body.files = files
|
43
|
+
return self
|
44
|
+
|
45
|
+
def trace_id(self, trace_id: str) -> RunWorkflowRequestBodyBuilder:
|
46
|
+
self._run_workflow_request_body.trace_id = trace_id
|
47
|
+
return self
|
dify_oapi/api/workflow/v1/model/{stop_workflow_request.py → workflow/stop_workflow_request.py}
RENAMED
@@ -18,21 +18,21 @@ class StopWorkflowRequest(BaseRequest):
|
|
18
18
|
|
19
19
|
|
20
20
|
class StopWorkflowRequestBuilder:
|
21
|
-
def __init__(self)
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
self._stop_workflow_request
|
21
|
+
def __init__(self):
|
22
|
+
stop_workflow_request = StopWorkflowRequest()
|
23
|
+
stop_workflow_request.http_method = HttpMethod.POST
|
24
|
+
stop_workflow_request.uri = "/v1/workflows/tasks/:task_id/stop"
|
25
|
+
self._stop_workflow_request = stop_workflow_request
|
26
|
+
|
27
|
+
def build(self) -> StopWorkflowRequest:
|
28
|
+
return self._stop_workflow_request
|
26
29
|
|
27
30
|
def task_id(self, task_id: str) -> StopWorkflowRequestBuilder:
|
28
31
|
self._stop_workflow_request.task_id = task_id
|
29
|
-
self._stop_workflow_request.paths["task_id"] =
|
32
|
+
self._stop_workflow_request.paths["task_id"] = task_id
|
30
33
|
return self
|
31
34
|
|
32
35
|
def request_body(self, request_body: StopWorkflowRequestBody) -> StopWorkflowRequestBuilder:
|
33
36
|
self._stop_workflow_request.request_body = request_body
|
34
37
|
self._stop_workflow_request.body = request_body.model_dump(exclude_none=True, mode="json")
|
35
38
|
return self
|
36
|
-
|
37
|
-
def build(self) -> StopWorkflowRequest:
|
38
|
-
return self._stop_workflow_request
|
@@ -15,9 +15,9 @@ class StopWorkflowRequestBodyBuilder:
|
|
15
15
|
def __init__(self):
|
16
16
|
self._stop_workflow_request_body = StopWorkflowRequestBody()
|
17
17
|
|
18
|
+
def build(self) -> StopWorkflowRequestBody:
|
19
|
+
return self._stop_workflow_request_body
|
20
|
+
|
18
21
|
def user(self, user: str) -> StopWorkflowRequestBodyBuilder:
|
19
22
|
self._stop_workflow_request_body.user = user
|
20
23
|
return self
|
21
|
-
|
22
|
-
def build(self) -> StopWorkflowRequestBody:
|
23
|
-
return self._stop_workflow_request_body
|
@@ -0,0 +1,42 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import Any
|
4
|
+
|
5
|
+
from pydantic import BaseModel
|
6
|
+
|
7
|
+
from .workflow_types import EventType
|
8
|
+
|
9
|
+
|
10
|
+
class StreamingEvent(BaseModel):
|
11
|
+
event: EventType | None = None
|
12
|
+
task_id: str | None = None
|
13
|
+
workflow_run_id: str | None = None
|
14
|
+
data: dict[str, Any] | None = None
|
15
|
+
|
16
|
+
@staticmethod
|
17
|
+
def builder() -> StreamingEventBuilder:
|
18
|
+
return StreamingEventBuilder()
|
19
|
+
|
20
|
+
|
21
|
+
class StreamingEventBuilder:
|
22
|
+
def __init__(self):
|
23
|
+
self._streaming_event = StreamingEvent()
|
24
|
+
|
25
|
+
def build(self) -> StreamingEvent:
|
26
|
+
return self._streaming_event
|
27
|
+
|
28
|
+
def event(self, event: EventType) -> StreamingEventBuilder:
|
29
|
+
self._streaming_event.event = event
|
30
|
+
return self
|
31
|
+
|
32
|
+
def task_id(self, task_id: str) -> StreamingEventBuilder:
|
33
|
+
self._streaming_event.task_id = task_id
|
34
|
+
return self
|
35
|
+
|
36
|
+
def workflow_run_id(self, workflow_run_id: str) -> StreamingEventBuilder:
|
37
|
+
self._streaming_event.workflow_run_id = workflow_run_id
|
38
|
+
return self
|
39
|
+
|
40
|
+
def data(self, data: dict[str, Any]) -> StreamingEventBuilder:
|
41
|
+
self._streaming_event.data = data
|
42
|
+
return self
|
@@ -0,0 +1,40 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from pydantic import BaseModel
|
4
|
+
|
5
|
+
from .workflow_types import FileType, TransferMethod
|
6
|
+
|
7
|
+
|
8
|
+
class WorkflowFileInfo(BaseModel):
|
9
|
+
type: FileType | None = None
|
10
|
+
transfer_method: TransferMethod | None = None
|
11
|
+
url: str | None = None
|
12
|
+
upload_file_id: str | None = None
|
13
|
+
|
14
|
+
@staticmethod
|
15
|
+
def builder() -> WorkflowFileInfoBuilder:
|
16
|
+
return WorkflowFileInfoBuilder()
|
17
|
+
|
18
|
+
|
19
|
+
class WorkflowFileInfoBuilder:
|
20
|
+
def __init__(self):
|
21
|
+
self._workflow_file_info = WorkflowFileInfo()
|
22
|
+
|
23
|
+
def build(self) -> WorkflowFileInfo:
|
24
|
+
return self._workflow_file_info
|
25
|
+
|
26
|
+
def type(self, type: FileType) -> WorkflowFileInfoBuilder:
|
27
|
+
self._workflow_file_info.type = type
|
28
|
+
return self
|
29
|
+
|
30
|
+
def transfer_method(self, transfer_method: TransferMethod) -> WorkflowFileInfoBuilder:
|
31
|
+
self._workflow_file_info.transfer_method = transfer_method
|
32
|
+
return self
|
33
|
+
|
34
|
+
def url(self, url: str) -> WorkflowFileInfoBuilder:
|
35
|
+
self._workflow_file_info.url = url
|
36
|
+
return self
|
37
|
+
|
38
|
+
def upload_file_id(self, upload_file_id: str) -> WorkflowFileInfoBuilder:
|
39
|
+
self._workflow_file_info.upload_file_id = upload_file_id
|
40
|
+
return self
|
@@ -0,0 +1,56 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import Union
|
4
|
+
|
5
|
+
from pydantic import BaseModel
|
6
|
+
|
7
|
+
from .workflow_file_info import WorkflowFileInfo
|
8
|
+
|
9
|
+
# Define specific types for workflow input values
|
10
|
+
WorkflowInputValue = Union[
|
11
|
+
str, # Text values
|
12
|
+
int, # Integer values
|
13
|
+
float, # Float values
|
14
|
+
bool, # Boolean values
|
15
|
+
list[WorkflowFileInfo], # File list type variables
|
16
|
+
list[str], # String arrays
|
17
|
+
dict[str, Union[str, int, float, bool]], # Object values
|
18
|
+
]
|
19
|
+
|
20
|
+
|
21
|
+
class WorkflowInputs(BaseModel):
|
22
|
+
# Dynamic inputs based on workflow configuration
|
23
|
+
# Can contain any key-value pairs defined by the workflow
|
24
|
+
inputs: dict[str, WorkflowInputValue] | None = None
|
25
|
+
|
26
|
+
@staticmethod
|
27
|
+
def builder() -> WorkflowInputsBuilder:
|
28
|
+
return WorkflowInputsBuilder()
|
29
|
+
|
30
|
+
def add_input(self, key: str, value: WorkflowInputValue) -> None:
|
31
|
+
if self.inputs is None:
|
32
|
+
self.inputs = {}
|
33
|
+
self.inputs[key] = value
|
34
|
+
|
35
|
+
def get_input(self, key: str) -> WorkflowInputValue | None:
|
36
|
+
if self.inputs is None:
|
37
|
+
return None
|
38
|
+
return self.inputs.get(key)
|
39
|
+
|
40
|
+
|
41
|
+
class WorkflowInputsBuilder:
|
42
|
+
def __init__(self):
|
43
|
+
self._workflow_inputs = WorkflowInputs()
|
44
|
+
|
45
|
+
def build(self) -> WorkflowInputs:
|
46
|
+
return self._workflow_inputs
|
47
|
+
|
48
|
+
def inputs(self, inputs: dict[str, WorkflowInputValue]) -> WorkflowInputsBuilder:
|
49
|
+
self._workflow_inputs.inputs = inputs
|
50
|
+
return self
|
51
|
+
|
52
|
+
def add_input(self, key: str, value: WorkflowInputValue) -> WorkflowInputsBuilder:
|
53
|
+
if self._workflow_inputs.inputs is None:
|
54
|
+
self._workflow_inputs.inputs = {}
|
55
|
+
self._workflow_inputs.inputs[key] = value
|
56
|
+
return self
|
@@ -0,0 +1,72 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import Any
|
4
|
+
|
5
|
+
from pydantic import BaseModel
|
6
|
+
|
7
|
+
from .workflow_types import WorkflowStatus
|
8
|
+
|
9
|
+
|
10
|
+
class WorkflowRunData(BaseModel):
|
11
|
+
id: str | None = None
|
12
|
+
workflow_id: str | None = None
|
13
|
+
status: WorkflowStatus | None = None
|
14
|
+
outputs: dict[str, Any] | None = None
|
15
|
+
error: str | None = None
|
16
|
+
elapsed_time: float | None = None
|
17
|
+
total_tokens: int | None = None
|
18
|
+
total_steps: int | None = None
|
19
|
+
created_at: int | None = None
|
20
|
+
finished_at: int | None = None
|
21
|
+
|
22
|
+
@staticmethod
|
23
|
+
def builder() -> WorkflowRunDataBuilder:
|
24
|
+
return WorkflowRunDataBuilder()
|
25
|
+
|
26
|
+
|
27
|
+
class WorkflowRunDataBuilder:
|
28
|
+
def __init__(self):
|
29
|
+
self._workflow_run_data = WorkflowRunData()
|
30
|
+
|
31
|
+
def build(self) -> WorkflowRunData:
|
32
|
+
return self._workflow_run_data
|
33
|
+
|
34
|
+
def id(self, id: str) -> WorkflowRunDataBuilder:
|
35
|
+
self._workflow_run_data.id = id
|
36
|
+
return self
|
37
|
+
|
38
|
+
def workflow_id(self, workflow_id: str) -> WorkflowRunDataBuilder:
|
39
|
+
self._workflow_run_data.workflow_id = workflow_id
|
40
|
+
return self
|
41
|
+
|
42
|
+
def status(self, status: WorkflowStatus) -> WorkflowRunDataBuilder:
|
43
|
+
self._workflow_run_data.status = status
|
44
|
+
return self
|
45
|
+
|
46
|
+
def outputs(self, outputs: dict[str, Any]) -> WorkflowRunDataBuilder:
|
47
|
+
self._workflow_run_data.outputs = outputs
|
48
|
+
return self
|
49
|
+
|
50
|
+
def error(self, error: str) -> WorkflowRunDataBuilder:
|
51
|
+
self._workflow_run_data.error = error
|
52
|
+
return self
|
53
|
+
|
54
|
+
def elapsed_time(self, elapsed_time: float) -> WorkflowRunDataBuilder:
|
55
|
+
self._workflow_run_data.elapsed_time = elapsed_time
|
56
|
+
return self
|
57
|
+
|
58
|
+
def total_tokens(self, total_tokens: int) -> WorkflowRunDataBuilder:
|
59
|
+
self._workflow_run_data.total_tokens = total_tokens
|
60
|
+
return self
|
61
|
+
|
62
|
+
def total_steps(self, total_steps: int) -> WorkflowRunDataBuilder:
|
63
|
+
self._workflow_run_data.total_steps = total_steps
|
64
|
+
return self
|
65
|
+
|
66
|
+
def created_at(self, created_at: int) -> WorkflowRunDataBuilder:
|
67
|
+
self._workflow_run_data.created_at = created_at
|
68
|
+
return self
|
69
|
+
|
70
|
+
def finished_at(self, finished_at: int) -> WorkflowRunDataBuilder:
|
71
|
+
self._workflow_run_data.finished_at = finished_at
|
72
|
+
return self
|
@@ -0,0 +1,35 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from pydantic import BaseModel
|
4
|
+
|
5
|
+
from .workflow_run_data import WorkflowRunData
|
6
|
+
|
7
|
+
|
8
|
+
class WorkflowRunInfo(BaseModel):
|
9
|
+
workflow_run_id: str | None = None
|
10
|
+
task_id: str | None = None
|
11
|
+
data: WorkflowRunData | None = None
|
12
|
+
|
13
|
+
@staticmethod
|
14
|
+
def builder() -> WorkflowRunInfoBuilder:
|
15
|
+
return WorkflowRunInfoBuilder()
|
16
|
+
|
17
|
+
|
18
|
+
class WorkflowRunInfoBuilder:
|
19
|
+
def __init__(self):
|
20
|
+
self._workflow_run_info = WorkflowRunInfo()
|
21
|
+
|
22
|
+
def build(self) -> WorkflowRunInfo:
|
23
|
+
return self._workflow_run_info
|
24
|
+
|
25
|
+
def workflow_run_id(self, workflow_run_id: str) -> WorkflowRunInfoBuilder:
|
26
|
+
self._workflow_run_info.workflow_run_id = workflow_run_id
|
27
|
+
return self
|
28
|
+
|
29
|
+
def task_id(self, task_id: str) -> WorkflowRunInfoBuilder:
|
30
|
+
self._workflow_run_info.task_id = task_id
|
31
|
+
return self
|
32
|
+
|
33
|
+
def data(self, data: WorkflowRunData) -> WorkflowRunInfoBuilder:
|
34
|
+
self._workflow_run_info.data = data
|
35
|
+
return self
|
@@ -0,0 +1,54 @@
|
|
1
|
+
from typing import Literal
|
2
|
+
|
3
|
+
# Response mode types
|
4
|
+
ResponseMode = Literal["streaming", "blocking"]
|
5
|
+
|
6
|
+
# File types
|
7
|
+
FileType = Literal["document", "image", "audio", "video", "custom"]
|
8
|
+
|
9
|
+
# Transfer method types
|
10
|
+
TransferMethod = Literal["remote_url", "local_file"]
|
11
|
+
|
12
|
+
# Workflow status types
|
13
|
+
WorkflowStatus = Literal["running", "succeeded", "failed", "stopped"]
|
14
|
+
|
15
|
+
# Event types
|
16
|
+
EventType = Literal[
|
17
|
+
"workflow_started",
|
18
|
+
"node_started",
|
19
|
+
"text_chunk",
|
20
|
+
"node_finished",
|
21
|
+
"workflow_finished",
|
22
|
+
"tts_message",
|
23
|
+
"tts_message_end",
|
24
|
+
"ping",
|
25
|
+
]
|
26
|
+
|
27
|
+
# Node types
|
28
|
+
NodeType = Literal[
|
29
|
+
"start",
|
30
|
+
"end",
|
31
|
+
"llm",
|
32
|
+
"code",
|
33
|
+
"template",
|
34
|
+
"knowledge_retrieval",
|
35
|
+
"question_classifier",
|
36
|
+
"if_else",
|
37
|
+
"variable_assigner",
|
38
|
+
"parameter_extractor",
|
39
|
+
]
|
40
|
+
|
41
|
+
# Icon types
|
42
|
+
IconType = Literal["emoji", "image"]
|
43
|
+
|
44
|
+
# App mode types
|
45
|
+
AppMode = Literal["workflow"]
|
46
|
+
|
47
|
+
# Log status types
|
48
|
+
LogStatus = Literal["succeeded", "failed", "stopped"]
|
49
|
+
|
50
|
+
# Created by role types
|
51
|
+
CreatedByRole = Literal["end_user", "account"]
|
52
|
+
|
53
|
+
# Created from types
|
54
|
+
CreatedFrom = Literal["service-api", "web-app"]
|
@@ -1 +0,0 @@
|
|
1
|
-
from .workflow import * # noqa 403
|
@@ -0,0 +1,63 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from dify_oapi.core.http.transport import ATransport, Transport
|
4
|
+
from dify_oapi.core.model.config import Config
|
5
|
+
from dify_oapi.core.model.request_option import RequestOption
|
6
|
+
|
7
|
+
from ..model.file.preview_file_request import PreviewFileRequest
|
8
|
+
from ..model.file.preview_file_response import PreviewFileResponse
|
9
|
+
from ..model.file.upload_file_request import UploadFileRequest
|
10
|
+
from ..model.file.upload_file_response import UploadFileResponse
|
11
|
+
|
12
|
+
|
13
|
+
class File:
|
14
|
+
def __init__(self, config: Config) -> None:
|
15
|
+
self.config = config
|
16
|
+
|
17
|
+
def upload_file(self, request: UploadFileRequest, request_option: RequestOption) -> UploadFileResponse:
|
18
|
+
"""Upload file for multimodal support.
|
19
|
+
|
20
|
+
Args:
|
21
|
+
request: The upload file request
|
22
|
+
request_option: Request options including API key
|
23
|
+
|
24
|
+
Returns:
|
25
|
+
UploadFileResponse with file information
|
26
|
+
"""
|
27
|
+
return Transport.execute(self.config, request, unmarshal_as=UploadFileResponse, option=request_option)
|
28
|
+
|
29
|
+
async def aupload_file(self, request: UploadFileRequest, request_option: RequestOption) -> UploadFileResponse:
|
30
|
+
"""Upload file for multimodal support asynchronously.
|
31
|
+
|
32
|
+
Args:
|
33
|
+
request: The upload file request
|
34
|
+
request_option: Request options including API key
|
35
|
+
|
36
|
+
Returns:
|
37
|
+
UploadFileResponse with file information
|
38
|
+
"""
|
39
|
+
return await ATransport.aexecute(self.config, request, unmarshal_as=UploadFileResponse, option=request_option)
|
40
|
+
|
41
|
+
def preview_file(self, request: PreviewFileRequest, request_option: RequestOption) -> PreviewFileResponse:
|
42
|
+
"""Preview or download uploaded file.
|
43
|
+
|
44
|
+
Args:
|
45
|
+
request: The preview file request
|
46
|
+
request_option: Request options including API key
|
47
|
+
|
48
|
+
Returns:
|
49
|
+
PreviewFileResponse with file content
|
50
|
+
"""
|
51
|
+
return Transport.execute(self.config, request, unmarshal_as=PreviewFileResponse, option=request_option)
|
52
|
+
|
53
|
+
async def apreview_file(self, request: PreviewFileRequest, request_option: RequestOption) -> PreviewFileResponse:
|
54
|
+
"""Preview or download uploaded file asynchronously.
|
55
|
+
|
56
|
+
Args:
|
57
|
+
request: The preview file request
|
58
|
+
request_option: Request options including API key
|
59
|
+
|
60
|
+
Returns:
|
61
|
+
PreviewFileResponse with file content
|
62
|
+
"""
|
63
|
+
return await ATransport.aexecute(self.config, request, unmarshal_as=PreviewFileResponse, option=request_option)
|