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.
- dify_oapi/api/chat/v1/model/__init__.py +37 -0
- dify_oapi/api/chat/v1/model/agent_thought.py +69 -0
- dify_oapi/api/chat/v1/model/annotation_info.py +43 -0
- dify_oapi/api/{completion/v1/model/info → chat/v1/model}/app_info.py +6 -14
- dify_oapi/api/chat/v1/model/app_parameters.py +494 -0
- dify_oapi/api/chat/v1/model/chat_file.py +53 -0
- dify_oapi/api/chat/v1/model/chat_request_body.py +26 -13
- dify_oapi/api/chat/v1/model/chat_response.py +13 -2
- dify_oapi/api/chat/v1/model/chat_types.py +65 -0
- dify_oapi/api/chat/v1/model/configure_annotation_reply_request.py +37 -0
- dify_oapi/api/chat/v1/model/configure_annotation_reply_request_body.py +39 -0
- dify_oapi/api/chat/v1/model/configure_annotation_reply_response.py +10 -0
- dify_oapi/api/chat/v1/model/conversation_info.py +57 -0
- dify_oapi/api/chat/v1/model/conversation_variable.py +55 -0
- dify_oapi/api/chat/v1/model/create_annotation_request.py +30 -0
- dify_oapi/api/chat/v1/model/create_annotation_request_body.py +32 -0
- dify_oapi/api/chat/v1/model/create_annotation_response.py +9 -0
- dify_oapi/api/chat/v1/model/delete_annotation_request.py +26 -0
- dify_oapi/api/chat/v1/model/delete_annotation_response.py +7 -0
- dify_oapi/api/{completion/v1/model/feedback → chat/v1/model}/feedback_info.py +29 -7
- dify_oapi/api/{completion/v1/model/file → chat/v1/model}/file_info.py +6 -0
- dify_oapi/api/chat/v1/model/get_annotation_reply_status_request.py +32 -0
- dify_oapi/api/chat/v1/model/get_annotation_reply_status_response.py +11 -0
- dify_oapi/api/chat/v1/model/get_conversation_list_request.py +25 -24
- dify_oapi/api/chat/v1/model/get_conversation_list_response.py +4 -15
- dify_oapi/api/chat/v1/model/get_conversation_variables_request.py +54 -0
- dify_oapi/api/chat/v1/model/get_conversation_variables_response.py +10 -0
- dify_oapi/api/chat/v1/model/get_conversations_request.py +49 -0
- dify_oapi/api/chat/v1/model/get_suggested_questions_request.py +36 -0
- dify_oapi/api/chat/v1/model/{message_suggested_response.py → get_suggested_questions_response.py} +1 -1
- dify_oapi/api/chat/v1/model/list_annotations_request.py +32 -0
- dify_oapi/api/chat/v1/model/list_annotations_response.py +11 -0
- dify_oapi/api/chat/v1/model/message_file.py +46 -0
- dify_oapi/api/chat/v1/model/message_history_request.py +24 -24
- dify_oapi/api/chat/v1/model/message_history_response.py +4 -43
- dify_oapi/api/chat/v1/model/message_info.py +73 -0
- dify_oapi/api/chat/v1/model/pagination_info.py +44 -0
- dify_oapi/api/chat/v1/model/rename_conversation_request_body.py +1 -1
- dify_oapi/api/chat/v1/model/retriever_resource.py +64 -0
- dify_oapi/api/chat/v1/model/site_settings.py +92 -0
- dify_oapi/api/chat/v1/model/text_to_audio_response.py +7 -0
- dify_oapi/api/chat/v1/model/tool_icon.py +52 -0
- dify_oapi/api/chat/v1/model/update_annotation_request.py +34 -0
- dify_oapi/api/chat/v1/model/update_annotation_request_body.py +32 -0
- dify_oapi/api/chat/v1/model/update_annotation_response.py +9 -0
- dify_oapi/api/{completion/v1/model/file → chat/v1/model}/upload_file_request_body.py +9 -3
- dify_oapi/api/chat/v1/model/usage_info.py +84 -0
- dify_oapi/api/chat/v1/resource/__init__.py +1 -4
- dify_oapi/api/chat/v1/resource/annotation.py +87 -0
- dify_oapi/api/chat/v1/resource/chat.py +47 -25
- dify_oapi/api/chat/v1/resource/conversation.py +45 -33
- dify_oapi/api/chat/v1/resource/message.py +22 -20
- dify_oapi/api/chat/v1/version.py +18 -5
- dify_oapi/api/chatflow/__init__.py +0 -0
- dify_oapi/api/chatflow/service.py +8 -0
- dify_oapi/api/chatflow/v1/__init__.py +0 -0
- dify_oapi/api/chatflow/v1/model/__init__.py +0 -0
- dify_oapi/api/chatflow/v1/model/annotation_info.py +43 -0
- dify_oapi/api/chatflow/v1/model/annotation_reply_settings_request.py +37 -0
- dify_oapi/api/chatflow/v1/model/annotation_reply_settings_request_body.py +33 -0
- dify_oapi/api/chatflow/v1/model/annotation_reply_settings_response.py +10 -0
- dify_oapi/api/chatflow/v1/model/annotation_reply_status_request.py +36 -0
- dify_oapi/api/chatflow/v1/model/annotation_reply_status_response.py +11 -0
- dify_oapi/api/chatflow/v1/model/app_info.py +33 -0
- dify_oapi/api/chatflow/v1/model/app_parameters.py +276 -0
- dify_oapi/api/chatflow/v1/model/chat_file.py +40 -0
- dify_oapi/api/chatflow/v1/model/chat_message.py +88 -0
- dify_oapi/api/chatflow/v1/model/chatflow_types.py +210 -0
- dify_oapi/api/chatflow/v1/model/conversation_info.py +53 -0
- dify_oapi/api/chatflow/v1/model/conversation_variable.py +55 -0
- dify_oapi/api/chatflow/v1/model/create_annotation_request.py +30 -0
- dify_oapi/api/chatflow/v1/model/create_annotation_request_body.py +28 -0
- dify_oapi/api/chatflow/v1/model/create_annotation_response.py +9 -0
- dify_oapi/api/chatflow/v1/model/delete_annotation_request.py +28 -0
- dify_oapi/api/chatflow/v1/model/delete_annotation_response.py +7 -0
- dify_oapi/api/chatflow/v1/model/delete_conversation_request.py +36 -0
- dify_oapi/api/chatflow/v1/model/delete_conversation_request_body.py +21 -0
- dify_oapi/api/chatflow/v1/model/delete_conversation_response.py +17 -0
- dify_oapi/api/chatflow/v1/model/feedback_info.py +75 -0
- dify_oapi/api/chatflow/v1/model/file_info.py +53 -0
- dify_oapi/api/chatflow/v1/model/get_annotations_request.py +30 -0
- dify_oapi/api/chatflow/v1/model/get_annotations_response.py +13 -0
- dify_oapi/api/chatflow/v1/model/get_conversation_messages_request.py +38 -0
- dify_oapi/api/chatflow/v1/model/get_conversation_messages_response.py +33 -0
- dify_oapi/api/chatflow/v1/model/get_conversation_variables_request.py +44 -0
- dify_oapi/api/chatflow/v1/model/get_conversation_variables_response.py +33 -0
- dify_oapi/api/chatflow/v1/model/get_conversations_request.py +40 -0
- dify_oapi/api/chatflow/v1/model/get_conversations_response.py +33 -0
- dify_oapi/api/chatflow/v1/model/get_suggested_questions_request.py +32 -0
- dify_oapi/api/{completion/v1/model/feedback/message_feedback_response.py → chatflow/v1/model/get_suggested_questions_response.py} +2 -3
- dify_oapi/api/chatflow/v1/model/rename_conversation_request.py +36 -0
- dify_oapi/api/chatflow/v1/model/rename_conversation_request_body.py +31 -0
- dify_oapi/api/chatflow/v1/model/rename_conversation_response.py +53 -0
- dify_oapi/api/chatflow/v1/model/retriever_resource.py +58 -0
- dify_oapi/api/chatflow/v1/model/send_chat_message_request.py +30 -0
- dify_oapi/api/chatflow/v1/model/send_chat_message_request_body.py +54 -0
- dify_oapi/api/chatflow/v1/model/send_chat_message_response.py +7 -0
- dify_oapi/api/chatflow/v1/model/stop_chat_message_request.py +36 -0
- dify_oapi/api/chatflow/v1/model/stop_chat_message_request_body.py +21 -0
- dify_oapi/api/{dify/v1/model/message_feedback_response.py → chatflow/v1/model/stop_chat_message_response.py} +1 -1
- dify_oapi/api/chatflow/v1/model/tool_icon.py +48 -0
- dify_oapi/api/chatflow/v1/model/update_annotation_request.py +36 -0
- dify_oapi/api/chatflow/v1/model/update_annotation_request_body.py +28 -0
- dify_oapi/api/chatflow/v1/model/update_annotation_response.py +9 -0
- dify_oapi/api/chatflow/v1/model/usage_info.py +78 -0
- dify_oapi/api/chatflow/v1/model/user_input_form.py +141 -0
- dify_oapi/api/chatflow/v1/model/webapp_settings.py +88 -0
- dify_oapi/api/chatflow/v1/resource/__init__.py +0 -0
- dify_oapi/api/chatflow/v1/resource/annotation.py +87 -0
- dify_oapi/api/chatflow/v1/resource/chatflow.py +78 -0
- dify_oapi/api/chatflow/v1/resource/conversation.py +75 -0
- dify_oapi/api/chatflow/v1/version.py +22 -0
- dify_oapi/api/completion/v1/resource/__init__.py +0 -6
- dify_oapi/api/completion/v1/version.py +8 -6
- dify_oapi/api/{chat → dify}/v1/model/audio_to_text_request_body.py +2 -2
- dify_oapi/api/{completion/v1/model/feedback → dify/v1/model}/get_feedbacks_request.py +12 -12
- dify_oapi/api/dify/v1/model/get_feedbacks_response.py +26 -0
- dify_oapi/api/{workflow → dify}/v1/model/get_parameters_request.py +4 -0
- dify_oapi/api/dify/v1/model/{get_parameter_response.py → get_parameters_response.py} +6 -2
- dify_oapi/api/dify/v1/model/get_site_response.py +17 -0
- dify_oapi/api/dify/v1/model/submit_feedback_request.py +34 -0
- dify_oapi/api/dify/v1/model/submit_feedback_request_body.py +35 -0
- dify_oapi/api/dify/v1/model/submit_feedback_response.py +7 -0
- dify_oapi/api/dify/v1/resource/__init__.py +0 -6
- dify_oapi/api/dify/v1/resource/audio.py +12 -0
- dify_oapi/api/dify/v1/resource/feedback.py +31 -0
- dify_oapi/api/dify/v1/resource/info.py +34 -2
- dify_oapi/api/dify/v1/version.py +5 -4
- dify_oapi/api/knowledge/service.py +3 -3
- dify_oapi/api/knowledge/v1/model/create_document_by_file_request.py +1 -3
- dify_oapi/api/knowledge/v1/model/create_document_by_file_request_body.py +4 -46
- dify_oapi/api/knowledge/v1/model/create_document_by_file_request_body_data.py +73 -0
- dify_oapi/api/knowledge/v1/model/data_source_detail.py +23 -0
- dify_oapi/api/knowledge/v1/model/dataset_info.py +10 -9
- dify_oapi/api/knowledge/v1/model/dataset_metadata.py +14 -0
- dify_oapi/api/knowledge/v1/model/document_info.py +18 -6
- dify_oapi/api/knowledge/v1/model/external_knowledge_info.py +11 -1
- dify_oapi/api/knowledge/v1/model/external_retrieval_model.py +13 -0
- dify_oapi/api/knowledge/v1/model/knowledge_types.py +2 -2
- dify_oapi/api/knowledge/v1/model/process_rule.py +0 -6
- dify_oapi/api/knowledge/v1/model/retrieval_model.py +10 -4
- dify_oapi/api/knowledge/v1/model/update_document_by_file_request.py +1 -3
- dify_oapi/api/knowledge/v1/model/update_document_by_file_request_body.py +4 -41
- dify_oapi/api/knowledge/v1/model/update_document_by_file_request_body_data.py +68 -0
- dify_oapi/api/knowledge/v1/model/weights.py +27 -0
- dify_oapi/api/knowledge/v1/resource/__init__.py +0 -8
- dify_oapi/api/workflow/v1/model/chunk_workflow_event.py +74 -0
- dify_oapi/api/workflow/v1/model/input_file_object_workflow.py +76 -0
- dify_oapi/api/workflow/v1/model/node_finished_data.py +118 -0
- dify_oapi/api/workflow/v1/model/node_started_data.py +81 -0
- dify_oapi/api/workflow/v1/model/ping_data.py +28 -0
- dify_oapi/api/workflow/v1/model/run_workflow_request_body.py +1 -1
- dify_oapi/api/workflow/v1/model/text_chunk_data.py +39 -0
- dify_oapi/api/workflow/v1/model/tts_message_data.py +45 -0
- dify_oapi/api/workflow/v1/model/tts_message_end_data.py +45 -0
- dify_oapi/api/workflow/v1/model/workflow_completion_response.py +50 -0
- dify_oapi/api/workflow/v1/model/workflow_finished_data.py +93 -0
- dify_oapi/api/workflow/v1/model/workflow_started_data.py +51 -0
- dify_oapi/api/workflow/v1/model/workflow_types.py +27 -12
- dify_oapi/api/workflow/v1/resource/workflow.py +0 -34
- dify_oapi/api/workflow/v1/version.py +9 -0
- dify_oapi/client.py +49 -4
- dify_oapi/core/http/transport/__init__.py +2 -1
- dify_oapi/core/http/transport/async_transport.py +73 -50
- dify_oapi/core/http/transport/connection_pool.py +131 -0
- dify_oapi/core/http/transport/sync_transport.py +73 -50
- dify_oapi/core/model/config.py +10 -0
- dify_oapi2-1.0.0.dist-info/METADATA +365 -0
- {dify_oapi2-0.4.0.dist-info → dify_oapi2-1.0.0.dist-info}/RECORD +174 -98
- dify_oapi/api/chat/v1/model/chat_request_file.py +0 -46
- dify_oapi/api/chat/v1/model/message_suggested_request.py +0 -36
- dify_oapi/api/chat/v1/resource/audio.py +0 -17
- dify_oapi/api/completion/v1/model/audio/audio_info.py +0 -28
- dify_oapi/api/completion/v1/model/audio/text_to_audio_request.py +0 -32
- dify_oapi/api/completion/v1/model/audio/text_to_audio_request_body.py +0 -33
- dify_oapi/api/completion/v1/model/audio/text_to_audio_response.py +0 -9
- dify_oapi/api/completion/v1/model/feedback/get_feedbacks_response.py +0 -9
- dify_oapi/api/completion/v1/model/feedback/message_feedback_request.py +0 -38
- dify_oapi/api/completion/v1/model/feedback/message_feedback_request_body.py +0 -35
- dify_oapi/api/completion/v1/model/file/upload_file_request.py +0 -42
- dify_oapi/api/completion/v1/model/file/upload_file_response.py +0 -9
- dify_oapi/api/completion/v1/model/info/feature_config.py +0 -91
- dify_oapi/api/completion/v1/model/info/file_upload_config.py +0 -23
- dify_oapi/api/completion/v1/model/info/get_info_request.py +0 -24
- dify_oapi/api/completion/v1/model/info/get_info_response.py +0 -9
- dify_oapi/api/completion/v1/model/info/get_parameters_request.py +0 -24
- dify_oapi/api/completion/v1/model/info/get_parameters_response.py +0 -9
- dify_oapi/api/completion/v1/model/info/get_site_response.py +0 -9
- dify_oapi/api/completion/v1/model/info/parameters_info.py +0 -75
- dify_oapi/api/completion/v1/model/info/site_info.py +0 -90
- dify_oapi/api/completion/v1/model/info/system_parameters.py +0 -38
- dify_oapi/api/completion/v1/model/info/user_input_form.py +0 -158
- dify_oapi/api/completion/v1/resource/audio.py +0 -19
- dify_oapi/api/completion/v1/resource/feedback.py +0 -33
- dify_oapi/api/completion/v1/resource/file.py +0 -19
- dify_oapi/api/completion/v1/resource/info.py +0 -39
- dify_oapi/api/dify/v1/model/get_parameter_request.py +0 -30
- dify_oapi/api/dify/v1/model/message_feedback_request.py +0 -38
- dify_oapi/api/dify/v1/model/message_feedback_request_body.py +0 -30
- dify_oapi/api/dify/v1/resource/message.py +0 -21
- dify_oapi/api/dify/v1/resource/meta.py +0 -17
- dify_oapi/api/dify/v1/resource/parameter.py +0 -19
- dify_oapi/api/workflow/v1/model/get_info_request.py +0 -24
- dify_oapi/api/workflow/v1/model/get_info_response.py +0 -9
- dify_oapi/api/workflow/v1/model/get_parameters_response.py +0 -9
- dify_oapi/api/workflow/v1/model/get_site_request.py +0 -24
- dify_oapi/api/workflow/v1/model/get_site_response.py +0 -9
- dify_oapi/api/workflow/v1/model/upload_file_request.py +0 -42
- dify_oapi/api/workflow/v1/model/upload_file_response.py +0 -9
- dify_oapi2-0.4.0.dist-info/METADATA +0 -303
- /dify_oapi/api/{chat → dify}/v1/model/audio_to_text_request.py +0 -0
- /dify_oapi/api/{chat → dify}/v1/model/audio_to_text_response.py +0 -0
- /dify_oapi/api/{completion/v1/model/info → dify/v1/model}/get_site_request.py +0 -0
- {dify_oapi2-0.4.0.dist-info → dify_oapi2-1.0.0.dist-info}/LICENSE +0 -0
- {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[
|
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[
|
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:
|
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:
|
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
|
-
|
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 .
|
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
|
-
|
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
|
39
|
-
self._update_document_by_file_request_body.
|
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
|
@@ -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 =
|
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
|