dify-oapi2 0.3.0__py3-none-any.whl → 0.5.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/chat/v1/model/app_info.py +35 -0
- dify_oapi/api/chat/v1/model/app_parameters.py +494 -0
- dify_oapi/api/chat/v1/model/audio_to_text_request_body.py +2 -2
- 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 +12 -2
- dify_oapi/api/chat/v1/model/chat_types.py +65 -0
- dify_oapi/api/chat/v1/model/configure_annotation_reply_request.py +36 -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 +29 -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/chat/v1/model/feedback_info.py +75 -0
- dify_oapi/api/{workflow/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_app_info_request.py +24 -0
- dify_oapi/api/chat/v1/model/get_app_info_response.py +9 -0
- dify_oapi/api/chat/v1/model/get_app_meta_request.py +24 -0
- dify_oapi/api/chat/v1/model/get_app_meta_response.py +9 -0
- dify_oapi/api/chat/v1/model/get_app_parameters_request.py +28 -0
- dify_oapi/api/chat/v1/model/get_app_parameters_response.py +9 -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_feedbacks_request.py +32 -0
- dify_oapi/api/chat/v1/model/get_feedbacks_response.py +7 -0
- dify_oapi/api/chat/v1/model/get_site_settings_request.py +24 -0
- dify_oapi/api/chat/v1/model/get_site_settings_response.py +9 -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/submit_feedback_request.py +34 -0
- dify_oapi/api/chat/v1/model/submit_feedback_request_body.py +33 -0
- dify_oapi/api/chat/v1/model/submit_feedback_response.py +5 -0
- dify_oapi/api/chat/v1/model/text_to_audio_request.py +32 -0
- dify_oapi/api/chat/v1/model/text_to_audio_request_body.py +33 -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 +33 -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/chat/v1/model/upload_file_request.py +54 -0
- dify_oapi/api/chat/v1/model/upload_file_request_body.py +29 -0
- dify_oapi/api/chat/v1/model/upload_file_response.py +10 -0
- dify_oapi/api/chat/v1/model/usage_info.py +84 -0
- dify_oapi/api/chat/v1/resource/__init__.py +7 -3
- dify_oapi/api/chat/v1/resource/annotation.py +77 -0
- dify_oapi/api/chat/v1/resource/app.py +47 -0
- dify_oapi/api/chat/v1/resource/audio.py +13 -0
- dify_oapi/api/chat/v1/resource/chat.py +14 -0
- dify_oapi/api/chat/v1/resource/conversation.py +55 -9
- dify_oapi/api/chat/v1/resource/feedback.py +31 -0
- dify_oapi/api/chat/v1/resource/file.py +25 -0
- dify_oapi/api/chat/v1/resource/message.py +19 -15
- dify_oapi/api/chat/v1/version.py +8 -2
- dify_oapi/api/chatflow/service.py +25 -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/audio_to_text_request.py +37 -0
- dify_oapi/api/chatflow/v1/model/audio_to_text_response.py +21 -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_app_feedbacks_request.py +30 -0
- dify_oapi/api/chatflow/v1/model/get_app_feedbacks_response.py +23 -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_info_request.py +22 -0
- dify_oapi/api/chatflow/v1/model/get_info_response.py +7 -0
- dify_oapi/api/chatflow/v1/model/get_meta_request.py +22 -0
- dify_oapi/api/chatflow/v1/model/get_meta_response.py +7 -0
- dify_oapi/api/chatflow/v1/model/get_parameters_request.py +22 -0
- dify_oapi/api/chatflow/v1/model/get_parameters_response.py +7 -0
- dify_oapi/api/chatflow/v1/model/get_site_request.py +22 -0
- dify_oapi/api/chatflow/v1/model/get_site_response.py +7 -0
- dify_oapi/api/chatflow/v1/model/get_suggested_questions_request.py +32 -0
- dify_oapi/api/{knowledge_base/v1/model/metadata/toggle_builtin_response.py → chatflow/v1/model/get_suggested_questions_response.py} +2 -3
- dify_oapi/api/chatflow/v1/model/message_feedback_request.py +36 -0
- dify_oapi/api/chatflow/v1/model/message_feedback_request_body.py +33 -0
- dify_oapi/api/chatflow/v1/model/message_feedback_response.py +21 -0
- 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/{knowledge_base/v1/model/tag/bind_response.py → chatflow/v1/model/stop_chat_message_response.py} +1 -3
- dify_oapi/api/chatflow/v1/model/text_to_audio_request.py +30 -0
- dify_oapi/api/chatflow/v1/model/text_to_audio_request_body.py +36 -0
- dify_oapi/api/chatflow/v1/model/text_to_audio_response.py +19 -0
- 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/upload_file_request.py +41 -0
- dify_oapi/api/{workflow/v1/model/file → chatflow/v1/model}/upload_file_response.py +2 -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/annotation.py +122 -0
- dify_oapi/api/chatflow/v1/resource/application.py +76 -0
- dify_oapi/api/chatflow/v1/resource/chatflow.py +91 -0
- dify_oapi/api/chatflow/v1/resource/conversation.py +104 -0
- dify_oapi/api/chatflow/v1/resource/feedback.py +69 -0
- dify_oapi/api/chatflow/v1/resource/file.py +39 -0
- dify_oapi/api/chatflow/v1/resource/tts.py +29 -0
- dify_oapi/api/chatflow/v1/version.py +29 -0
- dify_oapi/api/completion/v1/model/completion/completion_inputs.py +28 -4
- dify_oapi/api/completion/v1/model/completion/completion_types.py +19 -1
- dify_oapi/api/completion/v1/model/completion/input_file_object.py +58 -0
- dify_oapi/api/completion/v1/model/completion/send_message_request_body.py +40 -44
- dify_oapi/api/completion/v1/model/completion/usage.py +4 -2
- dify_oapi/api/completion/v1/model/info/feature_config.py +91 -0
- dify_oapi/api/completion/v1/model/info/parameters_info.py +16 -8
- dify_oapi/api/completion/v1/model/info/site_info.py +3 -3
- dify_oapi/api/completion/v1/model/info/user_input_form.py +131 -16
- dify_oapi/api/knowledge/service.py +8 -0
- dify_oapi/api/knowledge/v1/__init__.py +0 -0
- dify_oapi/api/knowledge/v1/model/__init__.py +0 -0
- dify_oapi/api/knowledge/v1/model/batch_info.py +86 -0
- dify_oapi/api/knowledge/v1/model/bind_tags_to_dataset_request.py +30 -0
- dify_oapi/api/knowledge/v1/model/bind_tags_to_dataset_request_body.py +26 -0
- dify_oapi/api/{knowledge_base/v1/model/tag/delete_response.py → knowledge/v1/model/bind_tags_to_dataset_response.py} +1 -3
- dify_oapi/api/knowledge/v1/model/child_chunk_content.py +34 -0
- dify_oapi/api/knowledge/v1/model/child_chunk_info.py +101 -0
- dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/create_child_chunk_request.py +8 -2
- dify_oapi/api/knowledge/v1/model/create_child_chunk_request_body.py +44 -0
- dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/create_child_chunk_response.py +5 -1
- dify_oapi/api/knowledge/v1/model/create_dataset_request.py +30 -0
- dify_oapi/api/knowledge/v1/model/create_dataset_request_body.py +67 -0
- dify_oapi/api/knowledge/v1/model/create_dataset_response.py +7 -0
- dify_oapi/api/knowledge/v1/model/create_document_by_file_request.py +55 -0
- dify_oapi/api/knowledge/v1/model/create_document_by_file_request_body.py +73 -0
- dify_oapi/api/{knowledge_base/v1/model/document/create_by_file_response.py → knowledge/v1/model/create_document_by_file_response.py} +1 -1
- dify_oapi/api/knowledge/v1/model/create_document_by_text_request.py +44 -0
- dify_oapi/api/knowledge/v1/model/create_document_by_text_request_body.py +73 -0
- dify_oapi/api/{knowledge_base/v1/model/document/create_by_text_response.py → knowledge/v1/model/create_document_by_text_response.py} +3 -3
- dify_oapi/api/knowledge/v1/model/create_segment_request.py +50 -0
- dify_oapi/api/knowledge/v1/model/create_segment_request_body.py +31 -0
- dify_oapi/api/{knowledge_base/v1/model/segment/create_response.py → knowledge/v1/model/create_segment_response.py} +5 -2
- dify_oapi/api/knowledge/v1/model/create_tag_request.py +30 -0
- dify_oapi/api/knowledge/v1/model/create_tag_request_body.py +28 -0
- dify_oapi/api/knowledge/v1/model/create_tag_response.py +7 -0
- dify_oapi/api/knowledge/v1/model/data_source_detail.py +23 -0
- dify_oapi/api/knowledge/v1/model/data_source_info.py +34 -0
- dify_oapi/api/knowledge/v1/model/dataset_info.py +123 -0
- dify_oapi/api/knowledge/v1/model/dataset_metadata.py +14 -0
- dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/delete_child_chunk_request.py +8 -2
- dify_oapi/api/knowledge/v1/model/delete_child_chunk_response.py +9 -0
- dify_oapi/api/knowledge/v1/model/delete_dataset_request.py +28 -0
- dify_oapi/api/{knowledge_base/v1/model/tag/unbind_response.py → knowledge/v1/model/delete_dataset_response.py} +1 -3
- dify_oapi/api/knowledge/v1/model/delete_document_request.py +42 -0
- dify_oapi/api/knowledge/v1/model/delete_document_response.py +9 -0
- dify_oapi/api/knowledge/v1/model/delete_segment_request.py +48 -0
- dify_oapi/api/knowledge/v1/model/delete_segment_response.py +9 -0
- dify_oapi/api/knowledge/v1/model/delete_tag_request.py +30 -0
- dify_oapi/api/knowledge/v1/model/delete_tag_request_body.py +21 -0
- dify_oapi/api/knowledge/v1/model/delete_tag_response.py +5 -0
- dify_oapi/api/knowledge/v1/model/document_info.py +144 -0
- dify_oapi/api/knowledge/v1/model/document_metadata.py +39 -0
- dify_oapi/api/knowledge/v1/model/embedding_model_parameters.py +47 -0
- dify_oapi/api/{knowledge_base/v1/model/dataset → knowledge/v1/model}/external_knowledge_info.py +18 -12
- dify_oapi/api/knowledge/v1/model/external_retrieval_model.py +13 -0
- dify_oapi/api/knowledge/v1/model/file_info.py +71 -0
- dify_oapi/api/knowledge/v1/model/get_batch_indexing_status_request.py +42 -0
- dify_oapi/api/knowledge/v1/model/get_batch_indexing_status_response.py +22 -0
- dify_oapi/api/knowledge/v1/model/get_dataset_request.py +28 -0
- dify_oapi/api/knowledge/v1/model/get_dataset_response.py +7 -0
- dify_oapi/api/knowledge/v1/model/get_dataset_tags_request.py +28 -0
- dify_oapi/api/knowledge/v1/model/get_dataset_tags_response.py +8 -0
- dify_oapi/api/knowledge/v1/model/get_document_request.py +42 -0
- dify_oapi/api/knowledge/v1/model/get_document_response.py +11 -0
- dify_oapi/api/knowledge/v1/model/get_segment_request.py +48 -0
- dify_oapi/api/{knowledge_base/v1/model/segment/get_response.py → knowledge/v1/model/get_segment_response.py} +5 -1
- dify_oapi/api/knowledge/v1/model/get_text_embedding_models_request.py +22 -0
- dify_oapi/api/knowledge/v1/model/get_text_embedding_models_response.py +7 -0
- dify_oapi/api/knowledge/v1/model/get_upload_file_info_request.py +42 -0
- dify_oapi/api/knowledge/v1/model/get_upload_file_info_response.py +11 -0
- dify_oapi/api/knowledge/v1/model/knowledge_types.py +100 -0
- dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/list_child_chunks_request.py +10 -4
- dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/list_child_chunks_response.py +4 -0
- dify_oapi/api/knowledge/v1/model/list_datasets_request.py +30 -0
- dify_oapi/api/{knowledge_base/v1/model/dataset/list_response.py → knowledge/v1/model/list_datasets_response.py} +1 -3
- dify_oapi/api/knowledge/v1/model/list_documents_request.py +48 -0
- dify_oapi/api/{knowledge_base/v1/model/document/list_response.py → knowledge/v1/model/list_documents_response.py} +3 -3
- dify_oapi/api/knowledge/v1/model/list_segments_request.py +60 -0
- dify_oapi/api/{knowledge_base/v1/model/segment/list_response.py → knowledge/v1/model/list_segments_response.py} +5 -2
- dify_oapi/api/knowledge/v1/model/list_tags_request.py +28 -0
- dify_oapi/api/knowledge/v1/model/list_tags_response.py +7 -0
- dify_oapi/api/knowledge/v1/model/model_credentials.py +34 -0
- dify_oapi/api/knowledge/v1/model/model_info.py +85 -0
- dify_oapi/api/knowledge/v1/model/model_parameters.py +34 -0
- dify_oapi/api/knowledge/v1/model/pagination_info.py +44 -0
- dify_oapi/api/knowledge/v1/model/preprocessing_rule.py +36 -0
- dify_oapi/api/knowledge/v1/model/process_rule.py +43 -0
- dify_oapi/api/knowledge/v1/model/process_rules.py +49 -0
- dify_oapi/api/knowledge/v1/model/query_info.py +29 -0
- dify_oapi/api/knowledge/v1/model/reranking_mode.py +36 -0
- dify_oapi/api/knowledge/v1/model/reranking_model.py +47 -0
- dify_oapi/api/knowledge/v1/model/retrieval_model.py +68 -0
- dify_oapi/api/knowledge/v1/model/retrieval_record.py +28 -0
- dify_oapi/api/knowledge/v1/model/retrieval_segment_info.py +41 -0
- dify_oapi/api/knowledge/v1/model/retrieve_from_dataset_request.py +36 -0
- dify_oapi/api/knowledge/v1/model/retrieve_from_dataset_request_body.py +38 -0
- dify_oapi/api/knowledge/v1/model/retrieve_from_dataset_response.py +9 -0
- dify_oapi/api/knowledge/v1/model/segment_content.py +39 -0
- dify_oapi/api/knowledge/v1/model/segment_document_info.py +41 -0
- dify_oapi/api/knowledge/v1/model/segment_info.py +131 -0
- dify_oapi/api/knowledge/v1/model/segmentation_rule.py +44 -0
- dify_oapi/api/knowledge/v1/model/subchunk_segmentation_rule.py +39 -0
- dify_oapi/api/knowledge/v1/model/tag_info.py +56 -0
- dify_oapi/api/knowledge/v1/model/unbind_tags_from_dataset_request.py +30 -0
- dify_oapi/api/knowledge/v1/model/unbind_tags_from_dataset_request_body.py +26 -0
- dify_oapi/api/knowledge/v1/model/unbind_tags_from_dataset_response.py +5 -0
- dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/update_child_chunk_request.py +8 -2
- dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/update_child_chunk_request_body.py +12 -1
- dify_oapi/api/{knowledge_base/v1/model/segment → knowledge/v1/model}/update_child_chunk_response.py +4 -0
- dify_oapi/api/knowledge/v1/model/update_dataset_request.py +36 -0
- dify_oapi/api/knowledge/v1/model/update_dataset_request_body.py +62 -0
- dify_oapi/api/knowledge/v1/model/update_dataset_response.py +7 -0
- dify_oapi/api/knowledge/v1/model/update_document_by_file_request.py +61 -0
- dify_oapi/api/knowledge/v1/model/update_document_by_file_request_body.py +68 -0
- dify_oapi/api/{knowledge_base/v1/model/document/update_by_file_response.py → knowledge/v1/model/update_document_by_file_response.py} +3 -3
- dify_oapi/api/knowledge/v1/model/update_document_by_text_request.py +50 -0
- dify_oapi/api/knowledge/v1/model/update_document_by_text_request_body.py +73 -0
- dify_oapi/api/{knowledge_base/v1/model/document/update_by_text_response.py → knowledge/v1/model/update_document_by_text_response.py} +2 -4
- dify_oapi/api/knowledge/v1/model/update_document_status_request.py +51 -0
- dify_oapi/api/knowledge/v1/model/update_document_status_request_body.py +29 -0
- dify_oapi/api/knowledge/v1/model/update_document_status_response.py +9 -0
- dify_oapi/api/knowledge/v1/model/update_segment_request.py +56 -0
- dify_oapi/api/knowledge/v1/model/update_segment_request_body.py +31 -0
- dify_oapi/api/{knowledge_base/v1/model/segment/update_response.py → knowledge/v1/model/update_segment_response.py} +5 -1
- dify_oapi/api/knowledge/v1/model/update_tag_request.py +30 -0
- dify_oapi/api/knowledge/v1/model/update_tag_request_body.py +26 -0
- dify_oapi/api/knowledge/v1/model/update_tag_response.py +7 -0
- dify_oapi/api/knowledge/v1/model/weights.py +27 -0
- dify_oapi/api/knowledge/v1/resource/__init__.py +8 -0
- dify_oapi/api/knowledge/v1/resource/chunk.py +55 -0
- dify_oapi/api/knowledge/v1/resource/dataset.py +69 -0
- dify_oapi/api/knowledge/v1/resource/document.py +135 -0
- dify_oapi/api/knowledge/v1/resource/model.py +25 -0
- dify_oapi/api/knowledge/v1/resource/segment.py +55 -0
- dify_oapi/api/knowledge/v1/resource/tag.py +81 -0
- dify_oapi/api/knowledge/v1/version.py +18 -0
- dify_oapi/api/workflow/v1/model/{info/app_info.py → app_info.py} +1 -1
- dify_oapi/api/workflow/v1/model/chunk_workflow_event.py +74 -0
- dify_oapi/api/workflow/v1/model/file_upload_info.py +53 -0
- dify_oapi/api/workflow/v1/model/{log/get_workflow_logs_response.py → get_workflow_logs_response.py} +2 -2
- dify_oapi/api/workflow/v1/model/{workflow/get_workflow_run_detail_response.py → get_workflow_run_detail_response.py} +18 -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/{workflow/run_workflow_request_body.py → run_workflow_request_body.py} +1 -1
- dify_oapi/api/workflow/v1/model/{info/site_info.py → site_info.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/{knowledge_base/v1/model/dataset/delete_response.py → workflow/v1/model/upload_file_response.py} +2 -2
- 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_log_info.py +57 -0
- dify_oapi/api/workflow/v1/model/{log/workflow_run_log_info.py → workflow_run_log_info.py} +1 -1
- dify_oapi/api/workflow/v1/model/workflow_started_data.py +51 -0
- dify_oapi/api/workflow/v1/model/workflow_types.py +69 -0
- dify_oapi/api/workflow/v1/resource/workflow.py +56 -144
- dify_oapi/api/workflow/v1/version.py +1 -7
- dify_oapi/client.py +51 -6
- 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-0.3.0.dist-info → dify_oapi2-0.5.0.dist-info}/METADATA +57 -21
- dify_oapi2-0.5.0.dist-info/RECORD +479 -0
- 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/knowledge_base/service.py +0 -8
- dify_oapi/api/knowledge_base/v1/model/dataset/__init__.py +0 -49
- dify_oapi/api/knowledge_base/v1/model/dataset/create_request.py +0 -32
- dify_oapi/api/knowledge_base/v1/model/dataset/create_request_body.py +0 -72
- dify_oapi/api/knowledge_base/v1/model/dataset/create_response.py +0 -11
- dify_oapi/api/knowledge_base/v1/model/dataset/dataset_info.py +0 -150
- dify_oapi/api/knowledge_base/v1/model/dataset/dataset_types.py +0 -36
- dify_oapi/api/knowledge_base/v1/model/dataset/delete_request.py +0 -30
- dify_oapi/api/knowledge_base/v1/model/dataset/filter_condition.py +0 -72
- dify_oapi/api/knowledge_base/v1/model/dataset/get_request.py +0 -30
- dify_oapi/api/knowledge_base/v1/model/dataset/get_response.py +0 -11
- dify_oapi/api/knowledge_base/v1/model/dataset/list_request.py +0 -45
- dify_oapi/api/knowledge_base/v1/model/dataset/metadata_filtering_conditions.py +0 -30
- dify_oapi/api/knowledge_base/v1/model/dataset/reranking_model.py +0 -28
- dify_oapi/api/knowledge_base/v1/model/dataset/retrieval_model.py +0 -144
- dify_oapi/api/knowledge_base/v1/model/dataset/retrieve_request.py +0 -38
- dify_oapi/api/knowledge_base/v1/model/dataset/retrieve_request_body.py +0 -38
- dify_oapi/api/knowledge_base/v1/model/dataset/retrieve_response.py +0 -53
- dify_oapi/api/knowledge_base/v1/model/dataset/update_request.py +0 -38
- dify_oapi/api/knowledge_base/v1/model/dataset/update_request_body.py +0 -58
- dify_oapi/api/knowledge_base/v1/model/dataset/update_response.py +0 -11
- dify_oapi/api/knowledge_base/v1/model/document/create_by_file_request.py +0 -53
- dify_oapi/api/knowledge_base/v1/model/document/create_by_file_request_body.py +0 -31
- dify_oapi/api/knowledge_base/v1/model/document/create_by_file_request_body_data.py +0 -78
- dify_oapi/api/knowledge_base/v1/model/document/create_by_text_request.py +0 -38
- dify_oapi/api/knowledge_base/v1/model/document/create_by_text_request_body.py +0 -75
- dify_oapi/api/knowledge_base/v1/model/document/data_source_info.py +0 -30
- dify_oapi/api/knowledge_base/v1/model/document/delete_request.py +0 -38
- dify_oapi/api/knowledge_base/v1/model/document/delete_response.py +0 -9
- dify_oapi/api/knowledge_base/v1/model/document/document_info.py +0 -164
- dify_oapi/api/knowledge_base/v1/model/document/document_types.py +0 -36
- dify_oapi/api/knowledge_base/v1/model/document/get_request.py +0 -40
- dify_oapi/api/knowledge_base/v1/model/document/get_response.py +0 -9
- dify_oapi/api/knowledge_base/v1/model/document/get_upload_file_request.py +0 -38
- dify_oapi/api/knowledge_base/v1/model/document/get_upload_file_response.py +0 -11
- dify_oapi/api/knowledge_base/v1/model/document/indexing_status_info.py +0 -80
- dify_oapi/api/knowledge_base/v1/model/document/indexing_status_request.py +0 -36
- dify_oapi/api/knowledge_base/v1/model/document/indexing_status_response.py +0 -11
- dify_oapi/api/knowledge_base/v1/model/document/list_request.py +0 -42
- dify_oapi/api/knowledge_base/v1/model/document/pre_processing_rule.py +0 -32
- dify_oapi/api/knowledge_base/v1/model/document/process_rule.py +0 -34
- dify_oapi/api/knowledge_base/v1/model/document/retrieval_model.py +0 -54
- dify_oapi/api/knowledge_base/v1/model/document/rules.py +0 -31
- dify_oapi/api/knowledge_base/v1/model/document/segmentation.py +0 -35
- dify_oapi/api/knowledge_base/v1/model/document/subchunk_segmentation.py +0 -35
- dify_oapi/api/knowledge_base/v1/model/document/update_by_file_request.py +0 -53
- dify_oapi/api/knowledge_base/v1/model/document/update_by_file_request_body.py +0 -26
- dify_oapi/api/knowledge_base/v1/model/document/update_by_file_request_body_data.py +0 -40
- dify_oapi/api/knowledge_base/v1/model/document/update_by_text_request.py +0 -55
- dify_oapi/api/knowledge_base/v1/model/document/update_by_text_request_body.py +0 -46
- dify_oapi/api/knowledge_base/v1/model/document/update_status_request.py +0 -55
- dify_oapi/api/knowledge_base/v1/model/document/update_status_request_body.py +0 -32
- dify_oapi/api/knowledge_base/v1/model/document/update_status_response.py +0 -9
- dify_oapi/api/knowledge_base/v1/model/document/upload_file_info.py +0 -65
- dify_oapi/api/knowledge_base/v1/model/metadata/__init__.py +0 -35
- dify_oapi/api/knowledge_base/v1/model/metadata/create_request.py +0 -38
- dify_oapi/api/knowledge_base/v1/model/metadata/create_request_body.py +0 -31
- dify_oapi/api/knowledge_base/v1/model/metadata/create_response.py +0 -13
- dify_oapi/api/knowledge_base/v1/model/metadata/delete_request.py +0 -36
- dify_oapi/api/knowledge_base/v1/model/metadata/delete_response.py +0 -7
- dify_oapi/api/knowledge_base/v1/model/metadata/list_request.py +0 -30
- dify_oapi/api/knowledge_base/v1/model/metadata/list_response.py +0 -9
- dify_oapi/api/knowledge_base/v1/model/metadata/metadata_info.py +0 -38
- dify_oapi/api/knowledge_base/v1/model/metadata/metadata_types.py +0 -15
- dify_oapi/api/knowledge_base/v1/model/metadata/toggle_builtin_request.py +0 -36
- dify_oapi/api/knowledge_base/v1/model/metadata/update_document_request.py +0 -38
- dify_oapi/api/knowledge_base/v1/model/metadata/update_document_request_body.py +0 -79
- dify_oapi/api/knowledge_base/v1/model/metadata/update_document_response.py +0 -7
- dify_oapi/api/knowledge_base/v1/model/metadata/update_request.py +0 -44
- dify_oapi/api/knowledge_base/v1/model/metadata/update_request_body.py +0 -24
- dify_oapi/api/knowledge_base/v1/model/metadata/update_response.py +0 -13
- dify_oapi/api/knowledge_base/v1/model/segment/__init__.py +0 -77
- dify_oapi/api/knowledge_base/v1/model/segment/child_chunk_info.py +0 -88
- dify_oapi/api/knowledge_base/v1/model/segment/create_child_chunk_request_body.py +0 -23
- dify_oapi/api/knowledge_base/v1/model/segment/create_request.py +0 -42
- dify_oapi/api/knowledge_base/v1/model/segment/create_request_body.py +0 -25
- dify_oapi/api/knowledge_base/v1/model/segment/delete_child_chunk_response.py +0 -5
- dify_oapi/api/knowledge_base/v1/model/segment/delete_request.py +0 -40
- dify_oapi/api/knowledge_base/v1/model/segment/delete_response.py +0 -5
- dify_oapi/api/knowledge_base/v1/model/segment/get_request.py +0 -40
- dify_oapi/api/knowledge_base/v1/model/segment/list_request.py +0 -50
- dify_oapi/api/knowledge_base/v1/model/segment/segment_data.py +0 -43
- dify_oapi/api/knowledge_base/v1/model/segment/segment_info.py +0 -123
- dify_oapi/api/knowledge_base/v1/model/segment/segment_types.py +0 -24
- dify_oapi/api/knowledge_base/v1/model/segment/update_request.py +0 -48
- dify_oapi/api/knowledge_base/v1/model/segment/update_request_body.py +0 -25
- dify_oapi/api/knowledge_base/v1/model/tag/__init__.py +0 -41
- dify_oapi/api/knowledge_base/v1/model/tag/bind_request.py +0 -32
- dify_oapi/api/knowledge_base/v1/model/tag/bind_request_body.py +0 -29
- dify_oapi/api/knowledge_base/v1/model/tag/create_request.py +0 -32
- dify_oapi/api/knowledge_base/v1/model/tag/create_request_body.py +0 -24
- dify_oapi/api/knowledge_base/v1/model/tag/create_response.py +0 -16
- dify_oapi/api/knowledge_base/v1/model/tag/delete_request.py +0 -32
- dify_oapi/api/knowledge_base/v1/model/tag/delete_request_body.py +0 -24
- dify_oapi/api/knowledge_base/v1/model/tag/list_request.py +0 -24
- dify_oapi/api/knowledge_base/v1/model/tag/list_response.py +0 -19
- dify_oapi/api/knowledge_base/v1/model/tag/query_bound_request.py +0 -30
- dify_oapi/api/knowledge_base/v1/model/tag/query_bound_response.py +0 -9
- dify_oapi/api/knowledge_base/v1/model/tag/tag_info.py +0 -38
- dify_oapi/api/knowledge_base/v1/model/tag/tag_types.py +0 -12
- dify_oapi/api/knowledge_base/v1/model/tag/unbind_request.py +0 -32
- dify_oapi/api/knowledge_base/v1/model/tag/unbind_request_body.py +0 -29
- dify_oapi/api/knowledge_base/v1/model/tag/update_request.py +0 -32
- dify_oapi/api/knowledge_base/v1/model/tag/update_request_body.py +0 -29
- dify_oapi/api/knowledge_base/v1/model/tag/update_response.py +0 -23
- dify_oapi/api/knowledge_base/v1/resource/__init__.py +0 -7
- dify_oapi/api/knowledge_base/v1/resource/dataset.py +0 -58
- dify_oapi/api/knowledge_base/v1/resource/document.py +0 -107
- dify_oapi/api/knowledge_base/v1/resource/metadata.py +0 -65
- dify_oapi/api/knowledge_base/v1/resource/segment.py +0 -110
- dify_oapi/api/knowledge_base/v1/resource/tag.py +0 -65
- dify_oapi/api/knowledge_base/v1/version.py +0 -12
- dify_oapi/api/workflow/v1/model/file/__init__.py +0 -1
- dify_oapi/api/workflow/v1/model/file/preview_file_request.py +0 -34
- dify_oapi/api/workflow/v1/model/file/preview_file_response.py +0 -9
- dify_oapi/api/workflow/v1/model/log/log_info.py +0 -57
- dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request.py +0 -38
- dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_request_body.py +0 -47
- dify_oapi/api/workflow/v1/model/workflow/run_specific_workflow_response.py +0 -9
- dify_oapi/api/workflow/v1/model/workflow/streaming_event.py +0 -42
- dify_oapi/api/workflow/v1/model/workflow/workflow_types.py +0 -54
- dify_oapi/api/workflow/v1/resource/file.py +0 -63
- dify_oapi/api/workflow/v1/resource/info.py +0 -93
- dify_oapi/api/workflow/v1/resource/log.py +0 -43
- dify_oapi2-0.3.0.dist-info/RECORD +0 -348
- /dify_oapi/api/{knowledge_base → chatflow}/__init__.py +0 -0
- /dify_oapi/api/{knowledge_base → chatflow}/v1/__init__.py +0 -0
- /dify_oapi/api/{knowledge_base → chatflow}/v1/model/__init__.py +0 -0
- /dify_oapi/api/{knowledge_base/v1/model/document → chatflow/v1/resource}/__init__.py +0 -0
- /dify_oapi/api/{workflow/v1/model/log → knowledge}/__init__.py +0 -0
- /dify_oapi/api/workflow/v1/model/{log/end_user_info.py → end_user_info.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/execution_metadata.py → execution_metadata.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{info/file_upload_config.py → file_upload_config.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{info/get_info_request.py → get_info_request.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{info/get_info_response.py → get_info_response.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{info/get_parameters_request.py → get_parameters_request.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{info/get_parameters_response.py → get_parameters_response.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{info/get_site_request.py → get_site_request.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{info/get_site_response.py → get_site_response.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{log/get_workflow_logs_request.py → get_workflow_logs_request.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/get_workflow_run_detail_request.py → get_workflow_run_detail_request.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/node_info.py → node_info.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{info/parameters_info.py → parameters_info.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/run_workflow_request.py → run_workflow_request.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/run_workflow_response.py → run_workflow_response.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/stop_workflow_request.py → stop_workflow_request.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/stop_workflow_request_body.py → stop_workflow_request_body.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/stop_workflow_response.py → stop_workflow_response.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{info/system_parameters.py → system_parameters.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{file/upload_file_request.py → upload_file_request.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{file/upload_file_request_body.py → upload_file_request_body.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{info/user_input_form.py → user_input_form.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/workflow_file_info.py → workflow_file_info.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/workflow_inputs.py → workflow_inputs.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/workflow_run_data.py → workflow_run_data.py} +0 -0
- /dify_oapi/api/workflow/v1/model/{workflow/workflow_run_info.py → workflow_run_info.py} +0 -0
- {dify_oapi2-0.3.0.dist-info → dify_oapi2-0.5.0.dist-info}/LICENSE +0 -0
- {dify_oapi2-0.3.0.dist-info → dify_oapi2-0.5.0.dist-info}/WHEEL +0 -0
@@ -0,0 +1,131 @@
|
|
1
|
+
"""HTTP connection pool management for efficient TCP connection reuse."""
|
2
|
+
|
3
|
+
import threading
|
4
|
+
from typing import Optional
|
5
|
+
|
6
|
+
import httpx
|
7
|
+
|
8
|
+
|
9
|
+
class ConnectionPoolManager:
|
10
|
+
"""Manages HTTP connection pools to reduce TCP connection overhead."""
|
11
|
+
|
12
|
+
_instance: Optional["ConnectionPoolManager"] = None
|
13
|
+
_lock = threading.Lock()
|
14
|
+
|
15
|
+
def __new__(cls) -> "ConnectionPoolManager":
|
16
|
+
if cls._instance is None:
|
17
|
+
with cls._lock:
|
18
|
+
if cls._instance is None:
|
19
|
+
cls._instance = super().__new__(cls)
|
20
|
+
return cls._instance
|
21
|
+
|
22
|
+
def __init__(self):
|
23
|
+
if not hasattr(self, "_initialized"):
|
24
|
+
self._sync_clients: dict[str, httpx.Client] = {}
|
25
|
+
self._async_clients: dict[str, httpx.AsyncClient] = {}
|
26
|
+
self._client_lock = threading.Lock()
|
27
|
+
self._initialized = True
|
28
|
+
|
29
|
+
def get_sync_client(
|
30
|
+
self,
|
31
|
+
domain: str,
|
32
|
+
timeout: Optional[float] = None,
|
33
|
+
max_keepalive: int = 20,
|
34
|
+
max_connections: int = 100,
|
35
|
+
keepalive_expiry: float = 30.0,
|
36
|
+
verify_ssl: bool = True,
|
37
|
+
) -> httpx.Client:
|
38
|
+
"""Get or create a sync HTTP client for the given domain."""
|
39
|
+
client_key = f"{domain}:{timeout}:{max_keepalive}:{max_connections}:{keepalive_expiry}:{verify_ssl}"
|
40
|
+
|
41
|
+
with self._client_lock:
|
42
|
+
if client_key not in self._sync_clients:
|
43
|
+
# Configure connection limits to prevent excessive connections
|
44
|
+
limits = httpx.Limits(
|
45
|
+
max_keepalive_connections=max_keepalive,
|
46
|
+
max_connections=max_connections,
|
47
|
+
keepalive_expiry=keepalive_expiry,
|
48
|
+
)
|
49
|
+
|
50
|
+
self._sync_clients[client_key] = httpx.Client(
|
51
|
+
timeout=timeout,
|
52
|
+
limits=limits,
|
53
|
+
verify=verify_ssl,
|
54
|
+
# Note: HTTP/2 disabled to avoid h2 dependency requirement
|
55
|
+
)
|
56
|
+
|
57
|
+
return self._sync_clients[client_key]
|
58
|
+
|
59
|
+
def get_async_client(
|
60
|
+
self,
|
61
|
+
domain: str,
|
62
|
+
timeout: Optional[float] = None,
|
63
|
+
max_keepalive: int = 20,
|
64
|
+
max_connections: int = 100,
|
65
|
+
keepalive_expiry: float = 30.0,
|
66
|
+
verify_ssl: bool = True,
|
67
|
+
) -> httpx.AsyncClient:
|
68
|
+
"""Get or create an async HTTP client for the given domain."""
|
69
|
+
client_key = f"{domain}:{timeout}:{max_keepalive}:{max_connections}:{keepalive_expiry}:{verify_ssl}"
|
70
|
+
|
71
|
+
with self._client_lock:
|
72
|
+
if client_key not in self._async_clients:
|
73
|
+
# Configure connection limits to prevent excessive connections
|
74
|
+
limits = httpx.Limits(
|
75
|
+
max_keepalive_connections=max_keepalive,
|
76
|
+
max_connections=max_connections,
|
77
|
+
keepalive_expiry=keepalive_expiry,
|
78
|
+
)
|
79
|
+
|
80
|
+
self._async_clients[client_key] = httpx.AsyncClient(
|
81
|
+
timeout=timeout,
|
82
|
+
limits=limits,
|
83
|
+
verify=verify_ssl,
|
84
|
+
# Note: HTTP/2 disabled to avoid h2 dependency requirement
|
85
|
+
)
|
86
|
+
|
87
|
+
return self._async_clients[client_key]
|
88
|
+
|
89
|
+
def close_all(self):
|
90
|
+
"""Close all HTTP clients and clean up connections."""
|
91
|
+
with self._client_lock:
|
92
|
+
# Close sync clients
|
93
|
+
for client in self._sync_clients.values():
|
94
|
+
try:
|
95
|
+
client.close()
|
96
|
+
except Exception:
|
97
|
+
pass
|
98
|
+
self._sync_clients.clear()
|
99
|
+
|
100
|
+
# Close async clients
|
101
|
+
for _client in self._async_clients.values():
|
102
|
+
try:
|
103
|
+
# Note: This should be called from an async context in practice
|
104
|
+
# For cleanup purposes, we'll just clear the dict
|
105
|
+
pass
|
106
|
+
except Exception:
|
107
|
+
pass
|
108
|
+
self._async_clients.clear()
|
109
|
+
|
110
|
+
async def aclose_all(self):
|
111
|
+
"""Async version of close_all for proper async client cleanup."""
|
112
|
+
with self._client_lock:
|
113
|
+
# Close sync clients
|
114
|
+
for sync_client in self._sync_clients.values():
|
115
|
+
try:
|
116
|
+
sync_client.close()
|
117
|
+
except Exception:
|
118
|
+
pass
|
119
|
+
self._sync_clients.clear()
|
120
|
+
|
121
|
+
# Close async clients properly
|
122
|
+
for async_client in self._async_clients.values():
|
123
|
+
try:
|
124
|
+
await async_client.aclose()
|
125
|
+
except Exception:
|
126
|
+
pass
|
127
|
+
self._async_clients.clear()
|
128
|
+
|
129
|
+
|
130
|
+
# Global connection pool manager instance
|
131
|
+
connection_pool = ConnectionPoolManager()
|
@@ -17,6 +17,7 @@ from dify_oapi.core.model.request_option import RequestOption
|
|
17
17
|
from dify_oapi.core.type import T
|
18
18
|
|
19
19
|
from ._misc import _build_header, _build_url, _get_sleep_time, _merge_dicts, _unmarshaller
|
20
|
+
from .connection_pool import connection_pool
|
20
21
|
|
21
22
|
|
22
23
|
def _format_log_details(
|
@@ -45,6 +46,12 @@ def _handle_stream_error(response: httpx.Response) -> bytes:
|
|
45
46
|
return f"data: [ERROR] {error_message}\n\n".encode()
|
46
47
|
|
47
48
|
|
49
|
+
def _update_response_mode(body_data: dict | None, stream: bool) -> None:
|
50
|
+
"""Update response_mode field in request body based on stream parameter"""
|
51
|
+
if body_data and "response_mode" in body_data:
|
52
|
+
body_data["response_mode"] = "streaming" if stream else "blocking"
|
53
|
+
|
54
|
+
|
48
55
|
def _stream_generator(
|
49
56
|
conf: Config,
|
50
57
|
req: BaseRequest,
|
@@ -59,6 +66,16 @@ def _stream_generator(
|
|
59
66
|
method_name = http_method.name
|
60
67
|
body_data = _merge_dicts(json_, files, data)
|
61
68
|
|
69
|
+
# Use connection pool for streaming requests
|
70
|
+
client = connection_pool.get_sync_client(
|
71
|
+
conf.domain or "",
|
72
|
+
conf.timeout,
|
73
|
+
getattr(conf, "max_keepalive_connections", 20),
|
74
|
+
getattr(conf, "max_connections", 100),
|
75
|
+
getattr(conf, "keepalive_expiry", 30.0),
|
76
|
+
getattr(conf, "verify_ssl", True),
|
77
|
+
)
|
78
|
+
|
62
79
|
for retry in range(conf.max_retry_count + 1):
|
63
80
|
if retry > 0:
|
64
81
|
sleep_time = _get_sleep_time(retry)
|
@@ -66,19 +83,16 @@ def _stream_generator(
|
|
66
83
|
time.sleep(sleep_time)
|
67
84
|
|
68
85
|
try:
|
69
|
-
with (
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
timeout=conf.timeout,
|
80
|
-
) as response,
|
81
|
-
):
|
86
|
+
with client.stream(
|
87
|
+
method_name,
|
88
|
+
url,
|
89
|
+
headers=headers,
|
90
|
+
params=tuple(req.queries),
|
91
|
+
json=json_,
|
92
|
+
data=data,
|
93
|
+
files=files,
|
94
|
+
timeout=conf.timeout,
|
95
|
+
) as response:
|
82
96
|
logger.debug(
|
83
97
|
f"{_format_log_details(method_name, url, headers, req.queries, body_data)}, stream response"
|
84
98
|
)
|
@@ -160,8 +174,10 @@ class Transport:
|
|
160
174
|
files = req.files
|
161
175
|
if req.body is not None:
|
162
176
|
data = json.loads(JSON.marshal(req.body))
|
177
|
+
_update_response_mode(data, stream)
|
163
178
|
elif req.body is not None:
|
164
179
|
json_ = json.loads(JSON.marshal(req.body))
|
180
|
+
_update_response_mode(json_, stream)
|
165
181
|
|
166
182
|
if stream:
|
167
183
|
return _stream_generator(
|
@@ -176,45 +192,52 @@ class Transport:
|
|
176
192
|
method_name = req.http_method.name
|
177
193
|
body_data = _merge_dicts(json_, files, data)
|
178
194
|
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
184
|
-
|
195
|
+
# Use connection pool for regular requests
|
196
|
+
client = connection_pool.get_sync_client(
|
197
|
+
conf.domain or "",
|
198
|
+
conf.timeout,
|
199
|
+
getattr(conf, "max_keepalive_connections", 20),
|
200
|
+
getattr(conf, "max_connections", 100),
|
201
|
+
getattr(conf, "keepalive_expiry", 30.0),
|
202
|
+
getattr(conf, "verify_ssl", True),
|
203
|
+
)
|
204
|
+
|
205
|
+
for retry in range(conf.max_retry_count + 1):
|
206
|
+
if retry > 0:
|
207
|
+
sleep_time = _get_sleep_time(retry)
|
208
|
+
logger.info(f"in-request: sleep {sleep_time}s")
|
209
|
+
time.sleep(sleep_time)
|
210
|
+
|
211
|
+
try:
|
212
|
+
response = client.request(
|
213
|
+
method_name,
|
214
|
+
url,
|
215
|
+
headers=headers,
|
216
|
+
params=tuple(req.queries),
|
217
|
+
json=json_,
|
218
|
+
data=data,
|
219
|
+
files=files,
|
220
|
+
timeout=conf.timeout,
|
221
|
+
)
|
222
|
+
break
|
223
|
+
except httpx.RequestError as e:
|
224
|
+
err_msg = f"{e.__class__.__name__}: {e!r}"
|
225
|
+
log_details = _format_log_details(method_name, url, headers, req.queries, body_data)
|
185
226
|
|
186
|
-
|
187
|
-
response = client.request(
|
188
|
-
method_name,
|
189
|
-
url,
|
190
|
-
headers=headers,
|
191
|
-
params=tuple(req.queries),
|
192
|
-
json=json_,
|
193
|
-
data=data,
|
194
|
-
files=files,
|
195
|
-
timeout=conf.timeout,
|
196
|
-
)
|
197
|
-
break
|
198
|
-
except httpx.RequestError as e:
|
199
|
-
err_msg = f"{e.__class__.__name__}: {e!r}"
|
200
|
-
log_details = _format_log_details(method_name, url, headers, req.queries, body_data)
|
201
|
-
|
202
|
-
if retry < conf.max_retry_count:
|
203
|
-
logger.info(
|
204
|
-
f"in-request: retrying ({retry + 1}/{conf.max_retry_count}) {log_details}, exp: {err_msg}"
|
205
|
-
)
|
206
|
-
continue
|
227
|
+
if retry < conf.max_retry_count:
|
207
228
|
logger.info(
|
208
|
-
f"in-request:
|
229
|
+
f"in-request: retrying ({retry + 1}/{conf.max_retry_count}) {log_details}, exp: {err_msg}"
|
209
230
|
)
|
210
|
-
|
231
|
+
continue
|
232
|
+
logger.info(
|
233
|
+
f"in-request: request failed, retried ({retry}/{conf.max_retry_count}) {log_details}, exp: {err_msg}"
|
234
|
+
)
|
235
|
+
raise
|
211
236
|
|
212
|
-
|
213
|
-
f"{_format_log_details(method_name, url, headers, req.queries, body_data)} {response.status_code}"
|
214
|
-
)
|
237
|
+
logger.debug(f"{_format_log_details(method_name, url, headers, req.queries, body_data)} {response.status_code}")
|
215
238
|
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
239
|
+
raw_resp = RawResponse()
|
240
|
+
raw_resp.status_code = response.status_code
|
241
|
+
raw_resp.headers = dict(response.headers)
|
242
|
+
raw_resp.content = response.content
|
243
|
+
return _unmarshaller(raw_resp, unmarshal_as)
|
dify_oapi/core/model/config.py
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
import ssl
|
2
|
+
|
1
3
|
from dify_oapi.core.enum import LogLevel
|
2
4
|
|
3
5
|
|
@@ -7,3 +9,11 @@ class Config:
|
|
7
9
|
self.timeout: float | None = None # Client timeout in seconds, default is no timeout
|
8
10
|
self.log_level: LogLevel = LogLevel.WARNING # Log level, default is WARNING
|
9
11
|
self.max_retry_count: int = 3 # Maximum retry count after request failure. Default is 3
|
12
|
+
|
13
|
+
# Connection pool settings
|
14
|
+
self.max_keepalive_connections: int = 20 # Max keepalive connections per pool
|
15
|
+
self.max_connections: int = 100 # Max total connections per pool
|
16
|
+
self.keepalive_expiry: float = 30.0 # Keepalive connection expiry time in seconds
|
17
|
+
|
18
|
+
# SSL settings
|
19
|
+
self.verify_ssl: ssl.SSLContext | str | bool = True # SSL certificate verification
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.3
|
2
2
|
Name: dify-oapi2
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.5.0
|
4
4
|
Summary: A package for interacting with the Dify Service-API
|
5
5
|
License: MIT
|
6
6
|
Keywords: dify,nlp,ai,language-processing
|
@@ -13,8 +13,8 @@ Classifier: Programming Language :: Python :: 3.10
|
|
13
13
|
Classifier: Programming Language :: Python :: 3.11
|
14
14
|
Classifier: Programming Language :: Python :: 3.12
|
15
15
|
Classifier: Programming Language :: Python :: 3.13
|
16
|
-
Requires-Dist: httpx (>=0
|
17
|
-
Requires-Dist: pydantic (>=
|
16
|
+
Requires-Dist: httpx (>=0,<1)
|
17
|
+
Requires-Dist: pydantic (>=2,<3)
|
18
18
|
Project-URL: Homepage, https://github.com/nodite/dify-oapi2
|
19
19
|
Project-URL: Source, https://github.com/nodite/dify-oapi2
|
20
20
|
Description-Content-Type: text/markdown
|
@@ -31,13 +31,14 @@ A Python SDK for interacting with the Dify Service-API. This library provides a
|
|
31
31
|
|
32
32
|
## ✨ Features
|
33
33
|
|
34
|
-
- **Multiple API Services**: Chat, Completion, Knowledge Base (
|
34
|
+
- **Multiple API Services**: Chat (22 APIs), Completion (15 APIs), Knowledge Base (33 APIs), Chatflow (17 APIs), Workflow, and Core Dify APIs
|
35
35
|
- **Builder Pattern**: Fluent, chainable interface for constructing requests
|
36
36
|
- **Sync & Async Support**: Both synchronous and asynchronous operations
|
37
37
|
- **Streaming Responses**: Real-time streaming for chat and completion
|
38
38
|
- **Type Safety**: Comprehensive type hints with Pydantic validation
|
39
39
|
- **File Upload**: Support for images and documents
|
40
40
|
- **Modern HTTP Client**: Built on httpx for reliable API communication
|
41
|
+
- **Connection Pool Optimization**: Efficient TCP connection reuse to reduce resource overhead
|
41
42
|
|
42
43
|
## 📦 Installation
|
43
44
|
|
@@ -116,11 +117,16 @@ asyncio.run(async_chat())
|
|
116
117
|
|
117
118
|
## 🔧 API Services
|
118
119
|
|
119
|
-
### Chat API
|
120
|
-
- Interactive conversations with AI assistants
|
121
|
-
- File
|
122
|
-
-
|
123
|
-
-
|
120
|
+
### Chat API (22 APIs)
|
121
|
+
- **Chat Messages**: Interactive conversations with AI assistants (3 APIs)
|
122
|
+
- **File Management**: Upload and manage images and documents (1 API)
|
123
|
+
- **Feedback Management**: Collect and analyze user feedback (2 APIs)
|
124
|
+
- **Conversation Management**: Complete conversation lifecycle management (5 APIs)
|
125
|
+
- **Audio Processing**: Speech-to-text and text-to-speech capabilities (2 APIs)
|
126
|
+
- **Application Information**: App configuration and metadata retrieval (4 APIs)
|
127
|
+
- **Annotation Management**: Create and manage annotations with reply settings (6 APIs)
|
128
|
+
- **Streaming Support**: Real-time streaming for chat and completion
|
129
|
+
- **Type Safety**: Comprehensive type hints with strict Literal types
|
124
130
|
|
125
131
|
### Completion API (15 APIs)
|
126
132
|
- **Message Processing**: Send messages and control responses
|
@@ -130,12 +136,24 @@ asyncio.run(async_chat())
|
|
130
136
|
- **File Upload**: Support for document and media files
|
131
137
|
- **Application Info**: Configuration and metadata retrieval
|
132
138
|
|
133
|
-
### Knowledge Base API (
|
134
|
-
- **Dataset Management**: CRUD operations
|
135
|
-
- **Document Management**:
|
136
|
-
- **Segment Management**:
|
137
|
-
- **
|
138
|
-
- **
|
139
|
+
### Knowledge Base API (33 APIs)
|
140
|
+
- **Dataset Management**: 6 APIs for dataset CRUD operations and content retrieval
|
141
|
+
- **Document Management**: 10 APIs for document upload, processing, and management
|
142
|
+
- **Segment Management**: 5 APIs for fine-grained content segmentation
|
143
|
+
- **Child Chunks Management**: 4 APIs for sub-segment management
|
144
|
+
- **Tag Management**: 7 APIs for metadata and knowledge type tags
|
145
|
+
- **Model Management**: 1 API for embedding model information
|
146
|
+
|
147
|
+
### Chatflow API (17 APIs)
|
148
|
+
- **Advanced Chat**: 3 APIs for enhanced chat functionality with workflow events
|
149
|
+
- **File Management**: 1 API for multimodal file upload and processing
|
150
|
+
- **Feedback System**: 2 APIs for comprehensive feedback collection and analysis
|
151
|
+
- **Conversation Management**: 5 APIs for complete conversation lifecycle management
|
152
|
+
- **TTS Integration**: 2 APIs for speech-to-text and text-to-speech capabilities
|
153
|
+
- **Application Configuration**: 4 APIs for app settings and metadata management
|
154
|
+
- **Annotation System**: 6 APIs for annotation management and reply settings
|
155
|
+
- **Streaming Support**: Real-time streaming with comprehensive event handling
|
156
|
+
- **Type Safety**: Strict Literal types for all predefined values
|
139
157
|
|
140
158
|
### Workflow API
|
141
159
|
- Automated workflow execution
|
@@ -150,15 +168,31 @@ asyncio.run(async_chat())
|
|
150
168
|
Explore comprehensive examples in the [examples directory](./examples):
|
151
169
|
|
152
170
|
### Chat Examples
|
153
|
-
- [**
|
154
|
-
- [**
|
155
|
-
- [**
|
171
|
+
- [**Chat Messages**](./examples/chat/chat/) - Send messages, stop generation, get suggestions
|
172
|
+
- [**File Management**](./examples/chat/file/) - Upload and manage files
|
173
|
+
- [**Feedback Management**](./examples/chat/feedback/) - Submit and retrieve feedback
|
174
|
+
- [**Conversation Management**](./examples/chat/conversation/) - Complete conversation operations
|
175
|
+
- [**Audio Processing**](./examples/chat/audio/) - Speech-to-text and text-to-speech
|
176
|
+
- [**Application Information**](./examples/chat/app/) - App configuration and settings
|
177
|
+
- [**Annotation Management**](./examples/chat/annotation/) - Annotation CRUD and reply settings
|
156
178
|
|
157
179
|
### Completion Examples
|
158
180
|
- [**Basic Completion**](./examples/completion/basic_completion.py) - Text generation
|
159
181
|
|
160
182
|
### Knowledge Base Examples
|
161
|
-
- [**
|
183
|
+
- [**Dataset Management**](./examples/knowledge/dataset/) - Complete dataset operations
|
184
|
+
- [**Document Processing**](./examples/knowledge/document/) - File upload and text processing
|
185
|
+
- [**Content Organization**](./examples/knowledge/segment/) - Segment and chunk management
|
186
|
+
- [**Tag Management**](./examples/knowledge/tag/) - Metadata and tagging system
|
187
|
+
|
188
|
+
### Chatflow Examples
|
189
|
+
- [**Advanced Chat**](./examples/chatflow/chatflow/) - Enhanced chat with streaming and workflow events
|
190
|
+
- [**File Operations**](./examples/chatflow/file/) - Multimodal file upload and processing
|
191
|
+
- [**Feedback Management**](./examples/chatflow/feedback/) - Comprehensive feedback collection
|
192
|
+
- [**Conversation Management**](./examples/chatflow/conversation/) - Complete conversation operations
|
193
|
+
- [**TTS Operations**](./examples/chatflow/tts/) - Speech-to-text and text-to-speech
|
194
|
+
- [**Application Configuration**](./examples/chatflow/application/) - App settings and metadata
|
195
|
+
- [**Annotation Management**](./examples/chatflow/annotation/) - Annotation CRUD and reply settings
|
162
196
|
|
163
197
|
For detailed examples and usage patterns, see the [examples README](./examples/README.md).
|
164
198
|
|
@@ -248,7 +282,8 @@ dify-oapi/
|
|
248
282
|
│ │ ├── chat/ # Chat API
|
249
283
|
│ │ ├── completion/ # Completion API
|
250
284
|
│ │ ├── dify/ # Core Dify API
|
251
|
-
│ │ ├──
|
285
|
+
│ │ ├── knowledge/ # Knowledge Base API (33 APIs)
|
286
|
+
│ │ ├── chatflow/ # Chatflow API (17 APIs)
|
252
287
|
│ │ └── workflow/ # Workflow API
|
253
288
|
│ ├── core/ # Core functionality
|
254
289
|
│ │ ├── http/ # HTTP transport layer
|
@@ -264,8 +299,9 @@ dify-oapi/
|
|
264
299
|
## 📖 Documentation
|
265
300
|
|
266
301
|
- [**Project Overview**](./docs/overview.md) - Architecture and technical details
|
302
|
+
- [**TCP Connection Optimization**](./docs/tcp-optimization.md) - Connection pool configuration and performance tuning
|
267
303
|
- [**Completion APIs**](./docs/completion/apis.md) - Complete completion API documentation
|
268
|
-
- [**Knowledge Base APIs**](./docs/
|
304
|
+
- [**Knowledge Base APIs**](./docs/knowledge/apis.md) - Complete knowledge base API documentation
|
269
305
|
- [**Examples**](./examples/README.md) - Usage examples and patterns
|
270
306
|
|
271
307
|
## 🤝 Contributing
|