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
@@ -0,0 +1,276 @@
|
|
1
|
+
from pydantic import BaseModel
|
2
|
+
|
3
|
+
from .chatflow_types import AutoPlay, TransferMethod
|
4
|
+
from .user_input_form import UserInputFormItem
|
5
|
+
|
6
|
+
|
7
|
+
class SuggestedQuestionsAfterAnswer(BaseModel):
|
8
|
+
enabled: bool
|
9
|
+
|
10
|
+
@staticmethod
|
11
|
+
def builder() -> "SuggestedQuestionsAfterAnswerBuilder":
|
12
|
+
return SuggestedQuestionsAfterAnswerBuilder()
|
13
|
+
|
14
|
+
|
15
|
+
class SuggestedQuestionsAfterAnswerBuilder:
|
16
|
+
def __init__(self):
|
17
|
+
self._suggested_questions_after_answer = SuggestedQuestionsAfterAnswer(enabled=False)
|
18
|
+
|
19
|
+
def build(self) -> SuggestedQuestionsAfterAnswer:
|
20
|
+
return self._suggested_questions_after_answer
|
21
|
+
|
22
|
+
def enabled(self, enabled: bool) -> "SuggestedQuestionsAfterAnswerBuilder":
|
23
|
+
self._suggested_questions_after_answer.enabled = enabled
|
24
|
+
return self
|
25
|
+
|
26
|
+
|
27
|
+
class SpeechToText(BaseModel):
|
28
|
+
enabled: bool
|
29
|
+
|
30
|
+
@staticmethod
|
31
|
+
def builder() -> "SpeechToTextBuilder":
|
32
|
+
return SpeechToTextBuilder()
|
33
|
+
|
34
|
+
|
35
|
+
class SpeechToTextBuilder:
|
36
|
+
def __init__(self):
|
37
|
+
self._speech_to_text = SpeechToText(enabled=False)
|
38
|
+
|
39
|
+
def build(self) -> SpeechToText:
|
40
|
+
return self._speech_to_text
|
41
|
+
|
42
|
+
def enabled(self, enabled: bool) -> "SpeechToTextBuilder":
|
43
|
+
self._speech_to_text.enabled = enabled
|
44
|
+
return self
|
45
|
+
|
46
|
+
|
47
|
+
class TextToSpeech(BaseModel):
|
48
|
+
enabled: bool
|
49
|
+
voice: str | None = None
|
50
|
+
language: str | None = None
|
51
|
+
auto_play: AutoPlay | None = None
|
52
|
+
|
53
|
+
@staticmethod
|
54
|
+
def builder() -> "TextToSpeechBuilder":
|
55
|
+
return TextToSpeechBuilder()
|
56
|
+
|
57
|
+
|
58
|
+
class TextToSpeechBuilder:
|
59
|
+
def __init__(self):
|
60
|
+
self._text_to_speech = TextToSpeech(enabled=False)
|
61
|
+
|
62
|
+
def build(self) -> TextToSpeech:
|
63
|
+
return self._text_to_speech
|
64
|
+
|
65
|
+
def enabled(self, enabled: bool) -> "TextToSpeechBuilder":
|
66
|
+
self._text_to_speech.enabled = enabled
|
67
|
+
return self
|
68
|
+
|
69
|
+
def voice(self, voice: str) -> "TextToSpeechBuilder":
|
70
|
+
self._text_to_speech.voice = voice
|
71
|
+
return self
|
72
|
+
|
73
|
+
def language(self, language: str) -> "TextToSpeechBuilder":
|
74
|
+
self._text_to_speech.language = language
|
75
|
+
return self
|
76
|
+
|
77
|
+
def auto_play(self, auto_play: AutoPlay) -> "TextToSpeechBuilder":
|
78
|
+
self._text_to_speech.auto_play = auto_play
|
79
|
+
return self
|
80
|
+
|
81
|
+
|
82
|
+
class RetrieverResource(BaseModel):
|
83
|
+
enabled: bool
|
84
|
+
|
85
|
+
@staticmethod
|
86
|
+
def builder() -> "RetrieverResourceBuilder":
|
87
|
+
return RetrieverResourceBuilder()
|
88
|
+
|
89
|
+
|
90
|
+
class RetrieverResourceBuilder:
|
91
|
+
def __init__(self):
|
92
|
+
self._retriever_resource = RetrieverResource(enabled=False)
|
93
|
+
|
94
|
+
def build(self) -> RetrieverResource:
|
95
|
+
return self._retriever_resource
|
96
|
+
|
97
|
+
def enabled(self, enabled: bool) -> "RetrieverResourceBuilder":
|
98
|
+
self._retriever_resource.enabled = enabled
|
99
|
+
return self
|
100
|
+
|
101
|
+
|
102
|
+
class AnnotationReply(BaseModel):
|
103
|
+
enabled: bool
|
104
|
+
|
105
|
+
@staticmethod
|
106
|
+
def builder() -> "AnnotationReplyBuilder":
|
107
|
+
return AnnotationReplyBuilder()
|
108
|
+
|
109
|
+
|
110
|
+
class AnnotationReplyBuilder:
|
111
|
+
def __init__(self):
|
112
|
+
self._annotation_reply = AnnotationReply(enabled=False)
|
113
|
+
|
114
|
+
def build(self) -> AnnotationReply:
|
115
|
+
return self._annotation_reply
|
116
|
+
|
117
|
+
def enabled(self, enabled: bool) -> "AnnotationReplyBuilder":
|
118
|
+
self._annotation_reply.enabled = enabled
|
119
|
+
return self
|
120
|
+
|
121
|
+
|
122
|
+
class ImageUpload(BaseModel):
|
123
|
+
enabled: bool
|
124
|
+
number_limits: int | None = None
|
125
|
+
detail: str | None = None
|
126
|
+
transfer_methods: list[TransferMethod] | None = None
|
127
|
+
|
128
|
+
@staticmethod
|
129
|
+
def builder() -> "ImageUploadBuilder":
|
130
|
+
return ImageUploadBuilder()
|
131
|
+
|
132
|
+
|
133
|
+
class ImageUploadBuilder:
|
134
|
+
def __init__(self):
|
135
|
+
self._image_upload = ImageUpload(enabled=False)
|
136
|
+
|
137
|
+
def build(self) -> ImageUpload:
|
138
|
+
return self._image_upload
|
139
|
+
|
140
|
+
def enabled(self, enabled: bool) -> "ImageUploadBuilder":
|
141
|
+
self._image_upload.enabled = enabled
|
142
|
+
return self
|
143
|
+
|
144
|
+
def number_limits(self, number_limits: int) -> "ImageUploadBuilder":
|
145
|
+
self._image_upload.number_limits = number_limits
|
146
|
+
return self
|
147
|
+
|
148
|
+
def detail(self, detail: str) -> "ImageUploadBuilder":
|
149
|
+
self._image_upload.detail = detail
|
150
|
+
return self
|
151
|
+
|
152
|
+
def transfer_methods(self, transfer_methods: list[TransferMethod]) -> "ImageUploadBuilder":
|
153
|
+
self._image_upload.transfer_methods = transfer_methods
|
154
|
+
return self
|
155
|
+
|
156
|
+
|
157
|
+
class FileUpload(BaseModel):
|
158
|
+
image: ImageUpload | None = None
|
159
|
+
|
160
|
+
@staticmethod
|
161
|
+
def builder() -> "FileUploadBuilder":
|
162
|
+
return FileUploadBuilder()
|
163
|
+
|
164
|
+
|
165
|
+
class FileUploadBuilder:
|
166
|
+
def __init__(self):
|
167
|
+
self._file_upload = FileUpload()
|
168
|
+
|
169
|
+
def build(self) -> FileUpload:
|
170
|
+
return self._file_upload
|
171
|
+
|
172
|
+
def image(self, image: ImageUpload) -> "FileUploadBuilder":
|
173
|
+
self._file_upload.image = image
|
174
|
+
return self
|
175
|
+
|
176
|
+
|
177
|
+
class SystemParameters(BaseModel):
|
178
|
+
file_size_limit: int | None = None
|
179
|
+
image_file_size_limit: int | None = None
|
180
|
+
audio_file_size_limit: int | None = None
|
181
|
+
video_file_size_limit: int | None = None
|
182
|
+
|
183
|
+
@staticmethod
|
184
|
+
def builder() -> "SystemParametersBuilder":
|
185
|
+
return SystemParametersBuilder()
|
186
|
+
|
187
|
+
|
188
|
+
class SystemParametersBuilder:
|
189
|
+
def __init__(self):
|
190
|
+
self._system_parameters = SystemParameters()
|
191
|
+
|
192
|
+
def build(self) -> SystemParameters:
|
193
|
+
return self._system_parameters
|
194
|
+
|
195
|
+
def file_size_limit(self, file_size_limit: int) -> "SystemParametersBuilder":
|
196
|
+
self._system_parameters.file_size_limit = file_size_limit
|
197
|
+
return self
|
198
|
+
|
199
|
+
def image_file_size_limit(self, image_file_size_limit: int) -> "SystemParametersBuilder":
|
200
|
+
self._system_parameters.image_file_size_limit = image_file_size_limit
|
201
|
+
return self
|
202
|
+
|
203
|
+
def audio_file_size_limit(self, audio_file_size_limit: int) -> "SystemParametersBuilder":
|
204
|
+
self._system_parameters.audio_file_size_limit = audio_file_size_limit
|
205
|
+
return self
|
206
|
+
|
207
|
+
def video_file_size_limit(self, video_file_size_limit: int) -> "SystemParametersBuilder":
|
208
|
+
self._system_parameters.video_file_size_limit = video_file_size_limit
|
209
|
+
return self
|
210
|
+
|
211
|
+
|
212
|
+
class AppParameters(BaseModel):
|
213
|
+
opening_statement: str | None = None
|
214
|
+
suggested_questions: list[str] | None = None
|
215
|
+
suggested_questions_after_answer: SuggestedQuestionsAfterAnswer | None = None
|
216
|
+
speech_to_text: SpeechToText | None = None
|
217
|
+
text_to_speech: TextToSpeech | None = None
|
218
|
+
retriever_resource: RetrieverResource | None = None
|
219
|
+
annotation_reply: AnnotationReply | None = None
|
220
|
+
user_input_form: list[UserInputFormItem] | None = None
|
221
|
+
file_upload: FileUpload | None = None
|
222
|
+
system_parameters: SystemParameters | None = None
|
223
|
+
|
224
|
+
@staticmethod
|
225
|
+
def builder() -> "AppParametersBuilder":
|
226
|
+
return AppParametersBuilder()
|
227
|
+
|
228
|
+
|
229
|
+
class AppParametersBuilder:
|
230
|
+
def __init__(self):
|
231
|
+
self._app_parameters = AppParameters()
|
232
|
+
|
233
|
+
def build(self) -> AppParameters:
|
234
|
+
return self._app_parameters
|
235
|
+
|
236
|
+
def opening_statement(self, opening_statement: str) -> "AppParametersBuilder":
|
237
|
+
self._app_parameters.opening_statement = opening_statement
|
238
|
+
return self
|
239
|
+
|
240
|
+
def suggested_questions(self, suggested_questions: list[str]) -> "AppParametersBuilder":
|
241
|
+
self._app_parameters.suggested_questions = suggested_questions
|
242
|
+
return self
|
243
|
+
|
244
|
+
def suggested_questions_after_answer(
|
245
|
+
self, suggested_questions_after_answer: SuggestedQuestionsAfterAnswer
|
246
|
+
) -> "AppParametersBuilder":
|
247
|
+
self._app_parameters.suggested_questions_after_answer = suggested_questions_after_answer
|
248
|
+
return self
|
249
|
+
|
250
|
+
def speech_to_text(self, speech_to_text: SpeechToText) -> "AppParametersBuilder":
|
251
|
+
self._app_parameters.speech_to_text = speech_to_text
|
252
|
+
return self
|
253
|
+
|
254
|
+
def text_to_speech(self, text_to_speech: TextToSpeech) -> "AppParametersBuilder":
|
255
|
+
self._app_parameters.text_to_speech = text_to_speech
|
256
|
+
return self
|
257
|
+
|
258
|
+
def retriever_resource(self, retriever_resource: RetrieverResource) -> "AppParametersBuilder":
|
259
|
+
self._app_parameters.retriever_resource = retriever_resource
|
260
|
+
return self
|
261
|
+
|
262
|
+
def annotation_reply(self, annotation_reply: AnnotationReply) -> "AppParametersBuilder":
|
263
|
+
self._app_parameters.annotation_reply = annotation_reply
|
264
|
+
return self
|
265
|
+
|
266
|
+
def user_input_form(self, user_input_form: list[UserInputFormItem]) -> "AppParametersBuilder":
|
267
|
+
self._app_parameters.user_input_form = user_input_form
|
268
|
+
return self
|
269
|
+
|
270
|
+
def file_upload(self, file_upload: FileUpload) -> "AppParametersBuilder":
|
271
|
+
self._app_parameters.file_upload = file_upload
|
272
|
+
return self
|
273
|
+
|
274
|
+
def system_parameters(self, system_parameters: SystemParameters) -> "AppParametersBuilder":
|
275
|
+
self._app_parameters.system_parameters = system_parameters
|
276
|
+
return self
|
@@ -0,0 +1,40 @@
|
|
1
|
+
from pydantic import BaseModel
|
2
|
+
|
3
|
+
from .chatflow_types import FileType, TransferMethod
|
4
|
+
|
5
|
+
|
6
|
+
class ChatFile(BaseModel):
|
7
|
+
"""File attachment model for chat messages."""
|
8
|
+
|
9
|
+
type: FileType | None = None
|
10
|
+
transfer_method: TransferMethod | None = None
|
11
|
+
url: str | None = None
|
12
|
+
upload_file_id: str | None = None
|
13
|
+
|
14
|
+
@staticmethod
|
15
|
+
def builder() -> "ChatFileBuilder":
|
16
|
+
return ChatFileBuilder()
|
17
|
+
|
18
|
+
|
19
|
+
class ChatFileBuilder:
|
20
|
+
def __init__(self):
|
21
|
+
self._chat_file = ChatFile()
|
22
|
+
|
23
|
+
def build(self) -> ChatFile:
|
24
|
+
return self._chat_file
|
25
|
+
|
26
|
+
def type(self, type: FileType) -> "ChatFileBuilder":
|
27
|
+
self._chat_file.type = type
|
28
|
+
return self
|
29
|
+
|
30
|
+
def transfer_method(self, transfer_method: TransferMethod) -> "ChatFileBuilder":
|
31
|
+
self._chat_file.transfer_method = transfer_method
|
32
|
+
return self
|
33
|
+
|
34
|
+
def url(self, url: str) -> "ChatFileBuilder":
|
35
|
+
self._chat_file.url = url
|
36
|
+
return self
|
37
|
+
|
38
|
+
def upload_file_id(self, upload_file_id: str) -> "ChatFileBuilder":
|
39
|
+
self._chat_file.upload_file_id = upload_file_id
|
40
|
+
return self
|
@@ -0,0 +1,88 @@
|
|
1
|
+
from __future__ import annotations
|
2
|
+
|
3
|
+
from typing import TYPE_CHECKING
|
4
|
+
|
5
|
+
from pydantic import BaseModel
|
6
|
+
|
7
|
+
from .chatflow_types import FeedbackRating, MessageFileBelongsTo
|
8
|
+
from .retriever_resource import RetrieverResource
|
9
|
+
|
10
|
+
if TYPE_CHECKING:
|
11
|
+
pass
|
12
|
+
|
13
|
+
|
14
|
+
class MessageFile(BaseModel):
|
15
|
+
"""Message file attachment model."""
|
16
|
+
|
17
|
+
id: str | None = None
|
18
|
+
type: str | None = None
|
19
|
+
url: str | None = None
|
20
|
+
belongs_to: MessageFileBelongsTo | None = None
|
21
|
+
|
22
|
+
|
23
|
+
class MessageFeedback(BaseModel):
|
24
|
+
"""Message feedback model."""
|
25
|
+
|
26
|
+
rating: FeedbackRating | None = None
|
27
|
+
|
28
|
+
|
29
|
+
class ChatMessage(BaseModel):
|
30
|
+
"""Core chat message model."""
|
31
|
+
|
32
|
+
id: str | None = None
|
33
|
+
conversation_id: str | None = None
|
34
|
+
inputs: dict[str, str] | None = None
|
35
|
+
query: str | None = None
|
36
|
+
answer: str | None = None
|
37
|
+
message_files: list[MessageFile] | None = None
|
38
|
+
feedback: MessageFeedback | None = None
|
39
|
+
retriever_resources: list[RetrieverResource] | None = None
|
40
|
+
created_at: int | None = None
|
41
|
+
|
42
|
+
@staticmethod
|
43
|
+
def builder() -> ChatMessageBuilder:
|
44
|
+
return ChatMessageBuilder()
|
45
|
+
|
46
|
+
|
47
|
+
class ChatMessageBuilder:
|
48
|
+
def __init__(self):
|
49
|
+
self._chat_message = ChatMessage()
|
50
|
+
|
51
|
+
def build(self) -> ChatMessage:
|
52
|
+
return self._chat_message
|
53
|
+
|
54
|
+
def id(self, id: str) -> ChatMessageBuilder:
|
55
|
+
self._chat_message.id = id
|
56
|
+
return self
|
57
|
+
|
58
|
+
def conversation_id(self, conversation_id: str) -> ChatMessageBuilder:
|
59
|
+
self._chat_message.conversation_id = conversation_id
|
60
|
+
return self
|
61
|
+
|
62
|
+
def inputs(self, inputs: dict[str, str]) -> ChatMessageBuilder:
|
63
|
+
self._chat_message.inputs = inputs
|
64
|
+
return self
|
65
|
+
|
66
|
+
def query(self, query: str) -> ChatMessageBuilder:
|
67
|
+
self._chat_message.query = query
|
68
|
+
return self
|
69
|
+
|
70
|
+
def answer(self, answer: str) -> ChatMessageBuilder:
|
71
|
+
self._chat_message.answer = answer
|
72
|
+
return self
|
73
|
+
|
74
|
+
def message_files(self, message_files: list[MessageFile]) -> ChatMessageBuilder:
|
75
|
+
self._chat_message.message_files = message_files
|
76
|
+
return self
|
77
|
+
|
78
|
+
def feedback(self, feedback: MessageFeedback) -> ChatMessageBuilder:
|
79
|
+
self._chat_message.feedback = feedback
|
80
|
+
return self
|
81
|
+
|
82
|
+
def retriever_resources(self, retriever_resources: list[RetrieverResource]) -> ChatMessageBuilder:
|
83
|
+
self._chat_message.retriever_resources = retriever_resources
|
84
|
+
return self
|
85
|
+
|
86
|
+
def created_at(self, created_at: int) -> ChatMessageBuilder:
|
87
|
+
self._chat_message.created_at = created_at
|
88
|
+
return self
|
@@ -0,0 +1,210 @@
|
|
1
|
+
"""Strict type definitions for all Chatflow API enums and constants.
|
2
|
+
|
3
|
+
This module defines all Literal types used throughout the Chatflow API
|
4
|
+
to ensure type safety and prevent invalid values.
|
5
|
+
"""
|
6
|
+
|
7
|
+
from typing import Literal
|
8
|
+
|
9
|
+
# Response mode types for chat messages
|
10
|
+
ResponseMode = Literal["streaming", "blocking"]
|
11
|
+
"""Response mode for chat messages.
|
12
|
+
- streaming: Real-time streaming response
|
13
|
+
- blocking: Complete response after processing (Cloudflare timeout is 100s)
|
14
|
+
"""
|
15
|
+
|
16
|
+
# File types for file attachments
|
17
|
+
FileType = Literal["document", "image", "audio", "video", "custom"]
|
18
|
+
"""File type for attachments.
|
19
|
+
- document: TXT, MD, PDF, HTML, XLSX, DOCX, CSV, EML, MSG, PPTX, XML, EPUB
|
20
|
+
- image: JPG, PNG, GIF, WEBP, SVG
|
21
|
+
- audio: MP3, M4A, WAV, WEBM, AMR
|
22
|
+
- video: MP4, MOV, MPEG, MPGA
|
23
|
+
- custom: Custom file type
|
24
|
+
"""
|
25
|
+
|
26
|
+
# Transfer method types for file handling
|
27
|
+
TransferMethod = Literal["remote_url", "local_file"]
|
28
|
+
"""Transfer method for file handling.
|
29
|
+
- remote_url: File URL for remote files
|
30
|
+
- local_file: File upload for local files
|
31
|
+
"""
|
32
|
+
|
33
|
+
# Stream event types for real-time responses
|
34
|
+
StreamEvent = Literal[
|
35
|
+
"message",
|
36
|
+
"message_file",
|
37
|
+
"message_end",
|
38
|
+
"tts_message",
|
39
|
+
"tts_message_end",
|
40
|
+
"message_replace",
|
41
|
+
"workflow_started",
|
42
|
+
"node_started",
|
43
|
+
"node_finished",
|
44
|
+
"workflow_finished",
|
45
|
+
"error",
|
46
|
+
"ping",
|
47
|
+
]
|
48
|
+
"""Stream event types for real-time chat responses.
|
49
|
+
- message: Chat message content chunk
|
50
|
+
- message_file: File attachment information
|
51
|
+
- message_end: End of message with metadata
|
52
|
+
- tts_message: Text-to-speech audio chunk (Base64 encoded)
|
53
|
+
- tts_message_end: End of TTS conversion
|
54
|
+
- message_replace: Replace previous message content
|
55
|
+
- workflow_started: Workflow execution started
|
56
|
+
- node_started: Workflow node execution started
|
57
|
+
- node_finished: Workflow node execution finished
|
58
|
+
- workflow_finished: Workflow execution completed
|
59
|
+
- error: Error occurred during processing
|
60
|
+
- ping: Keep-alive ping
|
61
|
+
"""
|
62
|
+
|
63
|
+
# Message file belongs to types
|
64
|
+
MessageFileBelongsTo = Literal["user", "assistant"]
|
65
|
+
"""Message file ownership.
|
66
|
+
- user: File belongs to user
|
67
|
+
- assistant: File belongs to assistant
|
68
|
+
"""
|
69
|
+
|
70
|
+
# Feedback rating types
|
71
|
+
FeedbackRating = Literal["like", "dislike"]
|
72
|
+
"""Feedback rating types.
|
73
|
+
- like: Positive feedback
|
74
|
+
- dislike: Negative feedback
|
75
|
+
"""
|
76
|
+
|
77
|
+
# Sort by types for conversation listing
|
78
|
+
SortBy = Literal["created_at", "-created_at", "updated_at", "-updated_at"]
|
79
|
+
"""Sort by options for conversation listing.
|
80
|
+
- created_at: Sort by creation time (ascending)
|
81
|
+
- -created_at: Sort by creation time (descending)
|
82
|
+
- updated_at: Sort by update time (ascending)
|
83
|
+
- -updated_at: Sort by update time (descending)
|
84
|
+
"""
|
85
|
+
|
86
|
+
# Conversation status types
|
87
|
+
ConversationStatus = Literal["normal", "archived"]
|
88
|
+
"""Conversation status types.
|
89
|
+
- normal: Active conversation
|
90
|
+
- archived: Archived conversation
|
91
|
+
"""
|
92
|
+
|
93
|
+
# Variable value types
|
94
|
+
VariableValueType = Literal["string", "number", "select"]
|
95
|
+
"""Variable value types for conversation variables.
|
96
|
+
- string: String value
|
97
|
+
- number: Numeric value
|
98
|
+
- select: Selection value
|
99
|
+
"""
|
100
|
+
|
101
|
+
# Form input types for user input forms
|
102
|
+
FormInputType = Literal["text-input", "paragraph", "select"]
|
103
|
+
"""Form input types for user input forms.
|
104
|
+
- text-input: Single line text input
|
105
|
+
- paragraph: Multi-line text input
|
106
|
+
- select: Selection dropdown
|
107
|
+
"""
|
108
|
+
|
109
|
+
# Job status types for annotation operations
|
110
|
+
JobStatus = Literal["waiting", "running", "completed", "failed"]
|
111
|
+
"""Job status types for annotation operations.
|
112
|
+
- waiting: Job is waiting to start
|
113
|
+
- running: Job is currently running
|
114
|
+
- completed: Job completed successfully
|
115
|
+
- failed: Job failed with error
|
116
|
+
"""
|
117
|
+
|
118
|
+
# Audio format types for TTS operations
|
119
|
+
AudioFormat = Literal["mp3", "mp4", "mpeg", "mpga", "m4a", "wav", "webm"]
|
120
|
+
"""Audio format types for TTS operations.
|
121
|
+
- mp3: MP3 audio format
|
122
|
+
- mp4: MP4 audio format
|
123
|
+
- mpeg: MPEG audio format
|
124
|
+
- mpga: MPGA audio format
|
125
|
+
- m4a: M4A audio format
|
126
|
+
- wav: WAV audio format
|
127
|
+
- webm: WebM audio format
|
128
|
+
"""
|
129
|
+
|
130
|
+
# Language codes for internationalization
|
131
|
+
LanguageCode = Literal["en", "zh", "ja", "ko", "es", "fr", "de", "it", "pt", "ru"]
|
132
|
+
"""Language codes for internationalization.
|
133
|
+
- en: English
|
134
|
+
- zh: Chinese
|
135
|
+
- ja: Japanese
|
136
|
+
- ko: Korean
|
137
|
+
- es: Spanish
|
138
|
+
- fr: French
|
139
|
+
- de: German
|
140
|
+
- it: Italian
|
141
|
+
- pt: Portuguese
|
142
|
+
- ru: Russian
|
143
|
+
"""
|
144
|
+
|
145
|
+
# Chat color theme types
|
146
|
+
ChatColorTheme = Literal["blue", "green", "purple", "orange", "red"]
|
147
|
+
"""Chat color theme types for UI customization.
|
148
|
+
- blue: Blue theme
|
149
|
+
- green: Green theme
|
150
|
+
- purple: Purple theme
|
151
|
+
- orange: Orange theme
|
152
|
+
- red: Red theme
|
153
|
+
"""
|
154
|
+
|
155
|
+
# Default language types for application settings
|
156
|
+
DefaultLanguage = Literal[
|
157
|
+
"en-US", "zh-Hans", "zh-Hant", "ja-JP", "ko-KR", "es-ES", "fr-FR", "de-DE", "it-IT", "pt-BR", "ru-RU"
|
158
|
+
]
|
159
|
+
"""Default language types for application settings.
|
160
|
+
- en-US: English (United States)
|
161
|
+
- zh-Hans: Chinese (Simplified)
|
162
|
+
- zh-Hant: Chinese (Traditional)
|
163
|
+
- ja-JP: Japanese (Japan)
|
164
|
+
- ko-KR: Korean (Korea)
|
165
|
+
- es-ES: Spanish (Spain)
|
166
|
+
- fr-FR: French (France)
|
167
|
+
- de-DE: German (Germany)
|
168
|
+
- it-IT: Italian (Italy)
|
169
|
+
- pt-BR: Portuguese (Brazil)
|
170
|
+
- ru-RU: Russian (Russia)
|
171
|
+
"""
|
172
|
+
|
173
|
+
# Icon types for application settings
|
174
|
+
IconType = Literal["emoji", "image"]
|
175
|
+
"""Icon types for application settings.
|
176
|
+
- emoji: Emoji icon
|
177
|
+
- image: Image icon
|
178
|
+
"""
|
179
|
+
|
180
|
+
# AutoPlay types for TTS settings
|
181
|
+
AutoPlay = Literal["enabled", "disabled"]
|
182
|
+
"""AutoPlay types for TTS settings.
|
183
|
+
- enabled: Auto-play enabled
|
184
|
+
- disabled: Auto-play disabled
|
185
|
+
"""
|
186
|
+
|
187
|
+
# Annotation action types
|
188
|
+
AnnotationAction = Literal["enable", "disable"]
|
189
|
+
"""Annotation action types for reply settings.
|
190
|
+
- enable: Enable annotation reply
|
191
|
+
- disable: Disable annotation reply
|
192
|
+
"""
|
193
|
+
|
194
|
+
# Node status types for workflow operations
|
195
|
+
NodeStatus = Literal["running", "succeeded", "failed", "stopped"]
|
196
|
+
"""Node status types for workflow operations.
|
197
|
+
- running: Node is currently running
|
198
|
+
- succeeded: Node completed successfully
|
199
|
+
- failed: Node failed with error
|
200
|
+
- stopped: Node was stopped
|
201
|
+
"""
|
202
|
+
|
203
|
+
# Workflow status types
|
204
|
+
WorkflowStatus = Literal["running", "succeeded", "failed", "stopped"]
|
205
|
+
"""Workflow status types.
|
206
|
+
- running: Workflow is currently running
|
207
|
+
- succeeded: Workflow completed successfully
|
208
|
+
- failed: Workflow failed with error
|
209
|
+
- stopped: Workflow was stopped
|
210
|
+
"""
|
@@ -0,0 +1,53 @@
|
|
1
|
+
from pydantic import BaseModel
|
2
|
+
|
3
|
+
|
4
|
+
class ConversationInfo(BaseModel):
|
5
|
+
"""Conversation information model."""
|
6
|
+
|
7
|
+
id: str | None = None
|
8
|
+
name: str | None = None
|
9
|
+
inputs: dict[str, str] | None = None
|
10
|
+
status: str | None = None
|
11
|
+
introduction: str | None = None
|
12
|
+
created_at: int | None = None
|
13
|
+
updated_at: int | None = None
|
14
|
+
|
15
|
+
@staticmethod
|
16
|
+
def builder() -> "ConversationInfoBuilder":
|
17
|
+
return ConversationInfoBuilder()
|
18
|
+
|
19
|
+
|
20
|
+
class ConversationInfoBuilder:
|
21
|
+
def __init__(self):
|
22
|
+
self._conversation_info = ConversationInfo()
|
23
|
+
|
24
|
+
def build(self) -> ConversationInfo:
|
25
|
+
return self._conversation_info
|
26
|
+
|
27
|
+
def id(self, id: str) -> "ConversationInfoBuilder":
|
28
|
+
self._conversation_info.id = id
|
29
|
+
return self
|
30
|
+
|
31
|
+
def name(self, name: str) -> "ConversationInfoBuilder":
|
32
|
+
self._conversation_info.name = name
|
33
|
+
return self
|
34
|
+
|
35
|
+
def inputs(self, inputs: dict[str, str]) -> "ConversationInfoBuilder":
|
36
|
+
self._conversation_info.inputs = inputs
|
37
|
+
return self
|
38
|
+
|
39
|
+
def status(self, status: str) -> "ConversationInfoBuilder":
|
40
|
+
self._conversation_info.status = status
|
41
|
+
return self
|
42
|
+
|
43
|
+
def introduction(self, introduction: str) -> "ConversationInfoBuilder":
|
44
|
+
self._conversation_info.introduction = introduction
|
45
|
+
return self
|
46
|
+
|
47
|
+
def created_at(self, created_at: int) -> "ConversationInfoBuilder":
|
48
|
+
self._conversation_info.created_at = created_at
|
49
|
+
return self
|
50
|
+
|
51
|
+
def updated_at(self, updated_at: int) -> "ConversationInfoBuilder":
|
52
|
+
self._conversation_info.updated_at = updated_at
|
53
|
+
return self
|