dify-oapi2 0.4.0__py3-none-any.whl → 1.0.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 (215) hide show
  1. dify_oapi/api/chat/v1/model/__init__.py +37 -0
  2. dify_oapi/api/chat/v1/model/agent_thought.py +69 -0
  3. dify_oapi/api/chat/v1/model/annotation_info.py +43 -0
  4. dify_oapi/api/{completion/v1/model/info → chat/v1/model}/app_info.py +6 -14
  5. dify_oapi/api/chat/v1/model/app_parameters.py +494 -0
  6. dify_oapi/api/chat/v1/model/chat_file.py +53 -0
  7. dify_oapi/api/chat/v1/model/chat_request_body.py +26 -13
  8. dify_oapi/api/chat/v1/model/chat_response.py +13 -2
  9. dify_oapi/api/chat/v1/model/chat_types.py +65 -0
  10. dify_oapi/api/chat/v1/model/configure_annotation_reply_request.py +37 -0
  11. dify_oapi/api/chat/v1/model/configure_annotation_reply_request_body.py +39 -0
  12. dify_oapi/api/chat/v1/model/configure_annotation_reply_response.py +10 -0
  13. dify_oapi/api/chat/v1/model/conversation_info.py +57 -0
  14. dify_oapi/api/chat/v1/model/conversation_variable.py +55 -0
  15. dify_oapi/api/chat/v1/model/create_annotation_request.py +30 -0
  16. dify_oapi/api/chat/v1/model/create_annotation_request_body.py +32 -0
  17. dify_oapi/api/chat/v1/model/create_annotation_response.py +9 -0
  18. dify_oapi/api/chat/v1/model/delete_annotation_request.py +26 -0
  19. dify_oapi/api/chat/v1/model/delete_annotation_response.py +7 -0
  20. dify_oapi/api/{completion/v1/model/feedback → chat/v1/model}/feedback_info.py +29 -7
  21. dify_oapi/api/{completion/v1/model/file → chat/v1/model}/file_info.py +6 -0
  22. dify_oapi/api/chat/v1/model/get_annotation_reply_status_request.py +32 -0
  23. dify_oapi/api/chat/v1/model/get_annotation_reply_status_response.py +11 -0
  24. dify_oapi/api/chat/v1/model/get_conversation_list_request.py +25 -24
  25. dify_oapi/api/chat/v1/model/get_conversation_list_response.py +4 -15
  26. dify_oapi/api/chat/v1/model/get_conversation_variables_request.py +54 -0
  27. dify_oapi/api/chat/v1/model/get_conversation_variables_response.py +10 -0
  28. dify_oapi/api/chat/v1/model/get_conversations_request.py +49 -0
  29. dify_oapi/api/chat/v1/model/get_suggested_questions_request.py +36 -0
  30. dify_oapi/api/chat/v1/model/{message_suggested_response.py → get_suggested_questions_response.py} +1 -1
  31. dify_oapi/api/chat/v1/model/list_annotations_request.py +32 -0
  32. dify_oapi/api/chat/v1/model/list_annotations_response.py +11 -0
  33. dify_oapi/api/chat/v1/model/message_file.py +46 -0
  34. dify_oapi/api/chat/v1/model/message_history_request.py +24 -24
  35. dify_oapi/api/chat/v1/model/message_history_response.py +4 -43
  36. dify_oapi/api/chat/v1/model/message_info.py +73 -0
  37. dify_oapi/api/chat/v1/model/pagination_info.py +44 -0
  38. dify_oapi/api/chat/v1/model/rename_conversation_request_body.py +1 -1
  39. dify_oapi/api/chat/v1/model/retriever_resource.py +64 -0
  40. dify_oapi/api/chat/v1/model/site_settings.py +92 -0
  41. dify_oapi/api/chat/v1/model/text_to_audio_response.py +7 -0
  42. dify_oapi/api/chat/v1/model/tool_icon.py +52 -0
  43. dify_oapi/api/chat/v1/model/update_annotation_request.py +34 -0
  44. dify_oapi/api/chat/v1/model/update_annotation_request_body.py +32 -0
  45. dify_oapi/api/chat/v1/model/update_annotation_response.py +9 -0
  46. dify_oapi/api/{completion/v1/model/file → chat/v1/model}/upload_file_request_body.py +9 -3
  47. dify_oapi/api/chat/v1/model/usage_info.py +84 -0
  48. dify_oapi/api/chat/v1/resource/__init__.py +1 -4
  49. dify_oapi/api/chat/v1/resource/annotation.py +87 -0
  50. dify_oapi/api/chat/v1/resource/chat.py +47 -25
  51. dify_oapi/api/chat/v1/resource/conversation.py +45 -33
  52. dify_oapi/api/chat/v1/resource/message.py +22 -20
  53. dify_oapi/api/chat/v1/version.py +18 -5
  54. dify_oapi/api/chatflow/__init__.py +0 -0
  55. dify_oapi/api/chatflow/service.py +8 -0
  56. dify_oapi/api/chatflow/v1/__init__.py +0 -0
  57. dify_oapi/api/chatflow/v1/model/__init__.py +0 -0
  58. dify_oapi/api/chatflow/v1/model/annotation_info.py +43 -0
  59. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_request.py +37 -0
  60. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_request_body.py +33 -0
  61. dify_oapi/api/chatflow/v1/model/annotation_reply_settings_response.py +10 -0
  62. dify_oapi/api/chatflow/v1/model/annotation_reply_status_request.py +36 -0
  63. dify_oapi/api/chatflow/v1/model/annotation_reply_status_response.py +11 -0
  64. dify_oapi/api/chatflow/v1/model/app_info.py +33 -0
  65. dify_oapi/api/chatflow/v1/model/app_parameters.py +276 -0
  66. dify_oapi/api/chatflow/v1/model/chat_file.py +40 -0
  67. dify_oapi/api/chatflow/v1/model/chat_message.py +88 -0
  68. dify_oapi/api/chatflow/v1/model/chatflow_types.py +210 -0
  69. dify_oapi/api/chatflow/v1/model/conversation_info.py +53 -0
  70. dify_oapi/api/chatflow/v1/model/conversation_variable.py +55 -0
  71. dify_oapi/api/chatflow/v1/model/create_annotation_request.py +30 -0
  72. dify_oapi/api/chatflow/v1/model/create_annotation_request_body.py +28 -0
  73. dify_oapi/api/chatflow/v1/model/create_annotation_response.py +9 -0
  74. dify_oapi/api/chatflow/v1/model/delete_annotation_request.py +28 -0
  75. dify_oapi/api/chatflow/v1/model/delete_annotation_response.py +7 -0
  76. dify_oapi/api/chatflow/v1/model/delete_conversation_request.py +36 -0
  77. dify_oapi/api/chatflow/v1/model/delete_conversation_request_body.py +21 -0
  78. dify_oapi/api/chatflow/v1/model/delete_conversation_response.py +17 -0
  79. dify_oapi/api/chatflow/v1/model/feedback_info.py +75 -0
  80. dify_oapi/api/chatflow/v1/model/file_info.py +53 -0
  81. dify_oapi/api/chatflow/v1/model/get_annotations_request.py +30 -0
  82. dify_oapi/api/chatflow/v1/model/get_annotations_response.py +13 -0
  83. dify_oapi/api/chatflow/v1/model/get_conversation_messages_request.py +38 -0
  84. dify_oapi/api/chatflow/v1/model/get_conversation_messages_response.py +33 -0
  85. dify_oapi/api/chatflow/v1/model/get_conversation_variables_request.py +44 -0
  86. dify_oapi/api/chatflow/v1/model/get_conversation_variables_response.py +33 -0
  87. dify_oapi/api/chatflow/v1/model/get_conversations_request.py +40 -0
  88. dify_oapi/api/chatflow/v1/model/get_conversations_response.py +33 -0
  89. dify_oapi/api/chatflow/v1/model/get_suggested_questions_request.py +32 -0
  90. dify_oapi/api/{completion/v1/model/feedback/message_feedback_response.py → chatflow/v1/model/get_suggested_questions_response.py} +2 -3
  91. dify_oapi/api/chatflow/v1/model/rename_conversation_request.py +36 -0
  92. dify_oapi/api/chatflow/v1/model/rename_conversation_request_body.py +31 -0
  93. dify_oapi/api/chatflow/v1/model/rename_conversation_response.py +53 -0
  94. dify_oapi/api/chatflow/v1/model/retriever_resource.py +58 -0
  95. dify_oapi/api/chatflow/v1/model/send_chat_message_request.py +30 -0
  96. dify_oapi/api/chatflow/v1/model/send_chat_message_request_body.py +54 -0
  97. dify_oapi/api/chatflow/v1/model/send_chat_message_response.py +7 -0
  98. dify_oapi/api/chatflow/v1/model/stop_chat_message_request.py +36 -0
  99. dify_oapi/api/chatflow/v1/model/stop_chat_message_request_body.py +21 -0
  100. dify_oapi/api/{dify/v1/model/message_feedback_response.py → chatflow/v1/model/stop_chat_message_response.py} +1 -1
  101. dify_oapi/api/chatflow/v1/model/tool_icon.py +48 -0
  102. dify_oapi/api/chatflow/v1/model/update_annotation_request.py +36 -0
  103. dify_oapi/api/chatflow/v1/model/update_annotation_request_body.py +28 -0
  104. dify_oapi/api/chatflow/v1/model/update_annotation_response.py +9 -0
  105. dify_oapi/api/chatflow/v1/model/usage_info.py +78 -0
  106. dify_oapi/api/chatflow/v1/model/user_input_form.py +141 -0
  107. dify_oapi/api/chatflow/v1/model/webapp_settings.py +88 -0
  108. dify_oapi/api/chatflow/v1/resource/__init__.py +0 -0
  109. dify_oapi/api/chatflow/v1/resource/annotation.py +87 -0
  110. dify_oapi/api/chatflow/v1/resource/chatflow.py +78 -0
  111. dify_oapi/api/chatflow/v1/resource/conversation.py +75 -0
  112. dify_oapi/api/chatflow/v1/version.py +22 -0
  113. dify_oapi/api/completion/v1/resource/__init__.py +0 -6
  114. dify_oapi/api/completion/v1/version.py +8 -6
  115. dify_oapi/api/{chat → dify}/v1/model/audio_to_text_request_body.py +2 -2
  116. dify_oapi/api/{completion/v1/model/feedback → dify/v1/model}/get_feedbacks_request.py +12 -12
  117. dify_oapi/api/dify/v1/model/get_feedbacks_response.py +26 -0
  118. dify_oapi/api/{workflow → dify}/v1/model/get_parameters_request.py +4 -0
  119. dify_oapi/api/dify/v1/model/{get_parameter_response.py → get_parameters_response.py} +6 -2
  120. dify_oapi/api/dify/v1/model/get_site_response.py +17 -0
  121. dify_oapi/api/dify/v1/model/submit_feedback_request.py +34 -0
  122. dify_oapi/api/dify/v1/model/submit_feedback_request_body.py +35 -0
  123. dify_oapi/api/dify/v1/model/submit_feedback_response.py +7 -0
  124. dify_oapi/api/dify/v1/resource/__init__.py +0 -6
  125. dify_oapi/api/dify/v1/resource/audio.py +12 -0
  126. dify_oapi/api/dify/v1/resource/feedback.py +31 -0
  127. dify_oapi/api/dify/v1/resource/info.py +34 -2
  128. dify_oapi/api/dify/v1/version.py +5 -4
  129. dify_oapi/api/knowledge/service.py +3 -3
  130. dify_oapi/api/knowledge/v1/model/create_document_by_file_request.py +1 -3
  131. dify_oapi/api/knowledge/v1/model/create_document_by_file_request_body.py +4 -46
  132. dify_oapi/api/knowledge/v1/model/create_document_by_file_request_body_data.py +73 -0
  133. dify_oapi/api/knowledge/v1/model/data_source_detail.py +23 -0
  134. dify_oapi/api/knowledge/v1/model/dataset_info.py +10 -9
  135. dify_oapi/api/knowledge/v1/model/dataset_metadata.py +14 -0
  136. dify_oapi/api/knowledge/v1/model/document_info.py +18 -6
  137. dify_oapi/api/knowledge/v1/model/external_knowledge_info.py +11 -1
  138. dify_oapi/api/knowledge/v1/model/external_retrieval_model.py +13 -0
  139. dify_oapi/api/knowledge/v1/model/knowledge_types.py +2 -2
  140. dify_oapi/api/knowledge/v1/model/process_rule.py +0 -6
  141. dify_oapi/api/knowledge/v1/model/retrieval_model.py +10 -4
  142. dify_oapi/api/knowledge/v1/model/update_document_by_file_request.py +1 -3
  143. dify_oapi/api/knowledge/v1/model/update_document_by_file_request_body.py +4 -41
  144. dify_oapi/api/knowledge/v1/model/update_document_by_file_request_body_data.py +68 -0
  145. dify_oapi/api/knowledge/v1/model/weights.py +27 -0
  146. dify_oapi/api/knowledge/v1/resource/__init__.py +0 -8
  147. dify_oapi/api/workflow/v1/model/chunk_workflow_event.py +74 -0
  148. dify_oapi/api/workflow/v1/model/input_file_object_workflow.py +76 -0
  149. dify_oapi/api/workflow/v1/model/node_finished_data.py +118 -0
  150. dify_oapi/api/workflow/v1/model/node_started_data.py +81 -0
  151. dify_oapi/api/workflow/v1/model/ping_data.py +28 -0
  152. dify_oapi/api/workflow/v1/model/run_workflow_request_body.py +1 -1
  153. dify_oapi/api/workflow/v1/model/text_chunk_data.py +39 -0
  154. dify_oapi/api/workflow/v1/model/tts_message_data.py +45 -0
  155. dify_oapi/api/workflow/v1/model/tts_message_end_data.py +45 -0
  156. dify_oapi/api/workflow/v1/model/workflow_completion_response.py +50 -0
  157. dify_oapi/api/workflow/v1/model/workflow_finished_data.py +93 -0
  158. dify_oapi/api/workflow/v1/model/workflow_started_data.py +51 -0
  159. dify_oapi/api/workflow/v1/model/workflow_types.py +27 -12
  160. dify_oapi/api/workflow/v1/resource/workflow.py +0 -34
  161. dify_oapi/api/workflow/v1/version.py +9 -0
  162. dify_oapi/client.py +49 -4
  163. dify_oapi/core/http/transport/__init__.py +2 -1
  164. dify_oapi/core/http/transport/async_transport.py +73 -50
  165. dify_oapi/core/http/transport/connection_pool.py +131 -0
  166. dify_oapi/core/http/transport/sync_transport.py +73 -50
  167. dify_oapi/core/model/config.py +10 -0
  168. dify_oapi2-1.0.0.dist-info/METADATA +365 -0
  169. {dify_oapi2-0.4.0.dist-info → dify_oapi2-1.0.0.dist-info}/RECORD +174 -98
  170. dify_oapi/api/chat/v1/model/chat_request_file.py +0 -46
  171. dify_oapi/api/chat/v1/model/message_suggested_request.py +0 -36
  172. dify_oapi/api/chat/v1/resource/audio.py +0 -17
  173. dify_oapi/api/completion/v1/model/audio/audio_info.py +0 -28
  174. dify_oapi/api/completion/v1/model/audio/text_to_audio_request.py +0 -32
  175. dify_oapi/api/completion/v1/model/audio/text_to_audio_request_body.py +0 -33
  176. dify_oapi/api/completion/v1/model/audio/text_to_audio_response.py +0 -9
  177. dify_oapi/api/completion/v1/model/feedback/get_feedbacks_response.py +0 -9
  178. dify_oapi/api/completion/v1/model/feedback/message_feedback_request.py +0 -38
  179. dify_oapi/api/completion/v1/model/feedback/message_feedback_request_body.py +0 -35
  180. dify_oapi/api/completion/v1/model/file/upload_file_request.py +0 -42
  181. dify_oapi/api/completion/v1/model/file/upload_file_response.py +0 -9
  182. dify_oapi/api/completion/v1/model/info/feature_config.py +0 -91
  183. dify_oapi/api/completion/v1/model/info/file_upload_config.py +0 -23
  184. dify_oapi/api/completion/v1/model/info/get_info_request.py +0 -24
  185. dify_oapi/api/completion/v1/model/info/get_info_response.py +0 -9
  186. dify_oapi/api/completion/v1/model/info/get_parameters_request.py +0 -24
  187. dify_oapi/api/completion/v1/model/info/get_parameters_response.py +0 -9
  188. dify_oapi/api/completion/v1/model/info/get_site_response.py +0 -9
  189. dify_oapi/api/completion/v1/model/info/parameters_info.py +0 -75
  190. dify_oapi/api/completion/v1/model/info/site_info.py +0 -90
  191. dify_oapi/api/completion/v1/model/info/system_parameters.py +0 -38
  192. dify_oapi/api/completion/v1/model/info/user_input_form.py +0 -158
  193. dify_oapi/api/completion/v1/resource/audio.py +0 -19
  194. dify_oapi/api/completion/v1/resource/feedback.py +0 -33
  195. dify_oapi/api/completion/v1/resource/file.py +0 -19
  196. dify_oapi/api/completion/v1/resource/info.py +0 -39
  197. dify_oapi/api/dify/v1/model/get_parameter_request.py +0 -30
  198. dify_oapi/api/dify/v1/model/message_feedback_request.py +0 -38
  199. dify_oapi/api/dify/v1/model/message_feedback_request_body.py +0 -30
  200. dify_oapi/api/dify/v1/resource/message.py +0 -21
  201. dify_oapi/api/dify/v1/resource/meta.py +0 -17
  202. dify_oapi/api/dify/v1/resource/parameter.py +0 -19
  203. dify_oapi/api/workflow/v1/model/get_info_request.py +0 -24
  204. dify_oapi/api/workflow/v1/model/get_info_response.py +0 -9
  205. dify_oapi/api/workflow/v1/model/get_parameters_response.py +0 -9
  206. dify_oapi/api/workflow/v1/model/get_site_request.py +0 -24
  207. dify_oapi/api/workflow/v1/model/get_site_response.py +0 -9
  208. dify_oapi/api/workflow/v1/model/upload_file_request.py +0 -42
  209. dify_oapi/api/workflow/v1/model/upload_file_response.py +0 -9
  210. dify_oapi2-0.4.0.dist-info/METADATA +0 -303
  211. /dify_oapi/api/{chat → dify}/v1/model/audio_to_text_request.py +0 -0
  212. /dify_oapi/api/{chat → dify}/v1/model/audio_to_text_response.py +0 -0
  213. /dify_oapi/api/{completion/v1/model/info → dify/v1/model}/get_site_request.py +0 -0
  214. {dify_oapi2-0.4.0.dist-info → dify_oapi2-1.0.0.dist-info}/LICENSE +0 -0
  215. {dify_oapi2-0.4.0.dist-info → dify_oapi2-1.0.0.dist-info}/WHEEL +0 -0
@@ -6,6 +6,7 @@ from pydantic import BaseModel
6
6
 
7
7
  from .knowledge_types import SearchMethod
8
8
  from .reranking_mode import RerankingMode
9
+ from .weights import Weights
9
10
 
10
11
 
11
12
  class RetrievalModel(BaseModel):
@@ -13,11 +14,12 @@ class RetrievalModel(BaseModel):
13
14
 
14
15
  search_method: Optional[SearchMethod] = None
15
16
  reranking_enable: Optional[bool] = None
16
- reranking_mode: Optional[RerankingMode] = None
17
+ reranking_mode: Optional[str] = None
18
+ reranking_model: Optional[RerankingMode] = None
17
19
  top_k: Optional[int] = None
18
20
  score_threshold_enabled: Optional[bool] = None
19
21
  score_threshold: Optional[float] = None
20
- weights: Optional[float] = None
22
+ weights: Optional[Weights] = None
21
23
 
22
24
  @staticmethod
23
25
  def builder() -> "RetrievalModelBuilder":
@@ -41,10 +43,14 @@ class RetrievalModelBuilder:
41
43
  self._retrieval_model.reranking_enable = reranking_enable
42
44
  return self
43
45
 
44
- def reranking_mode(self, reranking_mode: RerankingMode) -> "RetrievalModelBuilder":
46
+ def reranking_mode(self, reranking_mode: str) -> "RetrievalModelBuilder":
45
47
  self._retrieval_model.reranking_mode = reranking_mode
46
48
  return self
47
49
 
50
+ def reranking_model(self, reranking_model: RerankingMode) -> "RetrievalModelBuilder":
51
+ self._retrieval_model.reranking_model = reranking_model
52
+ return self
53
+
48
54
  def top_k(self, top_k: int) -> "RetrievalModelBuilder":
49
55
  self._retrieval_model.top_k = top_k
50
56
  return self
@@ -57,6 +63,6 @@ class RetrievalModelBuilder:
57
63
  self._retrieval_model.score_threshold = score_threshold
58
64
  return self
59
65
 
60
- def weights(self, weights: float) -> "RetrievalModelBuilder":
66
+ def weights(self, weights: Weights) -> "RetrievalModelBuilder":
61
67
  self._retrieval_model.weights = weights
62
68
  return self
@@ -2,7 +2,6 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- import json
6
5
  from io import BytesIO
7
6
 
8
7
  from dify_oapi.core.enum import HttpMethod
@@ -50,8 +49,7 @@ class UpdateDocumentByFileRequestBuilder:
50
49
 
51
50
  def request_body(self, request_body: UpdateDocumentByFileRequestBody) -> UpdateDocumentByFileRequestBuilder:
52
51
  self._update_document_by_file_request.request_body = request_body
53
- data_dict = request_body.model_dump(exclude_none=True, mode="json")
54
- self._update_document_by_file_request.body = {"data": json.dumps(data_dict)}
52
+ self._update_document_by_file_request.body = request_body.model_dump(exclude_none=True, mode="json")
55
53
  return self
56
54
 
57
55
  def file(self, file: BytesIO, file_name: str | None = None) -> UpdateDocumentByFileRequestBuilder:
@@ -4,22 +4,13 @@ from __future__ import annotations
4
4
 
5
5
  from pydantic import BaseModel
6
6
 
7
- from .knowledge_types import IndexingTechnique
8
- from .process_rule import ProcessRule
9
- from .retrieval_model import RetrievalModel
7
+ from .update_document_by_file_request_body_data import UpdateDocumentByFileRequestBodyData
10
8
 
11
9
 
12
10
  class UpdateDocumentByFileRequestBody(BaseModel):
13
11
  """Request body model for update document by file API."""
14
12
 
15
- name: str | None = None
16
- indexing_technique: IndexingTechnique | None = None
17
- doc_form: str | None = None
18
- doc_language: str | None = None
19
- process_rule: ProcessRule | None = None
20
- retrieval_model: RetrievalModel | None = None
21
- embedding_model: str | None = None
22
- embedding_model_provider: str | None = None
13
+ data: str | None = None
23
14
 
24
15
  @staticmethod
25
16
  def builder() -> UpdateDocumentByFileRequestBodyBuilder:
@@ -35,34 +26,6 @@ class UpdateDocumentByFileRequestBodyBuilder:
35
26
  def build(self) -> UpdateDocumentByFileRequestBody:
36
27
  return self._update_document_by_file_request_body
37
28
 
38
- def name(self, name: str) -> UpdateDocumentByFileRequestBodyBuilder:
39
- self._update_document_by_file_request_body.name = name
40
- return self
41
-
42
- def indexing_technique(self, indexing_technique: IndexingTechnique) -> UpdateDocumentByFileRequestBodyBuilder:
43
- self._update_document_by_file_request_body.indexing_technique = indexing_technique
44
- return self
45
-
46
- def process_rule(self, process_rule: ProcessRule) -> UpdateDocumentByFileRequestBodyBuilder:
47
- self._update_document_by_file_request_body.process_rule = process_rule
48
- return self
49
-
50
- def doc_form(self, doc_form: str) -> UpdateDocumentByFileRequestBodyBuilder:
51
- self._update_document_by_file_request_body.doc_form = doc_form
52
- return self
53
-
54
- def doc_language(self, doc_language: str) -> UpdateDocumentByFileRequestBodyBuilder:
55
- self._update_document_by_file_request_body.doc_language = doc_language
56
- return self
57
-
58
- def retrieval_model(self, retrieval_model: RetrievalModel) -> UpdateDocumentByFileRequestBodyBuilder:
59
- self._update_document_by_file_request_body.retrieval_model = retrieval_model
60
- return self
61
-
62
- def embedding_model(self, embedding_model: str) -> UpdateDocumentByFileRequestBodyBuilder:
63
- self._update_document_by_file_request_body.embedding_model = embedding_model
64
- return self
65
-
66
- def embedding_model_provider(self, embedding_model_provider: str) -> UpdateDocumentByFileRequestBodyBuilder:
67
- self._update_document_by_file_request_body.embedding_model_provider = embedding_model_provider
29
+ def data(self, data: UpdateDocumentByFileRequestBodyData) -> UpdateDocumentByFileRequestBodyBuilder:
30
+ self._update_document_by_file_request_body.data = data.model_dump_json(exclude_none=True)
68
31
  return self
@@ -0,0 +1,68 @@
1
+ """Update document by file request body model."""
2
+
3
+ from __future__ import annotations
4
+
5
+ from pydantic import BaseModel
6
+
7
+ from .knowledge_types import IndexingTechnique
8
+ from .process_rule import ProcessRule
9
+ from .retrieval_model import RetrievalModel
10
+
11
+
12
+ class UpdateDocumentByFileRequestBodyData(BaseModel):
13
+ """Request body model for update document by file API."""
14
+
15
+ name: str | None = None
16
+ indexing_technique: IndexingTechnique | None = None
17
+ doc_form: str | None = None
18
+ doc_language: str | None = None
19
+ process_rule: ProcessRule | None = None
20
+ retrieval_model: RetrievalModel | None = None
21
+ embedding_model: str | None = None
22
+ embedding_model_provider: str | None = None
23
+
24
+ @staticmethod
25
+ def builder() -> UpdateDocumentByFileRequestBodyDataBuilder:
26
+ return UpdateDocumentByFileRequestBodyDataBuilder()
27
+
28
+
29
+ class UpdateDocumentByFileRequestBodyDataBuilder:
30
+ """Builder for UpdateDocumentByFileRequestBodyData."""
31
+
32
+ def __init__(self) -> None:
33
+ self._update_document_by_file_request_body = UpdateDocumentByFileRequestBodyData()
34
+
35
+ def build(self) -> UpdateDocumentByFileRequestBodyData:
36
+ return self._update_document_by_file_request_body
37
+
38
+ def name(self, name: str) -> UpdateDocumentByFileRequestBodyDataBuilder:
39
+ self._update_document_by_file_request_body.name = name
40
+ return self
41
+
42
+ def indexing_technique(self, indexing_technique: IndexingTechnique) -> UpdateDocumentByFileRequestBodyDataBuilder:
43
+ self._update_document_by_file_request_body.indexing_technique = indexing_technique
44
+ return self
45
+
46
+ def process_rule(self, process_rule: ProcessRule) -> UpdateDocumentByFileRequestBodyDataBuilder:
47
+ self._update_document_by_file_request_body.process_rule = process_rule
48
+ return self
49
+
50
+ def doc_form(self, doc_form: str) -> UpdateDocumentByFileRequestBodyDataBuilder:
51
+ self._update_document_by_file_request_body.doc_form = doc_form
52
+ return self
53
+
54
+ def doc_language(self, doc_language: str) -> UpdateDocumentByFileRequestBodyDataBuilder:
55
+ self._update_document_by_file_request_body.doc_language = doc_language
56
+ return self
57
+
58
+ def retrieval_model(self, retrieval_model: RetrievalModel) -> UpdateDocumentByFileRequestBodyDataBuilder:
59
+ self._update_document_by_file_request_body.retrieval_model = retrieval_model
60
+ return self
61
+
62
+ def embedding_model(self, embedding_model: str) -> UpdateDocumentByFileRequestBodyDataBuilder:
63
+ self._update_document_by_file_request_body.embedding_model = embedding_model
64
+ return self
65
+
66
+ def embedding_model_provider(self, embedding_model_provider: str) -> UpdateDocumentByFileRequestBodyDataBuilder:
67
+ self._update_document_by_file_request_body.embedding_model_provider = embedding_model_provider
68
+ return self
@@ -0,0 +1,27 @@
1
+ """Weights model for retrieval configuration."""
2
+
3
+ from typing import Optional
4
+
5
+ from pydantic import BaseModel
6
+
7
+
8
+ class KeywordSetting(BaseModel):
9
+ """Keyword search weight settings."""
10
+
11
+ keyword_weight: Optional[float] = None
12
+
13
+
14
+ class VectorSetting(BaseModel):
15
+ """Vector search weight settings."""
16
+
17
+ vector_weight: Optional[float] = None
18
+ embedding_model_name: Optional[str] = None
19
+ embedding_provider_name: Optional[str] = None
20
+
21
+
22
+ class Weights(BaseModel):
23
+ """Weights configuration for hybrid search."""
24
+
25
+ weight_type: Optional[str] = None
26
+ keyword_setting: Optional[KeywordSetting] = None
27
+ vector_setting: Optional[VectorSetting] = None
@@ -1,8 +0,0 @@
1
- from .chunk import Chunk
2
- from .dataset import Dataset
3
- from .document import Document
4
- from .model import Model
5
- from .segment import Segment
6
- from .tag import Tag
7
-
8
- __all__ = ["Chunk", "Dataset", "Document", "Model", "Segment", "Tag"]
@@ -0,0 +1,74 @@
1
+ """Chunk workflow event for streaming mode.
2
+
3
+ This module defines the base structure for workflow streaming events
4
+ and specific event data models.
5
+ """
6
+
7
+ from typing import Any, Optional
8
+
9
+ from pydantic import BaseModel
10
+
11
+ from .workflow_types import EventType
12
+
13
+
14
+ class ChunkWorkflowEvent(BaseModel):
15
+ """Base streaming event structure for workflow execution."""
16
+
17
+ event: EventType
18
+ task_id: Optional[str] = None
19
+ workflow_run_id: Optional[str] = None
20
+ data: Optional[dict[str, Any]] = None
21
+ message_id: Optional[str] = None
22
+ audio: Optional[str] = None
23
+ created_at: Optional[int] = None
24
+
25
+ @staticmethod
26
+ def builder() -> "ChunkWorkflowEventBuilder":
27
+ """Create a new ChunkWorkflowEvent builder."""
28
+ return ChunkWorkflowEventBuilder()
29
+
30
+
31
+ class ChunkWorkflowEventBuilder:
32
+ """Builder for ChunkWorkflowEvent."""
33
+
34
+ def __init__(self):
35
+ self._chunk_workflow_event = ChunkWorkflowEvent(event="ping")
36
+
37
+ def build(self) -> ChunkWorkflowEvent:
38
+ """Build the ChunkWorkflowEvent instance."""
39
+ return self._chunk_workflow_event
40
+
41
+ def event(self, event: EventType) -> "ChunkWorkflowEventBuilder":
42
+ """Set the event type."""
43
+ self._chunk_workflow_event.event = event
44
+ return self
45
+
46
+ def task_id(self, task_id: str) -> "ChunkWorkflowEventBuilder":
47
+ """Set the task ID."""
48
+ self._chunk_workflow_event.task_id = task_id
49
+ return self
50
+
51
+ def workflow_run_id(self, workflow_run_id: str) -> "ChunkWorkflowEventBuilder":
52
+ """Set the workflow run ID."""
53
+ self._chunk_workflow_event.workflow_run_id = workflow_run_id
54
+ return self
55
+
56
+ def data(self, data: dict[str, Any]) -> "ChunkWorkflowEventBuilder":
57
+ """Set the event data."""
58
+ self._chunk_workflow_event.data = data
59
+ return self
60
+
61
+ def message_id(self, message_id: str) -> "ChunkWorkflowEventBuilder":
62
+ """Set the message ID (for TTS events)."""
63
+ self._chunk_workflow_event.message_id = message_id
64
+ return self
65
+
66
+ def audio(self, audio: str) -> "ChunkWorkflowEventBuilder":
67
+ """Set the audio data (for TTS events)."""
68
+ self._chunk_workflow_event.audio = audio
69
+ return self
70
+
71
+ def created_at(self, created_at: int) -> "ChunkWorkflowEventBuilder":
72
+ """Set the creation timestamp."""
73
+ self._chunk_workflow_event.created_at = created_at
74
+ return self
@@ -0,0 +1,76 @@
1
+ """Input file object for workflow multimodal support.
2
+
3
+ This module defines the InputFileObjectWorkflow model for handling file inputs
4
+ in workflow execution with proper validation rules.
5
+ """
6
+
7
+ from typing import Optional
8
+
9
+ from pydantic import BaseModel, model_validator
10
+
11
+ from .workflow_types import FileType, TransferMethod
12
+
13
+
14
+ class InputFileObjectWorkflow(BaseModel):
15
+ """File input object for workflow execution.
16
+
17
+ Supports both remote URL and local file upload methods with validation rules:
18
+ - When transfer_method is "remote_url": url is required, upload_file_id must be None
19
+ - When transfer_method is "local_file": upload_file_id is required, url must be None
20
+ """
21
+
22
+ type: FileType
23
+ transfer_method: TransferMethod
24
+ url: Optional[str] = None
25
+ upload_file_id: Optional[str] = None
26
+
27
+ @model_validator(mode="after")
28
+ def validate_transfer_method_fields(self):
29
+ """Validate that the correct fields are provided based on transfer_method."""
30
+ if self.transfer_method == "remote_url":
31
+ if not self.url:
32
+ raise ValueError("url is required when transfer_method is 'remote_url'")
33
+ if self.upload_file_id is not None:
34
+ raise ValueError("upload_file_id must be None when transfer_method is 'remote_url'")
35
+ elif self.transfer_method == "local_file":
36
+ if not self.upload_file_id:
37
+ raise ValueError("upload_file_id is required when transfer_method is 'local_file'")
38
+ if self.url is not None:
39
+ raise ValueError("url must be None when transfer_method is 'local_file'")
40
+ return self
41
+
42
+ @staticmethod
43
+ def builder() -> "InputFileObjectWorkflowBuilder":
44
+ """Create a new InputFileObjectWorkflow builder."""
45
+ return InputFileObjectWorkflowBuilder()
46
+
47
+
48
+ class InputFileObjectWorkflowBuilder:
49
+ """Builder for InputFileObjectWorkflow."""
50
+
51
+ def __init__(self):
52
+ self._input_file_object_workflow = InputFileObjectWorkflow(type="document", transfer_method="local_file")
53
+
54
+ def build(self) -> InputFileObjectWorkflow:
55
+ """Build the InputFileObjectWorkflow instance."""
56
+ return self._input_file_object_workflow
57
+
58
+ def type(self, file_type: FileType) -> "InputFileObjectWorkflowBuilder":
59
+ """Set the file type."""
60
+ self._input_file_object_workflow.type = file_type
61
+ return self
62
+
63
+ def transfer_method(self, transfer_method: TransferMethod) -> "InputFileObjectWorkflowBuilder":
64
+ """Set the transfer method."""
65
+ self._input_file_object_workflow.transfer_method = transfer_method
66
+ return self
67
+
68
+ def url(self, url: str) -> "InputFileObjectWorkflowBuilder":
69
+ """Set the remote URL (for remote_url transfer method)."""
70
+ self._input_file_object_workflow.url = url
71
+ return self
72
+
73
+ def upload_file_id(self, upload_file_id: str) -> "InputFileObjectWorkflowBuilder":
74
+ """Set the upload file ID (for local_file transfer method)."""
75
+ self._input_file_object_workflow.upload_file_id = upload_file_id
76
+ return self
@@ -0,0 +1,118 @@
1
+ """Node finished event data model.
2
+
3
+ This module defines the data structure for node_finished streaming events.
4
+ """
5
+
6
+ from typing import Any, Optional
7
+
8
+ from pydantic import BaseModel
9
+
10
+ from .execution_metadata import ExecutionMetadata
11
+ from .workflow_types import NodeStatus, NodeType
12
+
13
+
14
+ class NodeFinishedData(BaseModel):
15
+ """Data structure for node_finished streaming event."""
16
+
17
+ id: str
18
+ node_id: str
19
+ node_type: NodeType
20
+ title: str
21
+ index: int
22
+ predecessor_node_id: Optional[str] = None
23
+ inputs: Optional[dict[str, Any]] = None
24
+ process_data: Optional[dict[str, Any]] = None
25
+ outputs: Optional[dict[str, Any]] = None
26
+ status: NodeStatus
27
+ error: Optional[str] = None
28
+ elapsed_time: Optional[float] = None
29
+ execution_metadata: Optional[ExecutionMetadata] = None
30
+ created_at: int
31
+
32
+ @staticmethod
33
+ def builder() -> "NodeFinishedDataBuilder":
34
+ """Create a new NodeFinishedData builder."""
35
+ return NodeFinishedDataBuilder()
36
+
37
+
38
+ class NodeFinishedDataBuilder:
39
+ """Builder for NodeFinishedData."""
40
+
41
+ def __init__(self):
42
+ self._node_finished_data = NodeFinishedData(
43
+ id="", node_id="", node_type="start", title="", index=0, status="succeeded", created_at=0
44
+ )
45
+
46
+ def build(self) -> NodeFinishedData:
47
+ """Build the NodeFinishedData instance."""
48
+ return self._node_finished_data
49
+
50
+ def id(self, id: str) -> "NodeFinishedDataBuilder":
51
+ """Set the node execution ID."""
52
+ self._node_finished_data.id = id
53
+ return self
54
+
55
+ def node_id(self, node_id: str) -> "NodeFinishedDataBuilder":
56
+ """Set the node ID."""
57
+ self._node_finished_data.node_id = node_id
58
+ return self
59
+
60
+ def node_type(self, node_type: NodeType) -> "NodeFinishedDataBuilder":
61
+ """Set the node type."""
62
+ self._node_finished_data.node_type = node_type
63
+ return self
64
+
65
+ def title(self, title: str) -> "NodeFinishedDataBuilder":
66
+ """Set the node title."""
67
+ self._node_finished_data.title = title
68
+ return self
69
+
70
+ def index(self, index: int) -> "NodeFinishedDataBuilder":
71
+ """Set the node index."""
72
+ self._node_finished_data.index = index
73
+ return self
74
+
75
+ def predecessor_node_id(self, predecessor_node_id: str) -> "NodeFinishedDataBuilder":
76
+ """Set the predecessor node ID."""
77
+ self._node_finished_data.predecessor_node_id = predecessor_node_id
78
+ return self
79
+
80
+ def inputs(self, inputs: dict[str, Any]) -> "NodeFinishedDataBuilder":
81
+ """Set the node inputs."""
82
+ self._node_finished_data.inputs = inputs
83
+ return self
84
+
85
+ def process_data(self, process_data: dict[str, Any]) -> "NodeFinishedDataBuilder":
86
+ """Set the process data."""
87
+ self._node_finished_data.process_data = process_data
88
+ return self
89
+
90
+ def outputs(self, outputs: dict[str, Any]) -> "NodeFinishedDataBuilder":
91
+ """Set the node outputs."""
92
+ self._node_finished_data.outputs = outputs
93
+ return self
94
+
95
+ def status(self, status: NodeStatus) -> "NodeFinishedDataBuilder":
96
+ """Set the node status."""
97
+ self._node_finished_data.status = status
98
+ return self
99
+
100
+ def error(self, error: str) -> "NodeFinishedDataBuilder":
101
+ """Set the error message."""
102
+ self._node_finished_data.error = error
103
+ return self
104
+
105
+ def elapsed_time(self, elapsed_time: float) -> "NodeFinishedDataBuilder":
106
+ """Set the elapsed time."""
107
+ self._node_finished_data.elapsed_time = elapsed_time
108
+ return self
109
+
110
+ def execution_metadata(self, execution_metadata: ExecutionMetadata) -> "NodeFinishedDataBuilder":
111
+ """Set the execution metadata."""
112
+ self._node_finished_data.execution_metadata = execution_metadata
113
+ return self
114
+
115
+ def created_at(self, created_at: int) -> "NodeFinishedDataBuilder":
116
+ """Set the creation timestamp."""
117
+ self._node_finished_data.created_at = created_at
118
+ return self
@@ -0,0 +1,81 @@
1
+ """Node started event data model.
2
+
3
+ This module defines the data structure for node_started streaming events.
4
+ """
5
+
6
+ from typing import Any, Optional
7
+
8
+ from pydantic import BaseModel
9
+
10
+ from .workflow_types import NodeType
11
+
12
+
13
+ class NodeStartedData(BaseModel):
14
+ """Data structure for node_started streaming event."""
15
+
16
+ id: str
17
+ node_id: str
18
+ node_type: NodeType
19
+ title: str
20
+ index: int
21
+ predecessor_node_id: Optional[str] = None
22
+ inputs: dict[str, Any]
23
+ created_at: int
24
+
25
+ @staticmethod
26
+ def builder() -> "NodeStartedDataBuilder":
27
+ """Create a new NodeStartedData builder."""
28
+ return NodeStartedDataBuilder()
29
+
30
+
31
+ class NodeStartedDataBuilder:
32
+ """Builder for NodeStartedData."""
33
+
34
+ def __init__(self):
35
+ self._node_started_data = NodeStartedData(
36
+ id="", node_id="", node_type="start", title="", index=0, inputs={}, created_at=0
37
+ )
38
+
39
+ def build(self) -> NodeStartedData:
40
+ """Build the NodeStartedData instance."""
41
+ return self._node_started_data
42
+
43
+ def id(self, id: str) -> "NodeStartedDataBuilder":
44
+ """Set the node execution ID."""
45
+ self._node_started_data.id = id
46
+ return self
47
+
48
+ def node_id(self, node_id: str) -> "NodeStartedDataBuilder":
49
+ """Set the node ID."""
50
+ self._node_started_data.node_id = node_id
51
+ return self
52
+
53
+ def node_type(self, node_type: NodeType) -> "NodeStartedDataBuilder":
54
+ """Set the node type."""
55
+ self._node_started_data.node_type = node_type
56
+ return self
57
+
58
+ def title(self, title: str) -> "NodeStartedDataBuilder":
59
+ """Set the node title."""
60
+ self._node_started_data.title = title
61
+ return self
62
+
63
+ def index(self, index: int) -> "NodeStartedDataBuilder":
64
+ """Set the node index."""
65
+ self._node_started_data.index = index
66
+ return self
67
+
68
+ def predecessor_node_id(self, predecessor_node_id: str) -> "NodeStartedDataBuilder":
69
+ """Set the predecessor node ID."""
70
+ self._node_started_data.predecessor_node_id = predecessor_node_id
71
+ return self
72
+
73
+ def inputs(self, inputs: dict[str, Any]) -> "NodeStartedDataBuilder":
74
+ """Set the node inputs."""
75
+ self._node_started_data.inputs = inputs
76
+ return self
77
+
78
+ def created_at(self, created_at: int) -> "NodeStartedDataBuilder":
79
+ """Set the creation timestamp."""
80
+ self._node_started_data.created_at = created_at
81
+ return self
@@ -0,0 +1,28 @@
1
+ """Ping event data model.
2
+
3
+ This module defines the data structure for ping streaming events.
4
+ """
5
+
6
+ from pydantic import BaseModel
7
+
8
+
9
+ class PingData(BaseModel):
10
+ """Data structure for ping streaming event (empty data)."""
11
+
12
+ pass
13
+
14
+ @staticmethod
15
+ def builder() -> "PingDataBuilder":
16
+ """Create a new PingData builder."""
17
+ return PingDataBuilder()
18
+
19
+
20
+ class PingDataBuilder:
21
+ """Builder for PingData."""
22
+
23
+ def __init__(self):
24
+ self._ping_data = PingData()
25
+
26
+ def build(self) -> PingData:
27
+ """Build the PingData instance."""
28
+ return self._ping_data
@@ -9,7 +9,7 @@ from .workflow_types import ResponseMode
9
9
 
10
10
  class RunWorkflowRequestBody(BaseModel):
11
11
  inputs: WorkflowInputs | None = None
12
- response_mode: ResponseMode | None = None
12
+ response_mode: ResponseMode | None = "streaming"
13
13
  user: str | None = None
14
14
  files: list[WorkflowFileInfo] | None = None
15
15
  trace_id: str | None = None
@@ -0,0 +1,39 @@
1
+ """Text chunk event data model.
2
+
3
+ This module defines the data structure for text_chunk streaming events.
4
+ """
5
+
6
+ from pydantic import BaseModel
7
+
8
+
9
+ class TextChunkData(BaseModel):
10
+ """Data structure for text_chunk streaming event."""
11
+
12
+ text: str
13
+ from_variable_selector: list[str]
14
+
15
+ @staticmethod
16
+ def builder() -> "TextChunkDataBuilder":
17
+ """Create a new TextChunkData builder."""
18
+ return TextChunkDataBuilder()
19
+
20
+
21
+ class TextChunkDataBuilder:
22
+ """Builder for TextChunkData."""
23
+
24
+ def __init__(self):
25
+ self._text_chunk_data = TextChunkData(text="", from_variable_selector=[])
26
+
27
+ def build(self) -> TextChunkData:
28
+ """Build the TextChunkData instance."""
29
+ return self._text_chunk_data
30
+
31
+ def text(self, text: str) -> "TextChunkDataBuilder":
32
+ """Set the text chunk."""
33
+ self._text_chunk_data.text = text
34
+ return self
35
+
36
+ def from_variable_selector(self, from_variable_selector: list[str]) -> "TextChunkDataBuilder":
37
+ """Set the variable selector path."""
38
+ self._text_chunk_data.from_variable_selector = from_variable_selector
39
+ return self