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.
Files changed (140) hide show
  1. dify_oapi/api/completion/v1/model/annotation/annotation_info.py +43 -0
  2. dify_oapi/api/completion/v1/model/annotation/annotation_reply_settings_request.py +39 -0
  3. dify_oapi/api/completion/v1/model/annotation/annotation_reply_settings_request_body.py +33 -0
  4. dify_oapi/api/completion/v1/model/annotation/annotation_reply_settings_response.py +9 -0
  5. dify_oapi/api/completion/v1/model/annotation/create_annotation_request.py +32 -0
  6. dify_oapi/api/completion/v1/model/annotation/create_annotation_request_body.py +28 -0
  7. dify_oapi/api/completion/v1/model/annotation/create_annotation_response.py +9 -0
  8. dify_oapi/api/completion/v1/model/annotation/delete_annotation_request.py +30 -0
  9. dify_oapi/api/completion/v1/model/annotation/delete_annotation_response.py +7 -0
  10. dify_oapi/api/completion/v1/model/annotation/job_status_info.py +35 -0
  11. dify_oapi/api/completion/v1/model/annotation/list_annotations_request.py +32 -0
  12. dify_oapi/api/completion/v1/model/annotation/list_annotations_response.py +13 -0
  13. dify_oapi/api/completion/v1/model/annotation/query_annotation_reply_status_request.py +38 -0
  14. dify_oapi/api/completion/v1/model/annotation/query_annotation_reply_status_response.py +9 -0
  15. dify_oapi/api/completion/v1/model/annotation/update_annotation_request.py +38 -0
  16. dify_oapi/api/completion/v1/model/annotation/update_annotation_request_body.py +28 -0
  17. dify_oapi/api/completion/v1/model/annotation/update_annotation_response.py +9 -0
  18. dify_oapi/api/completion/v1/model/audio/audio_info.py +28 -0
  19. dify_oapi/api/completion/v1/model/audio/text_to_audio_request.py +32 -0
  20. dify_oapi/api/completion/v1/model/audio/text_to_audio_request_body.py +33 -0
  21. dify_oapi/api/completion/v1/model/audio/text_to_audio_response.py +9 -0
  22. dify_oapi/api/completion/v1/model/completion/completion_inputs.py +28 -0
  23. dify_oapi/api/completion/v1/model/completion/completion_message_info.py +46 -0
  24. dify_oapi/api/completion/v1/model/completion/completion_types.py +27 -0
  25. dify_oapi/api/completion/v1/model/completion/metadata.py +31 -0
  26. dify_oapi/api/completion/v1/model/completion/retriever_resource.py +58 -0
  27. dify_oapi/api/completion/v1/model/completion/send_message_request.py +32 -0
  28. dify_oapi/api/completion/v1/model/completion/send_message_request_body.py +76 -0
  29. dify_oapi/api/completion/v1/model/completion/send_message_response.py +9 -0
  30. dify_oapi/api/completion/v1/model/completion/stop_response_request.py +38 -0
  31. dify_oapi/api/completion/v1/model/completion/stop_response_request_body.py +23 -0
  32. dify_oapi/api/completion/v1/model/{stop_completion_response.py → completion/stop_response_response.py} +3 -1
  33. dify_oapi/api/completion/v1/model/completion/usage.py +78 -0
  34. dify_oapi/api/completion/v1/model/feedback/feedback_info.py +53 -0
  35. dify_oapi/api/completion/v1/model/feedback/get_feedbacks_request.py +32 -0
  36. dify_oapi/api/completion/v1/model/feedback/get_feedbacks_response.py +9 -0
  37. dify_oapi/api/completion/v1/model/feedback/message_feedback_request.py +38 -0
  38. dify_oapi/api/completion/v1/model/feedback/message_feedback_request_body.py +35 -0
  39. dify_oapi/api/completion/v1/model/feedback/message_feedback_response.py +7 -0
  40. dify_oapi/api/completion/v1/model/file/file_info.py +53 -0
  41. dify_oapi/api/completion/v1/model/file/upload_file_request.py +42 -0
  42. dify_oapi/api/completion/v1/model/file/upload_file_request_body.py +23 -0
  43. dify_oapi/api/completion/v1/model/file/upload_file_response.py +9 -0
  44. dify_oapi/api/completion/v1/model/info/app_info.py +43 -0
  45. dify_oapi/api/completion/v1/model/info/file_upload_config.py +23 -0
  46. dify_oapi/api/completion/v1/model/info/get_info_request.py +24 -0
  47. dify_oapi/api/completion/v1/model/info/get_info_response.py +9 -0
  48. dify_oapi/api/completion/v1/model/info/get_parameters_request.py +24 -0
  49. dify_oapi/api/completion/v1/model/info/get_parameters_response.py +9 -0
  50. dify_oapi/api/completion/v1/model/info/get_site_request.py +24 -0
  51. dify_oapi/api/completion/v1/model/info/get_site_response.py +9 -0
  52. dify_oapi/api/completion/v1/model/info/parameters_info.py +67 -0
  53. dify_oapi/api/completion/v1/model/info/site_info.py +90 -0
  54. dify_oapi/api/completion/v1/model/info/system_parameters.py +38 -0
  55. dify_oapi/api/completion/v1/model/info/user_input_form.py +43 -0
  56. dify_oapi/api/completion/v1/resource/__init__.py +5 -0
  57. dify_oapi/api/completion/v1/resource/annotation.py +99 -0
  58. dify_oapi/api/completion/v1/resource/audio.py +19 -0
  59. dify_oapi/api/completion/v1/resource/completion.py +36 -46
  60. dify_oapi/api/completion/v1/resource/feedback.py +33 -0
  61. dify_oapi/api/completion/v1/resource/file.py +19 -0
  62. dify_oapi/api/completion/v1/resource/info.py +39 -0
  63. dify_oapi/api/completion/v1/version.py +11 -1
  64. dify_oapi/api/knowledge_base/v1/model/dataset/create_request_body.py +3 -4
  65. dify_oapi/api/knowledge_base/v1/model/dataset/dataset_types.py +36 -0
  66. dify_oapi/api/knowledge_base/v1/model/dataset/retrieval_model.py +3 -6
  67. dify_oapi/api/knowledge_base/v1/model/document/create_by_text_request_body.py +7 -12
  68. dify_oapi/api/knowledge_base/v1/model/document/document_types.py +36 -0
  69. dify_oapi/api/knowledge_base/v1/model/metadata/metadata_types.py +15 -0
  70. dify_oapi/api/knowledge_base/v1/model/segment/segment_types.py +24 -0
  71. dify_oapi/api/knowledge_base/v1/model/tag/tag_types.py +12 -0
  72. dify_oapi/api/knowledge_base/v1/model/tag/update_response.py +5 -1
  73. dify_oapi/api/workflow/v1/model/file/__init__.py +1 -0
  74. dify_oapi/api/workflow/v1/model/file/file_info.py +53 -0
  75. dify_oapi/api/workflow/v1/model/file/preview_file_request.py +34 -0
  76. dify_oapi/api/workflow/v1/model/file/preview_file_response.py +9 -0
  77. dify_oapi/api/workflow/v1/model/file/upload_file_request.py +42 -0
  78. dify_oapi/api/workflow/v1/model/file/upload_file_request_body.py +23 -0
  79. dify_oapi/api/workflow/v1/model/file/upload_file_response.py +9 -0
  80. dify_oapi/api/workflow/v1/model/info/app_info.py +45 -0
  81. dify_oapi/api/workflow/v1/model/info/file_upload_config.py +45 -0
  82. dify_oapi/api/workflow/v1/model/info/get_info_request.py +24 -0
  83. dify_oapi/api/workflow/v1/model/info/get_info_response.py +9 -0
  84. dify_oapi/api/workflow/v1/model/info/get_parameters_request.py +24 -0
  85. dify_oapi/api/workflow/v1/model/info/get_parameters_response.py +9 -0
  86. dify_oapi/api/workflow/v1/model/info/get_site_request.py +24 -0
  87. dify_oapi/api/workflow/v1/model/info/get_site_response.py +9 -0
  88. dify_oapi/api/workflow/v1/model/info/parameters_info.py +37 -0
  89. dify_oapi/api/workflow/v1/model/info/site_info.py +75 -0
  90. dify_oapi/api/workflow/v1/model/info/system_parameters.py +38 -0
  91. dify_oapi/api/workflow/v1/model/info/user_input_form.py +43 -0
  92. dify_oapi/api/workflow/v1/model/log/__init__.py +0 -0
  93. dify_oapi/api/workflow/v1/model/log/end_user_info.py +38 -0
  94. dify_oapi/api/workflow/v1/model/log/get_workflow_logs_request.py +48 -0
  95. dify_oapi/api/workflow/v1/model/log/get_workflow_logs_response.py +13 -0
  96. dify_oapi/api/workflow/v1/model/log/log_info.py +57 -0
  97. dify_oapi/api/workflow/v1/model/log/workflow_run_log_info.py +65 -0
  98. dify_oapi/api/workflow/v1/model/workflow/execution_metadata.py +33 -0
  99. dify_oapi/api/workflow/v1/model/workflow/get_workflow_run_detail_request.py +30 -0
  100. dify_oapi/api/workflow/v1/model/{run_workflow_response.py → workflow/get_workflow_run_detail_response.py} +8 -11
  101. dify_oapi/api/workflow/v1/model/workflow/node_info.py +88 -0
  102. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request.py +38 -0
  103. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request_body.py +47 -0
  104. dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_response.py +9 -0
  105. dify_oapi/api/workflow/v1/model/{run_workflow_request.py → workflow/run_workflow_request.py} +4 -4
  106. dify_oapi/api/workflow/v1/model/workflow/run_workflow_request_body.py +47 -0
  107. dify_oapi/api/workflow/v1/model/workflow/run_workflow_response.py +9 -0
  108. dify_oapi/api/workflow/v1/model/{stop_workflow_request.py → workflow/stop_workflow_request.py} +9 -9
  109. dify_oapi/api/workflow/v1/model/{stop_workflow_request_body.py → workflow/stop_workflow_request_body.py} +3 -3
  110. dify_oapi/api/workflow/v1/model/{stop_workflow_response.py → workflow/stop_workflow_response.py} +2 -0
  111. dify_oapi/api/workflow/v1/model/workflow/streaming_event.py +42 -0
  112. dify_oapi/api/workflow/v1/model/workflow/workflow_file_info.py +40 -0
  113. dify_oapi/api/workflow/v1/model/workflow/workflow_inputs.py +56 -0
  114. dify_oapi/api/workflow/v1/model/workflow/workflow_run_data.py +72 -0
  115. dify_oapi/api/workflow/v1/model/workflow/workflow_run_info.py +35 -0
  116. dify_oapi/api/workflow/v1/model/workflow/workflow_types.py +54 -0
  117. dify_oapi/api/workflow/v1/resource/__init__.py +0 -1
  118. dify_oapi/api/workflow/v1/resource/file.py +63 -0
  119. dify_oapi/api/workflow/v1/resource/info.py +93 -0
  120. dify_oapi/api/workflow/v1/resource/log.py +43 -0
  121. dify_oapi/api/workflow/v1/resource/workflow.py +171 -53
  122. dify_oapi/api/workflow/v1/version.py +7 -1
  123. dify_oapi/core/http/transport/_misc.py +54 -14
  124. {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/METADATA +10 -6
  125. {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/RECORD +127 -34
  126. dify_oapi/api/completion/v1/model/completion_request.py +0 -34
  127. dify_oapi/api/completion/v1/model/completion_request_body.py +0 -43
  128. dify_oapi/api/completion/v1/model/completion_request_body_input.py +0 -38
  129. dify_oapi/api/completion/v1/model/completion_request_file.py +0 -49
  130. dify_oapi/api/completion/v1/model/completion_response.py +0 -18
  131. dify_oapi/api/completion/v1/model/stop_completion_request.py +0 -38
  132. dify_oapi/api/completion/v1/model/stop_completion_request_body.py +0 -23
  133. dify_oapi/api/workflow/v1/model/get_workflow_log_request.py +0 -50
  134. dify_oapi/api/workflow/v1/model/get_workflow_log_response.py +0 -42
  135. dify_oapi/api/workflow/v1/model/get_workflow_result_request.py +0 -30
  136. dify_oapi/api/workflow/v1/model/get_workflow_result_response.py +0 -17
  137. dify_oapi/api/workflow/v1/model/run_workflow_request_body.py +0 -42
  138. dify_oapi/api/workflow/v1/model/run_workflow_request_file.py +0 -50
  139. {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/LICENSE +0 -0
  140. {dify_oapi2-0.1.1.dist-info → dify_oapi2-0.3.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,31 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+ from .retriever_resource import RetrieverResource
6
+ from .usage import Usage
7
+
8
+
9
+ class Metadata(BaseModel):
10
+ usage: Usage | None = None
11
+ retriever_resources: list[RetrieverResource] | None = None
12
+
13
+ @staticmethod
14
+ def builder() -> MetadataBuilder:
15
+ return MetadataBuilder()
16
+
17
+
18
+ class MetadataBuilder:
19
+ def __init__(self):
20
+ self._metadata = Metadata()
21
+
22
+ def build(self) -> Metadata:
23
+ return self._metadata
24
+
25
+ def usage(self, usage: Usage) -> MetadataBuilder:
26
+ self._metadata.usage = usage
27
+ return self
28
+
29
+ def retriever_resources(self, retriever_resources: list[RetrieverResource]) -> MetadataBuilder:
30
+ self._metadata.retriever_resources = retriever_resources
31
+ return self
@@ -0,0 +1,58 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+
6
+ class RetrieverResource(BaseModel):
7
+ position: int | None = None
8
+ dataset_id: str | None = None
9
+ dataset_name: str | None = None
10
+ document_id: str | None = None
11
+ document_name: str | None = None
12
+ segment_id: str | None = None
13
+ score: float | None = None
14
+ content: str | None = None
15
+
16
+ @staticmethod
17
+ def builder() -> RetrieverResourceBuilder:
18
+ return RetrieverResourceBuilder()
19
+
20
+
21
+ class RetrieverResourceBuilder:
22
+ def __init__(self):
23
+ self._retriever_resource = RetrieverResource()
24
+
25
+ def build(self) -> RetrieverResource:
26
+ return self._retriever_resource
27
+
28
+ def position(self, position: int) -> RetrieverResourceBuilder:
29
+ self._retriever_resource.position = position
30
+ return self
31
+
32
+ def dataset_id(self, dataset_id: str) -> RetrieverResourceBuilder:
33
+ self._retriever_resource.dataset_id = dataset_id
34
+ return self
35
+
36
+ def dataset_name(self, dataset_name: str) -> RetrieverResourceBuilder:
37
+ self._retriever_resource.dataset_name = dataset_name
38
+ return self
39
+
40
+ def document_id(self, document_id: str) -> RetrieverResourceBuilder:
41
+ self._retriever_resource.document_id = document_id
42
+ return self
43
+
44
+ def document_name(self, document_name: str) -> RetrieverResourceBuilder:
45
+ self._retriever_resource.document_name = document_name
46
+ return self
47
+
48
+ def segment_id(self, segment_id: str) -> RetrieverResourceBuilder:
49
+ self._retriever_resource.segment_id = segment_id
50
+ return self
51
+
52
+ def score(self, score: float) -> RetrieverResourceBuilder:
53
+ self._retriever_resource.score = score
54
+ return self
55
+
56
+ def content(self, content: str) -> RetrieverResourceBuilder:
57
+ self._retriever_resource.content = content
58
+ return self
@@ -0,0 +1,32 @@
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 .send_message_request_body import SendMessageRequestBody
7
+
8
+
9
+ class SendMessageRequest(BaseRequest):
10
+ def __init__(self) -> None:
11
+ super().__init__()
12
+ self.request_body: SendMessageRequestBody | None = None
13
+
14
+ @staticmethod
15
+ def builder() -> SendMessageRequestBuilder:
16
+ return SendMessageRequestBuilder()
17
+
18
+
19
+ class SendMessageRequestBuilder:
20
+ def __init__(self) -> None:
21
+ send_message_request = SendMessageRequest()
22
+ send_message_request.http_method = HttpMethod.POST
23
+ send_message_request.uri = "/v1/completion-messages"
24
+ self._send_message_request: SendMessageRequest = send_message_request
25
+
26
+ def request_body(self, request_body: SendMessageRequestBody) -> SendMessageRequestBuilder:
27
+ self._send_message_request.request_body = request_body
28
+ self._send_message_request.body = request_body.model_dump(exclude_none=True, mode="json")
29
+ return self
30
+
31
+ def build(self) -> SendMessageRequest:
32
+ return self._send_message_request
@@ -0,0 +1,76 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+ from .completion_inputs import CompletionInputs
6
+ from .completion_types import FileType, ResponseMode, TransferMethod
7
+
8
+
9
+ class FileInfo(BaseModel):
10
+ type: FileType | None = None
11
+ transfer_method: TransferMethod | None = None
12
+ url: str | None = None
13
+ upload_file_id: str | None = None
14
+
15
+ @staticmethod
16
+ def builder() -> FileInfoBuilder:
17
+ return FileInfoBuilder()
18
+
19
+
20
+ class FileInfoBuilder:
21
+ def __init__(self):
22
+ self._file_info = FileInfo()
23
+
24
+ def build(self) -> FileInfo:
25
+ return self._file_info
26
+
27
+ def type(self, type_: FileType) -> FileInfoBuilder:
28
+ self._file_info.type = type_
29
+ return self
30
+
31
+ def transfer_method(self, transfer_method: TransferMethod) -> FileInfoBuilder:
32
+ self._file_info.transfer_method = transfer_method
33
+ return self
34
+
35
+ def url(self, url: str) -> FileInfoBuilder:
36
+ self._file_info.url = url
37
+ return self
38
+
39
+ def upload_file_id(self, upload_file_id: str) -> FileInfoBuilder:
40
+ self._file_info.upload_file_id = upload_file_id
41
+ return self
42
+
43
+
44
+ class SendMessageRequestBody(BaseModel):
45
+ inputs: CompletionInputs | None = None
46
+ response_mode: ResponseMode | None = None
47
+ user: str | None = None
48
+ files: list[FileInfo] | None = None
49
+
50
+ @staticmethod
51
+ def builder() -> SendMessageRequestBodyBuilder:
52
+ return SendMessageRequestBodyBuilder()
53
+
54
+
55
+ class SendMessageRequestBodyBuilder:
56
+ def __init__(self):
57
+ self._send_message_request_body = SendMessageRequestBody()
58
+
59
+ def build(self) -> SendMessageRequestBody:
60
+ return self._send_message_request_body
61
+
62
+ def inputs(self, inputs: CompletionInputs) -> SendMessageRequestBodyBuilder:
63
+ self._send_message_request_body.inputs = inputs
64
+ return self
65
+
66
+ def response_mode(self, response_mode: ResponseMode) -> SendMessageRequestBodyBuilder:
67
+ self._send_message_request_body.response_mode = response_mode
68
+ return self
69
+
70
+ def user(self, user: str) -> SendMessageRequestBodyBuilder:
71
+ self._send_message_request_body.user = user
72
+ return self
73
+
74
+ def files(self, files: list[FileInfo]) -> SendMessageRequestBodyBuilder:
75
+ self._send_message_request_body.files = files
76
+ return self
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from dify_oapi.core.model.base_response import BaseResponse
4
+
5
+ from .completion_message_info import CompletionMessageInfo
6
+
7
+
8
+ class SendMessageResponse(CompletionMessageInfo, BaseResponse):
9
+ pass
@@ -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 .stop_response_request_body import StopResponseRequestBody
7
+
8
+
9
+ class StopResponseRequest(BaseRequest):
10
+ def __init__(self) -> None:
11
+ super().__init__()
12
+ self.request_body: StopResponseRequestBody | None = None
13
+ self.task_id: str | None = None
14
+
15
+ @staticmethod
16
+ def builder() -> StopResponseRequestBuilder:
17
+ return StopResponseRequestBuilder()
18
+
19
+
20
+ class StopResponseRequestBuilder:
21
+ def __init__(self):
22
+ stop_response_request = StopResponseRequest()
23
+ stop_response_request.http_method = HttpMethod.POST
24
+ stop_response_request.uri = "/v1/completion-messages/:task_id/stop"
25
+ self._stop_response_request = stop_response_request
26
+
27
+ def build(self) -> StopResponseRequest:
28
+ return self._stop_response_request
29
+
30
+ def request_body(self, request_body: StopResponseRequestBody) -> StopResponseRequestBuilder:
31
+ self._stop_response_request.request_body = request_body
32
+ self._stop_response_request.body = request_body.model_dump(exclude_none=True, mode="json")
33
+ return self
34
+
35
+ def task_id(self, task_id: str) -> StopResponseRequestBuilder:
36
+ self._stop_response_request.task_id = task_id
37
+ self._stop_response_request.paths["task_id"] = task_id
38
+ return self
@@ -0,0 +1,23 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+
6
+ class StopResponseRequestBody(BaseModel):
7
+ user: str | None = None
8
+
9
+ @staticmethod
10
+ def builder() -> StopResponseRequestBodyBuilder:
11
+ return StopResponseRequestBodyBuilder()
12
+
13
+
14
+ class StopResponseRequestBodyBuilder:
15
+ def __init__(self):
16
+ self._stop_response_request_body = StopResponseRequestBody()
17
+
18
+ def build(self) -> StopResponseRequestBody:
19
+ return self._stop_response_request_body
20
+
21
+ def user(self, user: str) -> StopResponseRequestBodyBuilder:
22
+ self._stop_response_request_body.user = user
23
+ return self
@@ -1,5 +1,7 @@
1
+ from __future__ import annotations
2
+
1
3
  from dify_oapi.core.model.base_response import BaseResponse
2
4
 
3
5
 
4
- class StopCompletionResponse(BaseResponse):
6
+ class StopResponseResponse(BaseResponse):
5
7
  result: str | None = None
@@ -0,0 +1,78 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+
6
+ class Usage(BaseModel):
7
+ prompt_tokens: int | None = None
8
+ prompt_unit_price: str | None = None
9
+ prompt_price_unit: str | None = None
10
+ prompt_price: str | None = None
11
+ completion_tokens: int | None = None
12
+ completion_unit_price: str | None = None
13
+ completion_price_unit: str | None = None
14
+ completion_price: str | None = None
15
+ total_tokens: int | None = None
16
+ total_price: str | None = None
17
+ currency: str | None = None
18
+ latency: float | None = None
19
+
20
+ @staticmethod
21
+ def builder() -> UsageBuilder:
22
+ return UsageBuilder()
23
+
24
+
25
+ class UsageBuilder:
26
+ def __init__(self):
27
+ self._usage = Usage()
28
+
29
+ def build(self) -> Usage:
30
+ return self._usage
31
+
32
+ def prompt_tokens(self, prompt_tokens: int) -> UsageBuilder:
33
+ self._usage.prompt_tokens = prompt_tokens
34
+ return self
35
+
36
+ def prompt_unit_price(self, prompt_unit_price: str) -> UsageBuilder:
37
+ self._usage.prompt_unit_price = prompt_unit_price
38
+ return self
39
+
40
+ def prompt_price_unit(self, prompt_price_unit: str) -> UsageBuilder:
41
+ self._usage.prompt_price_unit = prompt_price_unit
42
+ return self
43
+
44
+ def prompt_price(self, prompt_price: str) -> UsageBuilder:
45
+ self._usage.prompt_price = prompt_price
46
+ return self
47
+
48
+ def completion_tokens(self, completion_tokens: int) -> UsageBuilder:
49
+ self._usage.completion_tokens = completion_tokens
50
+ return self
51
+
52
+ def completion_unit_price(self, completion_unit_price: str) -> UsageBuilder:
53
+ self._usage.completion_unit_price = completion_unit_price
54
+ return self
55
+
56
+ def completion_price_unit(self, completion_price_unit: str) -> UsageBuilder:
57
+ self._usage.completion_price_unit = completion_price_unit
58
+ return self
59
+
60
+ def completion_price(self, completion_price: str) -> UsageBuilder:
61
+ self._usage.completion_price = completion_price
62
+ return self
63
+
64
+ def total_tokens(self, total_tokens: int) -> UsageBuilder:
65
+ self._usage.total_tokens = total_tokens
66
+ return self
67
+
68
+ def total_price(self, total_price: str) -> UsageBuilder:
69
+ self._usage.total_price = total_price
70
+ return self
71
+
72
+ def currency(self, currency: str) -> UsageBuilder:
73
+ self._usage.currency = currency
74
+ return self
75
+
76
+ def latency(self, latency: float) -> UsageBuilder:
77
+ self._usage.latency = latency
78
+ return self
@@ -0,0 +1,53 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+
6
+ class FeedbackInfo(BaseModel):
7
+ id: str | None = None
8
+ rating: str | None = None
9
+ content: str | None = None
10
+ from_source: str | None = None
11
+ from_end_user_id: str | None = None
12
+ from_account_id: str | None = None
13
+ created_at: int | None = None
14
+
15
+ @staticmethod
16
+ def builder() -> FeedbackInfoBuilder:
17
+ return FeedbackInfoBuilder()
18
+
19
+
20
+ class FeedbackInfoBuilder:
21
+ def __init__(self):
22
+ self._feedback_info = FeedbackInfo()
23
+
24
+ def build(self) -> FeedbackInfo:
25
+ return self._feedback_info
26
+
27
+ def id(self, id: str) -> FeedbackInfoBuilder:
28
+ self._feedback_info.id = id
29
+ return self
30
+
31
+ def rating(self, rating: str) -> FeedbackInfoBuilder:
32
+ self._feedback_info.rating = rating
33
+ return self
34
+
35
+ def content(self, content: str) -> FeedbackInfoBuilder:
36
+ self._feedback_info.content = content
37
+ return self
38
+
39
+ def from_source(self, from_source: str) -> FeedbackInfoBuilder:
40
+ self._feedback_info.from_source = from_source
41
+ return self
42
+
43
+ def from_end_user_id(self, from_end_user_id: str) -> FeedbackInfoBuilder:
44
+ self._feedback_info.from_end_user_id = from_end_user_id
45
+ return self
46
+
47
+ def from_account_id(self, from_account_id: str) -> FeedbackInfoBuilder:
48
+ self._feedback_info.from_account_id = from_account_id
49
+ return self
50
+
51
+ def created_at(self, created_at: int) -> FeedbackInfoBuilder:
52
+ self._feedback_info.created_at = created_at
53
+ return self
@@ -0,0 +1,32 @@
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
+
7
+ class GetFeedbacksRequest(BaseRequest):
8
+ def __init__(self):
9
+ super().__init__()
10
+
11
+ @staticmethod
12
+ def builder() -> GetFeedbacksRequestBuilder:
13
+ return GetFeedbacksRequestBuilder()
14
+
15
+
16
+ class GetFeedbacksRequestBuilder:
17
+ def __init__(self):
18
+ get_feedbacks_request = GetFeedbacksRequest()
19
+ get_feedbacks_request.http_method = HttpMethod.GET
20
+ get_feedbacks_request.uri = "/v1/app/feedbacks"
21
+ self._get_feedbacks_request = get_feedbacks_request
22
+
23
+ def build(self) -> GetFeedbacksRequest:
24
+ return self._get_feedbacks_request
25
+
26
+ def page(self, page: str) -> GetFeedbacksRequestBuilder:
27
+ self._get_feedbacks_request.add_query("page", page)
28
+ return self
29
+
30
+ def limit(self, limit: str) -> GetFeedbacksRequestBuilder:
31
+ self._get_feedbacks_request.add_query("limit", limit)
32
+ return self
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from dify_oapi.core.model.base_response import BaseResponse
4
+
5
+ from .feedback_info import FeedbackInfo
6
+
7
+
8
+ class GetFeedbacksResponse(BaseResponse):
9
+ data: list[FeedbackInfo] | None = None
@@ -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 .message_feedback_request_body import MessageFeedbackRequestBody
7
+
8
+
9
+ class MessageFeedbackRequest(BaseRequest):
10
+ def __init__(self):
11
+ super().__init__()
12
+ self.message_id: str | None = None
13
+ self.request_body: MessageFeedbackRequestBody | None = None
14
+
15
+ @staticmethod
16
+ def builder() -> MessageFeedbackRequestBuilder:
17
+ return MessageFeedbackRequestBuilder()
18
+
19
+
20
+ class MessageFeedbackRequestBuilder:
21
+ def __init__(self):
22
+ message_feedback_request = MessageFeedbackRequest()
23
+ message_feedback_request.http_method = HttpMethod.POST
24
+ message_feedback_request.uri = "/v1/messages/:message_id/feedbacks"
25
+ self._message_feedback_request = message_feedback_request
26
+
27
+ def build(self) -> MessageFeedbackRequest:
28
+ return self._message_feedback_request
29
+
30
+ def message_id(self, message_id: str) -> MessageFeedbackRequestBuilder:
31
+ self._message_feedback_request.message_id = message_id
32
+ self._message_feedback_request.paths["message_id"] = message_id
33
+ return self
34
+
35
+ def request_body(self, request_body: MessageFeedbackRequestBody) -> MessageFeedbackRequestBuilder:
36
+ self._message_feedback_request.request_body = request_body
37
+ self._message_feedback_request.body = request_body.model_dump(exclude_none=True, mode="json")
38
+ return self
@@ -0,0 +1,35 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+ from ..completion.completion_types import FeedbackRating
6
+
7
+
8
+ class MessageFeedbackRequestBody(BaseModel):
9
+ rating: FeedbackRating | None = None
10
+ user: str | None = None
11
+ content: str | None = None
12
+
13
+ @staticmethod
14
+ def builder() -> MessageFeedbackRequestBodyBuilder:
15
+ return MessageFeedbackRequestBodyBuilder()
16
+
17
+
18
+ class MessageFeedbackRequestBodyBuilder:
19
+ def __init__(self):
20
+ self._message_feedback_request_body = MessageFeedbackRequestBody()
21
+
22
+ def build(self) -> MessageFeedbackRequestBody:
23
+ return self._message_feedback_request_body
24
+
25
+ def rating(self, rating: FeedbackRating) -> MessageFeedbackRequestBodyBuilder:
26
+ self._message_feedback_request_body.rating = rating
27
+ return self
28
+
29
+ def user(self, user: str) -> MessageFeedbackRequestBodyBuilder:
30
+ self._message_feedback_request_body.user = user
31
+ return self
32
+
33
+ def content(self, content: str) -> MessageFeedbackRequestBodyBuilder:
34
+ self._message_feedback_request_body.content = content
35
+ return self
@@ -0,0 +1,7 @@
1
+ from __future__ import annotations
2
+
3
+ from dify_oapi.core.model.base_response import BaseResponse
4
+
5
+
6
+ class MessageFeedbackResponse(BaseResponse):
7
+ result: str | None = None
@@ -0,0 +1,53 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+
6
+ class FileInfo(BaseModel):
7
+ id: str | None = None
8
+ name: str | None = None
9
+ size: int | None = None
10
+ extension: str | None = None
11
+ mime_type: str | None = None
12
+ created_by: str | None = None
13
+ created_at: int | None = None
14
+
15
+ @staticmethod
16
+ def builder() -> FileInfoBuilder:
17
+ return FileInfoBuilder()
18
+
19
+
20
+ class FileInfoBuilder:
21
+ def __init__(self):
22
+ self._file_info = FileInfo()
23
+
24
+ def build(self) -> FileInfo:
25
+ return self._file_info
26
+
27
+ def id(self, id: str) -> FileInfoBuilder:
28
+ self._file_info.id = id
29
+ return self
30
+
31
+ def name(self, name: str) -> FileInfoBuilder:
32
+ self._file_info.name = name
33
+ return self
34
+
35
+ def size(self, size: int) -> FileInfoBuilder:
36
+ self._file_info.size = size
37
+ return self
38
+
39
+ def extension(self, extension: str) -> FileInfoBuilder:
40
+ self._file_info.extension = extension
41
+ return self
42
+
43
+ def mime_type(self, mime_type: str) -> FileInfoBuilder:
44
+ self._file_info.mime_type = mime_type
45
+ return self
46
+
47
+ def created_by(self, created_by: str) -> FileInfoBuilder:
48
+ self._file_info.created_by = created_by
49
+ return self
50
+
51
+ def created_at(self, created_at: int) -> FileInfoBuilder:
52
+ self._file_info.created_at = created_at
53
+ return self
@@ -0,0 +1,42 @@
1
+ from __future__ import annotations
2
+
3
+ from io import BytesIO
4
+
5
+ from dify_oapi.core.enum import HttpMethod
6
+ from dify_oapi.core.model.base_request import BaseRequest
7
+
8
+ from .upload_file_request_body import UploadFileRequestBody
9
+
10
+
11
+ class UploadFileRequest(BaseRequest):
12
+ def __init__(self) -> None:
13
+ super().__init__()
14
+ self.request_body: UploadFileRequestBody | None = None
15
+ self.file: BytesIO | None = None
16
+
17
+ @staticmethod
18
+ def builder() -> UploadFileRequestBuilder:
19
+ return UploadFileRequestBuilder()
20
+
21
+
22
+ class UploadFileRequestBuilder:
23
+ def __init__(self):
24
+ upload_file_request = UploadFileRequest()
25
+ upload_file_request.http_method = HttpMethod.POST
26
+ upload_file_request.uri = "/v1/files/upload"
27
+ self._upload_file_request = upload_file_request
28
+
29
+ def build(self) -> UploadFileRequest:
30
+ return self._upload_file_request
31
+
32
+ def file(self, file: BytesIO, file_name: str | None = None) -> UploadFileRequestBuilder:
33
+ self._upload_file_request.file = file
34
+ file_name = file_name or "upload"
35
+ self._upload_file_request.files = {"file": (file_name, file)}
36
+ return self
37
+
38
+ def request_body(self, request_body: UploadFileRequestBody) -> UploadFileRequestBuilder:
39
+ self._upload_file_request.request_body = request_body
40
+ if request_body.user:
41
+ self._upload_file_request.body = {"user": request_body.user}
42
+ return self
@@ -0,0 +1,23 @@
1
+ from __future__ import annotations
2
+
3
+ from pydantic import BaseModel
4
+
5
+
6
+ class UploadFileRequestBody(BaseModel):
7
+ user: str | None = None
8
+
9
+ @staticmethod
10
+ def builder() -> UploadFileRequestBodyBuilder:
11
+ return UploadFileRequestBodyBuilder()
12
+
13
+
14
+ class UploadFileRequestBodyBuilder:
15
+ def __init__(self):
16
+ self._upload_file_request_body = UploadFileRequestBody()
17
+
18
+ def build(self) -> UploadFileRequestBody:
19
+ return self._upload_file_request_body
20
+
21
+ def user(self, user: str) -> UploadFileRequestBodyBuilder:
22
+ self._upload_file_request_body.user = user
23
+ return self
@@ -0,0 +1,9 @@
1
+ from __future__ import annotations
2
+
3
+ from dify_oapi.core.model.base_response import BaseResponse
4
+
5
+ from .file_info import FileInfo
6
+
7
+
8
+ class UploadFileResponse(FileInfo, BaseResponse):
9
+ pass