mirror of
https://github.com/langgenius/dify.git
synced 2026-05-13 08:57:28 +08:00
Merge origin/main and resolve workflow_app_service conflict
This commit is contained in:
commit
baaf4e8041
2
.github/CODEOWNERS
vendored
2
.github/CODEOWNERS
vendored
@ -36,7 +36,7 @@
|
|||||||
/api/core/workflow/graph/ @laipz8200 @QuantumGhost
|
/api/core/workflow/graph/ @laipz8200 @QuantumGhost
|
||||||
/api/core/workflow/graph_events/ @laipz8200 @QuantumGhost
|
/api/core/workflow/graph_events/ @laipz8200 @QuantumGhost
|
||||||
/api/core/workflow/node_events/ @laipz8200 @QuantumGhost
|
/api/core/workflow/node_events/ @laipz8200 @QuantumGhost
|
||||||
/api/core/model_runtime/ @laipz8200 @QuantumGhost
|
/api/dify_graph/model_runtime/ @laipz8200 @QuantumGhost
|
||||||
|
|
||||||
# Backend - Workflow - Nodes (Agent, Iteration, Loop, LLM)
|
# Backend - Workflow - Nodes (Agent, Iteration, Loop, LLM)
|
||||||
/api/core/workflow/nodes/agent/ @Nov1c444
|
/api/core/workflow/nodes/agent/ @Nov1c444
|
||||||
|
|||||||
12
.github/workflows/pyrefly-diff.yml
vendored
12
.github/workflows/pyrefly-diff.yml
vendored
@ -29,20 +29,26 @@ jobs:
|
|||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
run: uv sync --project api --dev
|
run: uv sync --project api --dev
|
||||||
|
|
||||||
|
- name: Prepare diagnostics extractor
|
||||||
|
run: |
|
||||||
|
git show ${{ github.event.pull_request.head.sha }}:api/libs/pyrefly_diagnostics.py > /tmp/pyrefly_diagnostics.py
|
||||||
|
|
||||||
- name: Run pyrefly on PR branch
|
- name: Run pyrefly on PR branch
|
||||||
run: |
|
run: |
|
||||||
uv run --directory api pyrefly check > /tmp/pyrefly_pr.txt 2>&1 || true
|
uv run --directory api --dev pyrefly check 2>&1 \
|
||||||
|
| uv run --directory api python /tmp/pyrefly_diagnostics.py > /tmp/pyrefly_pr.txt || true
|
||||||
|
|
||||||
- name: Checkout base branch
|
- name: Checkout base branch
|
||||||
run: git checkout ${{ github.base_ref }}
|
run: git checkout ${{ github.base_ref }}
|
||||||
|
|
||||||
- name: Run pyrefly on base branch
|
- name: Run pyrefly on base branch
|
||||||
run: |
|
run: |
|
||||||
uv run --directory api pyrefly check > /tmp/pyrefly_base.txt 2>&1 || true
|
uv run --directory api --dev pyrefly check 2>&1 \
|
||||||
|
| uv run --directory api python /tmp/pyrefly_diagnostics.py > /tmp/pyrefly_base.txt || true
|
||||||
|
|
||||||
- name: Compute diff
|
- name: Compute diff
|
||||||
run: |
|
run: |
|
||||||
diff /tmp/pyrefly_base.txt /tmp/pyrefly_pr.txt > pyrefly_diff.txt || true
|
diff -u /tmp/pyrefly_base.txt /tmp/pyrefly_pr.txt > pyrefly_diff.txt || true
|
||||||
|
|
||||||
- name: Save PR number
|
- name: Save PR number
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
[importlinter]
|
[importlinter]
|
||||||
root_packages =
|
root_packages =
|
||||||
core
|
core
|
||||||
|
dify_graph
|
||||||
configs
|
configs
|
||||||
controllers
|
controllers
|
||||||
extensions
|
extensions
|
||||||
@ -21,48 +22,50 @@ layers =
|
|||||||
runtime
|
runtime
|
||||||
entities
|
entities
|
||||||
containers =
|
containers =
|
||||||
core.workflow
|
dify_graph
|
||||||
ignore_imports =
|
ignore_imports =
|
||||||
core.workflow.nodes.base.node -> core.workflow.graph_events
|
dify_graph.nodes.base.node -> dify_graph.graph_events
|
||||||
core.workflow.nodes.iteration.iteration_node -> core.workflow.graph_events
|
dify_graph.nodes.iteration.iteration_node -> dify_graph.graph_events
|
||||||
core.workflow.nodes.loop.loop_node -> core.workflow.graph_events
|
dify_graph.nodes.loop.loop_node -> dify_graph.graph_events
|
||||||
|
|
||||||
core.workflow.nodes.iteration.iteration_node -> core.app.workflow.node_factory
|
dify_graph.nodes.iteration.iteration_node -> core.workflow.node_factory
|
||||||
core.workflow.nodes.loop.loop_node -> core.app.workflow.node_factory
|
dify_graph.nodes.loop.loop_node -> core.workflow.node_factory
|
||||||
|
dify_graph.nodes.iteration.iteration_node -> core.app.workflow.layers.llm_quota
|
||||||
|
dify_graph.nodes.loop.loop_node -> core.app.workflow.layers.llm_quota
|
||||||
|
|
||||||
core.workflow.nodes.iteration.iteration_node -> core.workflow.graph_engine
|
dify_graph.nodes.iteration.iteration_node -> dify_graph.graph_engine
|
||||||
core.workflow.nodes.iteration.iteration_node -> core.workflow.graph
|
dify_graph.nodes.iteration.iteration_node -> dify_graph.graph
|
||||||
core.workflow.nodes.iteration.iteration_node -> core.workflow.graph_engine.command_channels
|
dify_graph.nodes.iteration.iteration_node -> dify_graph.graph_engine.command_channels
|
||||||
core.workflow.nodes.loop.loop_node -> core.workflow.graph_engine
|
dify_graph.nodes.loop.loop_node -> dify_graph.graph_engine
|
||||||
core.workflow.nodes.loop.loop_node -> core.workflow.graph
|
dify_graph.nodes.loop.loop_node -> dify_graph.graph
|
||||||
core.workflow.nodes.loop.loop_node -> core.workflow.graph_engine.command_channels
|
dify_graph.nodes.loop.loop_node -> dify_graph.graph_engine.command_channels
|
||||||
# TODO(QuantumGhost): fix the import violation later
|
# TODO(QuantumGhost): fix the import violation later
|
||||||
core.workflow.entities.pause_reason -> core.workflow.nodes.human_input.entities
|
dify_graph.entities.pause_reason -> dify_graph.nodes.human_input.entities
|
||||||
|
|
||||||
[importlinter:contract:workflow-infrastructure-dependencies]
|
[importlinter:contract:workflow-infrastructure-dependencies]
|
||||||
name = Workflow Infrastructure Dependencies
|
name = Workflow Infrastructure Dependencies
|
||||||
type = forbidden
|
type = forbidden
|
||||||
source_modules =
|
source_modules =
|
||||||
core.workflow
|
dify_graph
|
||||||
forbidden_modules =
|
forbidden_modules =
|
||||||
extensions.ext_database
|
extensions.ext_database
|
||||||
extensions.ext_redis
|
extensions.ext_redis
|
||||||
allow_indirect_imports = True
|
allow_indirect_imports = True
|
||||||
ignore_imports =
|
ignore_imports =
|
||||||
core.workflow.nodes.agent.agent_node -> extensions.ext_database
|
dify_graph.nodes.agent.agent_node -> extensions.ext_database
|
||||||
core.workflow.nodes.knowledge_index.knowledge_index_node -> extensions.ext_database
|
dify_graph.nodes.llm.file_saver -> extensions.ext_database
|
||||||
core.workflow.nodes.llm.file_saver -> extensions.ext_database
|
dify_graph.nodes.llm.node -> extensions.ext_database
|
||||||
core.workflow.nodes.llm.llm_utils -> extensions.ext_database
|
dify_graph.nodes.tool.tool_node -> extensions.ext_database
|
||||||
core.workflow.nodes.llm.node -> extensions.ext_database
|
dify_graph.model_runtime.model_providers.__base.ai_model -> extensions.ext_redis
|
||||||
core.workflow.nodes.tool.tool_node -> extensions.ext_database
|
dify_graph.model_runtime.model_providers.model_provider_factory -> extensions.ext_redis
|
||||||
# TODO(QuantumGhost): use DI to avoid depending on global DB.
|
# TODO(QuantumGhost): use DI to avoid depending on global DB.
|
||||||
core.workflow.nodes.human_input.human_input_node -> extensions.ext_database
|
dify_graph.nodes.human_input.human_input_node -> extensions.ext_database
|
||||||
|
|
||||||
[importlinter:contract:workflow-external-imports]
|
[importlinter:contract:workflow-external-imports]
|
||||||
name = Workflow External Imports
|
name = Workflow External Imports
|
||||||
type = forbidden
|
type = forbidden
|
||||||
source_modules =
|
source_modules =
|
||||||
core.workflow
|
dify_graph
|
||||||
forbidden_modules =
|
forbidden_modules =
|
||||||
configs
|
configs
|
||||||
controllers
|
controllers
|
||||||
@ -100,143 +103,75 @@ forbidden_modules =
|
|||||||
core.trigger
|
core.trigger
|
||||||
core.variables
|
core.variables
|
||||||
ignore_imports =
|
ignore_imports =
|
||||||
core.workflow.nodes.loop.loop_node -> core.app.workflow.node_factory
|
dify_graph.nodes.loop.loop_node -> core.workflow.node_factory
|
||||||
core.workflow.workflow_entry -> core.app.workflow.layers.observability
|
dify_graph.nodes.agent.agent_node -> core.model_manager
|
||||||
core.workflow.nodes.agent.agent_node -> core.model_manager
|
dify_graph.nodes.agent.agent_node -> core.provider_manager
|
||||||
core.workflow.nodes.agent.agent_node -> core.provider_manager
|
dify_graph.nodes.agent.agent_node -> core.tools.tool_manager
|
||||||
core.workflow.nodes.agent.agent_node -> core.tools.tool_manager
|
dify_graph.nodes.document_extractor.node -> core.helper.ssrf_proxy
|
||||||
core.workflow.nodes.document_extractor.node -> core.helper.ssrf_proxy
|
dify_graph.nodes.iteration.iteration_node -> core.workflow.node_factory
|
||||||
core.workflow.nodes.iteration.iteration_node -> core.app.workflow.node_factory
|
dify_graph.nodes.iteration.iteration_node -> core.app.workflow.layers.llm_quota
|
||||||
core.workflow.nodes.knowledge_index.knowledge_index_node -> core.rag.index_processor.index_processor_factory
|
dify_graph.nodes.llm.llm_utils -> core.model_manager
|
||||||
core.workflow.nodes.llm.llm_utils -> configs
|
dify_graph.nodes.llm.protocols -> core.model_manager
|
||||||
core.workflow.nodes.llm.llm_utils -> core.model_manager
|
dify_graph.nodes.llm.llm_utils -> dify_graph.model_runtime.model_providers.__base.large_language_model
|
||||||
core.workflow.nodes.llm.protocols -> core.model_manager
|
dify_graph.nodes.llm.node -> core.tools.signature
|
||||||
core.workflow.nodes.llm.llm_utils -> core.model_runtime.model_providers.__base.large_language_model
|
dify_graph.nodes.tool.tool_node -> core.callback_handler.workflow_tool_callback_handler
|
||||||
core.workflow.nodes.llm.llm_utils -> models.model
|
dify_graph.nodes.tool.tool_node -> core.tools.tool_engine
|
||||||
core.workflow.nodes.llm.llm_utils -> models.provider
|
dify_graph.nodes.tool.tool_node -> core.tools.tool_manager
|
||||||
core.workflow.nodes.llm.llm_utils -> services.credit_pool_service
|
dify_graph.nodes.agent.agent_node -> core.agent.entities
|
||||||
core.workflow.nodes.llm.node -> core.tools.signature
|
dify_graph.nodes.agent.agent_node -> core.agent.plugin_entities
|
||||||
core.workflow.nodes.tool.tool_node -> core.callback_handler.workflow_tool_callback_handler
|
dify_graph.nodes.base.node -> core.app.entities.app_invoke_entities
|
||||||
core.workflow.nodes.tool.tool_node -> core.tools.tool_engine
|
dify_graph.nodes.human_input.human_input_node -> core.app.entities.app_invoke_entities
|
||||||
core.workflow.nodes.tool.tool_node -> core.tools.tool_manager
|
dify_graph.nodes.knowledge_index.knowledge_index_node -> core.app.entities.app_invoke_entities
|
||||||
core.workflow.workflow_entry -> configs
|
dify_graph.nodes.knowledge_retrieval.knowledge_retrieval_node -> core.app.app_config.entities
|
||||||
core.workflow.workflow_entry -> models.workflow
|
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.advanced_prompt_transform
|
||||||
core.workflow.nodes.agent.agent_node -> core.agent.entities
|
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.simple_prompt_transform
|
||||||
core.workflow.nodes.agent.agent_node -> core.agent.plugin_entities
|
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> dify_graph.model_runtime.model_providers.__base.large_language_model
|
||||||
core.workflow.nodes.base.node -> core.app.entities.app_invoke_entities
|
dify_graph.nodes.question_classifier.question_classifier_node -> core.prompt.simple_prompt_transform
|
||||||
core.workflow.nodes.human_input.human_input_node -> core.app.entities.app_invoke_entities
|
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.model_manager
|
||||||
core.workflow.nodes.knowledge_index.knowledge_index_node -> core.app.entities.app_invoke_entities
|
dify_graph.nodes.question_classifier.question_classifier_node -> core.model_manager
|
||||||
core.workflow.nodes.knowledge_retrieval.knowledge_retrieval_node -> core.app.app_config.entities
|
dify_graph.nodes.tool.tool_node -> core.tools.utils.message_transformer
|
||||||
core.workflow.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.advanced_prompt_transform
|
dify_graph.nodes.tool.tool_node -> models
|
||||||
core.workflow.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.simple_prompt_transform
|
dify_graph.nodes.agent.agent_node -> models.model
|
||||||
core.workflow.nodes.parameter_extractor.parameter_extractor_node -> core.model_runtime.model_providers.__base.large_language_model
|
dify_graph.nodes.llm.file_saver -> core.helper.ssrf_proxy
|
||||||
core.workflow.nodes.question_classifier.question_classifier_node -> core.prompt.simple_prompt_transform
|
dify_graph.nodes.llm.node -> core.helper.code_executor
|
||||||
core.workflow.nodes.start.entities -> core.app.app_config.entities
|
dify_graph.nodes.template_transform.template_renderer -> core.helper.code_executor.code_executor
|
||||||
core.workflow.nodes.start.start_node -> core.app.app_config.entities
|
dify_graph.nodes.llm.node -> core.llm_generator.output_parser.errors
|
||||||
core.workflow.workflow_entry -> core.app.apps.exc
|
dify_graph.nodes.llm.node -> core.llm_generator.output_parser.structured_output
|
||||||
core.workflow.workflow_entry -> core.app.entities.app_invoke_entities
|
dify_graph.nodes.llm.node -> core.model_manager
|
||||||
core.workflow.workflow_entry -> core.app.workflow.node_factory
|
dify_graph.nodes.agent.entities -> core.prompt.entities.advanced_prompt_entities
|
||||||
core.workflow.nodes.llm.llm_utils -> core.entities.provider_entities
|
dify_graph.nodes.llm.entities -> core.prompt.entities.advanced_prompt_entities
|
||||||
core.workflow.nodes.parameter_extractor.parameter_extractor_node -> core.model_manager
|
dify_graph.nodes.llm.node -> core.prompt.entities.advanced_prompt_entities
|
||||||
core.workflow.nodes.question_classifier.question_classifier_node -> core.model_manager
|
dify_graph.nodes.llm.node -> core.prompt.utils.prompt_message_util
|
||||||
core.workflow.nodes.tool.tool_node -> core.tools.utils.message_transformer
|
dify_graph.nodes.parameter_extractor.entities -> core.prompt.entities.advanced_prompt_entities
|
||||||
core.workflow.nodes.tool.tool_node -> models
|
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.entities.advanced_prompt_entities
|
||||||
core.workflow.nodes.agent.agent_node -> models.model
|
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.utils.prompt_message_util
|
||||||
core.workflow.nodes.llm.file_saver -> core.helper.ssrf_proxy
|
dify_graph.nodes.question_classifier.entities -> core.prompt.entities.advanced_prompt_entities
|
||||||
core.workflow.nodes.llm.node -> core.helper.code_executor
|
dify_graph.nodes.question_classifier.question_classifier_node -> core.prompt.utils.prompt_message_util
|
||||||
core.workflow.nodes.template_transform.template_renderer -> core.helper.code_executor.code_executor
|
dify_graph.nodes.knowledge_index.entities -> core.rag.retrieval.retrieval_methods
|
||||||
core.workflow.nodes.llm.node -> core.llm_generator.output_parser.errors
|
dify_graph.nodes.llm.node -> models.dataset
|
||||||
core.workflow.nodes.llm.node -> core.llm_generator.output_parser.structured_output
|
dify_graph.nodes.agent.agent_node -> core.tools.utils.message_transformer
|
||||||
core.workflow.nodes.llm.node -> core.model_manager
|
dify_graph.nodes.llm.file_saver -> core.tools.signature
|
||||||
core.workflow.nodes.agent.entities -> core.prompt.entities.advanced_prompt_entities
|
dify_graph.nodes.llm.file_saver -> core.tools.tool_file_manager
|
||||||
core.workflow.nodes.llm.entities -> core.prompt.entities.advanced_prompt_entities
|
dify_graph.nodes.tool.tool_node -> core.tools.errors
|
||||||
core.workflow.nodes.llm.llm_utils -> core.prompt.entities.advanced_prompt_entities
|
dify_graph.nodes.agent.agent_node -> extensions.ext_database
|
||||||
core.workflow.nodes.llm.node -> core.prompt.entities.advanced_prompt_entities
|
dify_graph.nodes.llm.file_saver -> extensions.ext_database
|
||||||
core.workflow.nodes.llm.node -> core.prompt.utils.prompt_message_util
|
dify_graph.nodes.llm.node -> extensions.ext_database
|
||||||
core.workflow.nodes.parameter_extractor.entities -> core.prompt.entities.advanced_prompt_entities
|
dify_graph.nodes.tool.tool_node -> extensions.ext_database
|
||||||
core.workflow.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.entities.advanced_prompt_entities
|
dify_graph.nodes.human_input.human_input_node -> extensions.ext_database
|
||||||
core.workflow.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.utils.prompt_message_util
|
dify_graph.nodes.human_input.human_input_node -> core.repositories.human_input_repository
|
||||||
core.workflow.nodes.question_classifier.entities -> core.prompt.entities.advanced_prompt_entities
|
dify_graph.nodes.agent.agent_node -> models
|
||||||
core.workflow.nodes.question_classifier.question_classifier_node -> core.prompt.utils.prompt_message_util
|
dify_graph.nodes.base.node -> models.enums
|
||||||
core.workflow.nodes.knowledge_index.entities -> core.rag.retrieval.retrieval_methods
|
dify_graph.nodes.loop.loop_node -> core.app.workflow.layers.llm_quota
|
||||||
core.workflow.nodes.knowledge_index.knowledge_index_node -> core.rag.retrieval.retrieval_methods
|
dify_graph.nodes.llm.node -> models.model
|
||||||
core.workflow.nodes.knowledge_index.knowledge_index_node -> models.dataset
|
dify_graph.nodes.agent.agent_node -> services
|
||||||
core.workflow.nodes.knowledge_index.knowledge_index_node -> services.summary_index_service
|
dify_graph.nodes.tool.tool_node -> services
|
||||||
core.workflow.nodes.knowledge_index.knowledge_index_node -> tasks.generate_summary_index_task
|
dify_graph.model_runtime.model_providers.__base.ai_model -> configs
|
||||||
core.workflow.nodes.knowledge_index.knowledge_index_node -> core.rag.index_processor.processor.paragraph_index_processor
|
dify_graph.model_runtime.model_providers.__base.ai_model -> extensions.ext_redis
|
||||||
core.workflow.nodes.llm.node -> models.dataset
|
dify_graph.model_runtime.model_providers.__base.large_language_model -> configs
|
||||||
core.workflow.nodes.agent.agent_node -> core.tools.utils.message_transformer
|
dify_graph.model_runtime.model_providers.__base.text_embedding_model -> core.entities.embedding_type
|
||||||
core.workflow.nodes.llm.file_saver -> core.tools.signature
|
dify_graph.model_runtime.model_providers.model_provider_factory -> configs
|
||||||
core.workflow.nodes.llm.file_saver -> core.tools.tool_file_manager
|
dify_graph.model_runtime.model_providers.model_provider_factory -> extensions.ext_redis
|
||||||
core.workflow.nodes.tool.tool_node -> core.tools.errors
|
dify_graph.model_runtime.model_providers.model_provider_factory -> models.provider_ids
|
||||||
core.workflow.nodes.agent.agent_node -> extensions.ext_database
|
|
||||||
core.workflow.nodes.knowledge_index.knowledge_index_node -> extensions.ext_database
|
|
||||||
core.workflow.nodes.llm.file_saver -> extensions.ext_database
|
|
||||||
core.workflow.nodes.llm.llm_utils -> extensions.ext_database
|
|
||||||
core.workflow.nodes.llm.node -> extensions.ext_database
|
|
||||||
core.workflow.nodes.tool.tool_node -> extensions.ext_database
|
|
||||||
core.workflow.nodes.human_input.human_input_node -> extensions.ext_database
|
|
||||||
core.workflow.nodes.human_input.human_input_node -> core.repositories.human_input_repository
|
|
||||||
core.workflow.workflow_entry -> extensions.otel.runtime
|
|
||||||
core.workflow.nodes.agent.agent_node -> models
|
|
||||||
core.workflow.nodes.base.node -> models.enums
|
|
||||||
core.workflow.nodes.llm.llm_utils -> models.provider_ids
|
|
||||||
core.workflow.nodes.llm.node -> models.model
|
|
||||||
core.workflow.workflow_entry -> models.enums
|
|
||||||
core.workflow.nodes.agent.agent_node -> services
|
|
||||||
core.workflow.nodes.tool.tool_node -> services
|
|
||||||
|
|
||||||
[importlinter:contract:model-runtime-no-internal-imports]
|
|
||||||
name = Model Runtime Internal Imports
|
|
||||||
type = forbidden
|
|
||||||
source_modules =
|
|
||||||
core.model_runtime
|
|
||||||
forbidden_modules =
|
|
||||||
configs
|
|
||||||
controllers
|
|
||||||
extensions
|
|
||||||
models
|
|
||||||
services
|
|
||||||
tasks
|
|
||||||
core.agent
|
|
||||||
core.app
|
|
||||||
core.base
|
|
||||||
core.callback_handler
|
|
||||||
core.datasource
|
|
||||||
core.db
|
|
||||||
core.entities
|
|
||||||
core.errors
|
|
||||||
core.extension
|
|
||||||
core.external_data_tool
|
|
||||||
core.file
|
|
||||||
core.helper
|
|
||||||
core.hosting_configuration
|
|
||||||
core.indexing_runner
|
|
||||||
core.llm_generator
|
|
||||||
core.logging
|
|
||||||
core.mcp
|
|
||||||
core.memory
|
|
||||||
core.model_manager
|
|
||||||
core.moderation
|
|
||||||
core.ops
|
|
||||||
core.plugin
|
|
||||||
core.prompt
|
|
||||||
core.provider_manager
|
|
||||||
core.rag
|
|
||||||
core.repositories
|
|
||||||
core.schemas
|
|
||||||
core.tools
|
|
||||||
core.trigger
|
|
||||||
core.variables
|
|
||||||
core.workflow
|
|
||||||
ignore_imports =
|
|
||||||
core.model_runtime.model_providers.__base.ai_model -> configs
|
|
||||||
core.model_runtime.model_providers.__base.ai_model -> extensions.ext_redis
|
|
||||||
core.model_runtime.model_providers.__base.large_language_model -> configs
|
|
||||||
core.model_runtime.model_providers.__base.text_embedding_model -> core.entities.embedding_type
|
|
||||||
core.model_runtime.model_providers.model_provider_factory -> configs
|
|
||||||
core.model_runtime.model_providers.model_provider_factory -> extensions.ext_redis
|
|
||||||
core.model_runtime.model_providers.model_provider_factory -> models.provider_ids
|
|
||||||
|
|
||||||
[importlinter:contract:rsc]
|
[importlinter:contract:rsc]
|
||||||
name = RSC
|
name = RSC
|
||||||
@ -245,7 +180,7 @@ layers =
|
|||||||
graph_engine
|
graph_engine
|
||||||
response_coordinator
|
response_coordinator
|
||||||
containers =
|
containers =
|
||||||
core.workflow.graph_engine
|
dify_graph.graph_engine
|
||||||
|
|
||||||
[importlinter:contract:worker]
|
[importlinter:contract:worker]
|
||||||
name = Worker
|
name = Worker
|
||||||
@ -254,7 +189,7 @@ layers =
|
|||||||
graph_engine
|
graph_engine
|
||||||
worker
|
worker
|
||||||
containers =
|
containers =
|
||||||
core.workflow.graph_engine
|
dify_graph.graph_engine
|
||||||
|
|
||||||
[importlinter:contract:graph-engine-architecture]
|
[importlinter:contract:graph-engine-architecture]
|
||||||
name = Graph Engine Architecture
|
name = Graph Engine Architecture
|
||||||
@ -270,28 +205,28 @@ layers =
|
|||||||
worker_management
|
worker_management
|
||||||
domain
|
domain
|
||||||
containers =
|
containers =
|
||||||
core.workflow.graph_engine
|
dify_graph.graph_engine
|
||||||
|
|
||||||
[importlinter:contract:domain-isolation]
|
[importlinter:contract:domain-isolation]
|
||||||
name = Domain Model Isolation
|
name = Domain Model Isolation
|
||||||
type = forbidden
|
type = forbidden
|
||||||
source_modules =
|
source_modules =
|
||||||
core.workflow.graph_engine.domain
|
dify_graph.graph_engine.domain
|
||||||
forbidden_modules =
|
forbidden_modules =
|
||||||
core.workflow.graph_engine.worker_management
|
dify_graph.graph_engine.worker_management
|
||||||
core.workflow.graph_engine.command_channels
|
dify_graph.graph_engine.command_channels
|
||||||
core.workflow.graph_engine.layers
|
dify_graph.graph_engine.layers
|
||||||
core.workflow.graph_engine.protocols
|
dify_graph.graph_engine.protocols
|
||||||
|
|
||||||
[importlinter:contract:worker-management]
|
[importlinter:contract:worker-management]
|
||||||
name = Worker Management
|
name = Worker Management
|
||||||
type = forbidden
|
type = forbidden
|
||||||
source_modules =
|
source_modules =
|
||||||
core.workflow.graph_engine.worker_management
|
dify_graph.graph_engine.worker_management
|
||||||
forbidden_modules =
|
forbidden_modules =
|
||||||
core.workflow.graph_engine.orchestration
|
dify_graph.graph_engine.orchestration
|
||||||
core.workflow.graph_engine.command_processing
|
dify_graph.graph_engine.command_processing
|
||||||
core.workflow.graph_engine.event_management
|
dify_graph.graph_engine.event_management
|
||||||
|
|
||||||
|
|
||||||
[importlinter:contract:graph-traversal-components]
|
[importlinter:contract:graph-traversal-components]
|
||||||
@ -301,11 +236,11 @@ layers =
|
|||||||
edge_processor
|
edge_processor
|
||||||
skip_propagator
|
skip_propagator
|
||||||
containers =
|
containers =
|
||||||
core.workflow.graph_engine.graph_traversal
|
dify_graph.graph_engine.graph_traversal
|
||||||
|
|
||||||
[importlinter:contract:command-channels]
|
[importlinter:contract:command-channels]
|
||||||
name = Command Channels Independence
|
name = Command Channels Independence
|
||||||
type = independence
|
type = independence
|
||||||
modules =
|
modules =
|
||||||
core.workflow.graph_engine.command_channels.in_memory_channel
|
dify_graph.graph_engine.command_channels.in_memory_channel
|
||||||
core.workflow.graph_engine.command_channels.redis_channel
|
dify_graph.graph_engine.command_channels.redis_channel
|
||||||
|
|||||||
@ -100,7 +100,7 @@ ignore = [
|
|||||||
"configs/*" = [
|
"configs/*" = [
|
||||||
"N802", # invalid-function-name
|
"N802", # invalid-function-name
|
||||||
]
|
]
|
||||||
"core/model_runtime/callbacks/base_callback.py" = ["T201"]
|
"dify_graph/model_runtime/callbacks/base_callback.py" = ["T201"]
|
||||||
"core/workflow/callbacks/workflow_logging_callback.py" = ["T201"]
|
"core/workflow/callbacks/workflow_logging_callback.py" = ["T201"]
|
||||||
"libs/gmpy2_pkcs10aep_cipher.py" = [
|
"libs/gmpy2_pkcs10aep_cipher.py" = [
|
||||||
"N803", # invalid-argument-name
|
"N803", # invalid-argument-name
|
||||||
|
|||||||
@ -12,7 +12,7 @@ or any other web framework.
|
|||||||
import contextvars
|
import contextvars
|
||||||
from collections.abc import Callable
|
from collections.abc import Callable
|
||||||
|
|
||||||
from core.workflow.context.execution_context import (
|
from dify_graph.context.execution_context import (
|
||||||
ExecutionContext,
|
ExecutionContext,
|
||||||
IExecutionContext,
|
IExecutionContext,
|
||||||
NullAppContext,
|
NullAppContext,
|
||||||
|
|||||||
@ -10,8 +10,8 @@ from typing import Any, final
|
|||||||
|
|
||||||
from flask import Flask, current_app, g
|
from flask import Flask, current_app, g
|
||||||
|
|
||||||
from core.workflow.context import register_context_capturer
|
from dify_graph.context import register_context_capturer
|
||||||
from core.workflow.context.execution_context import (
|
from dify_graph.context.execution_context import (
|
||||||
AppContext,
|
AppContext,
|
||||||
IExecutionContext,
|
IExecutionContext,
|
||||||
)
|
)
|
||||||
|
|||||||
@ -4,7 +4,7 @@ from typing import Any, TypeAlias
|
|||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict, computed_field
|
from pydantic import BaseModel, ConfigDict, computed_field
|
||||||
|
|
||||||
from core.workflow.file import helpers as file_helpers
|
from dify_graph.file import helpers as file_helpers
|
||||||
from models.model import IconType
|
from models.model import IconType
|
||||||
|
|
||||||
JSONValue: TypeAlias = str | int | float | bool | None | dict[str, Any] | list[Any]
|
JSONValue: TypeAlias = str | int | float | bool | None | dict[str, Any] | list[Any]
|
||||||
|
|||||||
@ -25,8 +25,8 @@ from controllers.console.wraps import (
|
|||||||
)
|
)
|
||||||
from core.ops.ops_trace_manager import OpsTraceManager
|
from core.ops.ops_trace_manager import OpsTraceManager
|
||||||
from core.rag.retrieval.retrieval_methods import RetrievalMethod
|
from core.rag.retrieval.retrieval_methods import RetrievalMethod
|
||||||
from core.workflow.enums import NodeType, WorkflowExecutionStatus
|
from dify_graph.enums import NodeType, WorkflowExecutionStatus
|
||||||
from core.workflow.file import helpers as file_helpers
|
from dify_graph.file import helpers as file_helpers
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import App, DatasetPermissionEnum, Workflow
|
from models import App, DatasetPermissionEnum, Workflow
|
||||||
|
|||||||
@ -22,7 +22,7 @@ from controllers.console.app.error import (
|
|||||||
from controllers.console.app.wraps import get_app_model
|
from controllers.console.app.wraps import get_app_model
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from libs.login import login_required
|
from libs.login import login_required
|
||||||
from models import App, AppMode
|
from models import App, AppMode
|
||||||
from services.audio_service import AudioService
|
from services.audio_service import AudioService
|
||||||
|
|||||||
@ -26,7 +26,7 @@ from core.errors.error import (
|
|||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.helper.trace_id_helper import get_external_trace_id
|
from core.helper.trace_id_helper import get_external_trace_id
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from libs.login import current_user, login_required
|
from libs.login import current_user, login_required
|
||||||
|
|||||||
@ -18,7 +18,7 @@ from core.helper.code_executor.javascript.javascript_code_provider import Javasc
|
|||||||
from core.helper.code_executor.python3.python3_code_provider import Python3CodeProvider
|
from core.helper.code_executor.python3.python3_code_provider import Python3CodeProvider
|
||||||
from core.llm_generator.entities import RuleCodeGeneratePayload, RuleGeneratePayload, RuleStructuredOutputPayload
|
from core.llm_generator.entities import RuleCodeGeneratePayload, RuleGeneratePayload, RuleStructuredOutputPayload
|
||||||
from core.llm_generator.llm_generator import LLMGenerator
|
from core.llm_generator.llm_generator import LLMGenerator
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import App
|
from models import App
|
||||||
|
|||||||
@ -24,7 +24,7 @@ from controllers.console.wraps import (
|
|||||||
)
|
)
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.raws import FilesContainedField
|
from fields.raws import FilesContainedField
|
||||||
from libs.helper import TimestampField, uuid_value
|
from libs.helper import TimestampField, uuid_value
|
||||||
|
|||||||
@ -21,7 +21,6 @@ from core.app.apps.base_app_queue_manager import AppQueueManager
|
|||||||
from core.app.apps.workflow.app_generator import SKIP_PREPARE_USER_INPUTS_KEY
|
from core.app.apps.workflow.app_generator import SKIP_PREPARE_USER_INPUTS_KEY
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.helper.trace_id_helper import get_external_trace_id
|
from core.helper.trace_id_helper import get_external_trace_id
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from core.plugin.impl.exc import PluginInvokeError
|
from core.plugin.impl.exc import PluginInvokeError
|
||||||
from core.trigger.debug.event_selectors import (
|
from core.trigger.debug.event_selectors import (
|
||||||
TriggerDebugEvent,
|
TriggerDebugEvent,
|
||||||
@ -29,9 +28,10 @@ from core.trigger.debug.event_selectors import (
|
|||||||
create_event_poller,
|
create_event_poller,
|
||||||
select_trigger_debug_events,
|
select_trigger_debug_events,
|
||||||
)
|
)
|
||||||
from core.workflow.enums import NodeType
|
from dify_graph.enums import NodeType
|
||||||
from core.workflow.file.models import File
|
from dify_graph.file.models import File
|
||||||
from core.workflow.graph_engine.manager import GraphEngineManager
|
from dify_graph.graph_engine.manager import GraphEngineManager
|
||||||
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from factories import file_factory, variable_factory
|
from factories import file_factory, variable_factory
|
||||||
|
|||||||
@ -9,7 +9,7 @@ from sqlalchemy.orm import Session
|
|||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.app.wraps import get_app_model
|
from controllers.console.app.wraps import get_app_model
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from core.workflow.enums import WorkflowExecutionStatus
|
from dify_graph.enums import WorkflowExecutionStatus
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.workflow_app_log_fields import (
|
from fields.workflow_app_log_fields import (
|
||||||
build_workflow_app_log_pagination_model,
|
build_workflow_app_log_pagination_model,
|
||||||
|
|||||||
@ -15,11 +15,11 @@ from controllers.console.app.error import (
|
|||||||
from controllers.console.app.wraps import get_app_model
|
from controllers.console.app.wraps import get_app_model
|
||||||
from controllers.console.wraps import account_initialization_required, edit_permission_required, setup_required
|
from controllers.console.wraps import account_initialization_required, edit_permission_required, setup_required
|
||||||
from controllers.web.error import InvalidArgumentError, NotFoundError
|
from controllers.web.error import InvalidArgumentError, NotFoundError
|
||||||
from core.workflow.constants import CONVERSATION_VARIABLE_NODE_ID, SYSTEM_VARIABLE_NODE_ID
|
from dify_graph.constants import CONVERSATION_VARIABLE_NODE_ID, SYSTEM_VARIABLE_NODE_ID
|
||||||
from core.workflow.file import helpers as file_helpers
|
from dify_graph.file import helpers as file_helpers
|
||||||
from core.workflow.variables.segment_group import SegmentGroup
|
from dify_graph.variables.segment_group import SegmentGroup
|
||||||
from core.workflow.variables.segments import ArrayFileSegment, FileSegment, Segment
|
from dify_graph.variables.segments import ArrayFileSegment, FileSegment, Segment
|
||||||
from core.workflow.variables.types import SegmentType
|
from dify_graph.variables.types import SegmentType
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories.file_factory import build_from_mapping, build_from_mappings
|
from factories.file_factory import build_from_mapping, build_from_mappings
|
||||||
from factories.variable_factory import build_segment_with_type
|
from factories.variable_factory import build_segment_with_type
|
||||||
|
|||||||
@ -12,8 +12,8 @@ from controllers.console import console_ns
|
|||||||
from controllers.console.app.wraps import get_app_model
|
from controllers.console.app.wraps import get_app_model
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from controllers.web.error import NotFoundError
|
from controllers.web.error import NotFoundError
|
||||||
from core.workflow.entities.pause_reason import HumanInputRequired
|
from dify_graph.entities.pause_reason import HumanInputRequired
|
||||||
from core.workflow.enums import WorkflowExecutionStatus
|
from dify_graph.enums import WorkflowExecutionStatus
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.end_user_fields import simple_end_user_fields
|
from fields.end_user_fields import simple_end_user_fields
|
||||||
from fields.member_fields import simple_account_fields
|
from fields.member_fields import simple_account_fields
|
||||||
|
|||||||
@ -8,7 +8,7 @@ from pydantic import BaseModel
|
|||||||
from werkzeug.exceptions import BadRequest, NotFound
|
from werkzeug.exceptions import BadRequest, NotFound
|
||||||
|
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import Account
|
from models import Account
|
||||||
from models.model import OAuthProviderApp
|
from models.model import OAuthProviderApp
|
||||||
|
|||||||
@ -25,12 +25,12 @@ from controllers.console.wraps import (
|
|||||||
)
|
)
|
||||||
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
|
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
|
||||||
from core.indexing_runner import IndexingRunner
|
from core.indexing_runner import IndexingRunner
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
|
||||||
from core.provider_manager import ProviderManager
|
from core.provider_manager import ProviderManager
|
||||||
from core.rag.datasource.vdb.vector_type import VectorType
|
from core.rag.datasource.vdb.vector_type import VectorType
|
||||||
from core.rag.extractor.entity.datasource_type import DatasourceType
|
from core.rag.extractor.entity.datasource_type import DatasourceType
|
||||||
from core.rag.extractor.entity.extract_setting import ExtractSetting, NotionInfo, WebsiteInfo
|
from core.rag.extractor.entity.extract_setting import ExtractSetting, NotionInfo, WebsiteInfo
|
||||||
from core.rag.retrieval.retrieval_methods import RetrievalMethod
|
from core.rag.retrieval.retrieval_methods import RetrievalMethod
|
||||||
|
from dify_graph.model_runtime.entities.model_entities import ModelType
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.app_fields import app_detail_kernel_fields, related_app_list
|
from fields.app_fields import app_detail_kernel_fields, related_app_list
|
||||||
from fields.dataset_fields import (
|
from fields.dataset_fields import (
|
||||||
@ -53,7 +53,7 @@ from fields.dataset_fields import (
|
|||||||
from fields.document_fields import document_status_fields
|
from fields.document_fields import document_status_fields
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import ApiToken, Dataset, Document, DocumentSegment, UploadFile
|
from models import ApiToken, Dataset, Document, DocumentSegment, UploadFile
|
||||||
from models.dataset import DatasetPermissionEnum
|
from models.dataset import DatasetPermission, DatasetPermissionEnum
|
||||||
from models.provider_ids import ModelProviderID
|
from models.provider_ids import ModelProviderID
|
||||||
from services.api_token_service import ApiTokenCache
|
from services.api_token_service import ApiTokenCache
|
||||||
from services.dataset_service import DatasetPermissionService, DatasetService, DocumentService
|
from services.dataset_service import DatasetPermissionService, DatasetService, DocumentService
|
||||||
@ -323,6 +323,18 @@ class DatasetListApi(Resource):
|
|||||||
model_names.append(f"{embedding_model.model}:{embedding_model.provider.provider}")
|
model_names.append(f"{embedding_model.model}:{embedding_model.provider.provider}")
|
||||||
|
|
||||||
data = cast(list[dict[str, Any]], marshal(datasets, dataset_detail_fields))
|
data = cast(list[dict[str, Any]], marshal(datasets, dataset_detail_fields))
|
||||||
|
dataset_ids = [item["id"] for item in data if item.get("permission") == "partial_members"]
|
||||||
|
partial_members_map: dict[str, list[str]] = {}
|
||||||
|
if dataset_ids:
|
||||||
|
permissions = db.session.execute(
|
||||||
|
select(DatasetPermission.dataset_id, DatasetPermission.account_id).where(
|
||||||
|
DatasetPermission.dataset_id.in_(dataset_ids)
|
||||||
|
)
|
||||||
|
).all()
|
||||||
|
|
||||||
|
for dataset_id, account_id in permissions:
|
||||||
|
partial_members_map.setdefault(dataset_id, []).append(account_id)
|
||||||
|
|
||||||
for item in data:
|
for item in data:
|
||||||
# convert embedding_model_provider to plugin standard format
|
# convert embedding_model_provider to plugin standard format
|
||||||
if item["indexing_technique"] == "high_quality" and item["embedding_model_provider"]:
|
if item["indexing_technique"] == "high_quality" and item["embedding_model_provider"]:
|
||||||
@ -336,8 +348,7 @@ class DatasetListApi(Resource):
|
|||||||
item["embedding_available"] = True
|
item["embedding_available"] = True
|
||||||
|
|
||||||
if item.get("permission") == "partial_members":
|
if item.get("permission") == "partial_members":
|
||||||
part_users_list = DatasetPermissionService.get_dataset_partial_member_list(item["id"])
|
item.update({"partial_member_list": partial_members_map.get(item["id"], [])})
|
||||||
item.update({"partial_member_list": part_users_list})
|
|
||||||
else:
|
else:
|
||||||
item.update({"partial_member_list": []})
|
item.update({"partial_member_list": []})
|
||||||
|
|
||||||
|
|||||||
@ -24,11 +24,11 @@ from core.errors.error import (
|
|||||||
)
|
)
|
||||||
from core.indexing_runner import IndexingRunner
|
from core.indexing_runner import IndexingRunner
|
||||||
from core.model_manager import ModelManager
|
from core.model_manager import ModelManager
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
|
||||||
from core.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from core.plugin.impl.exc import PluginDaemonClientSideError
|
from core.plugin.impl.exc import PluginDaemonClientSideError
|
||||||
from core.rag.extractor.entity.datasource_type import DatasourceType
|
from core.rag.extractor.entity.datasource_type import DatasourceType
|
||||||
from core.rag.extractor.entity.extract_setting import ExtractSetting, NotionInfo, WebsiteInfo
|
from core.rag.extractor.entity.extract_setting import ExtractSetting, NotionInfo, WebsiteInfo
|
||||||
|
from dify_graph.model_runtime.entities.model_entities import ModelType
|
||||||
|
from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.dataset_fields import dataset_fields
|
from fields.dataset_fields import dataset_fields
|
||||||
from fields.document_fields import (
|
from fields.document_fields import (
|
||||||
|
|||||||
@ -26,7 +26,7 @@ from controllers.console.wraps import (
|
|||||||
)
|
)
|
||||||
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
|
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
|
||||||
from core.model_manager import ModelManager
|
from core.model_manager import ModelManager
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
from dify_graph.model_runtime.entities.model_entities import ModelType
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from fields.segment_fields import child_chunk_fields, segment_fields
|
from fields.segment_fields import child_chunk_fields, segment_fields
|
||||||
|
|||||||
@ -19,7 +19,7 @@ from core.errors.error import (
|
|||||||
ProviderTokenNotInitError,
|
ProviderTokenNotInitError,
|
||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from fields.hit_testing_fields import hit_testing_record_fields
|
from fields.hit_testing_fields import hit_testing_record_fields
|
||||||
from libs.login import current_user
|
from libs.login import current_user
|
||||||
from models.account import Account
|
from models.account import Account
|
||||||
|
|||||||
@ -9,9 +9,9 @@ from configs import dify_config
|
|||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, edit_permission_required, setup_required
|
from controllers.console.wraps import account_initialization_required, edit_permission_required, setup_required
|
||||||
from core.model_runtime.errors.validate import CredentialsValidateFailedError
|
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from core.plugin.impl.oauth import OAuthHandler
|
from core.plugin.impl.oauth import OAuthHandler
|
||||||
|
from dify_graph.model_runtime.errors.validate import CredentialsValidateFailedError
|
||||||
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models.provider_ids import DatasourceProviderID
|
from models.provider_ids import DatasourceProviderID
|
||||||
from services.datasource_provider_service import DatasourceProviderService
|
from services.datasource_provider_service import DatasourceProviderService
|
||||||
|
|||||||
@ -21,8 +21,8 @@ from controllers.console.app.workflow_draft_variable import (
|
|||||||
from controllers.console.datasets.wraps import get_rag_pipeline
|
from controllers.console.datasets.wraps import get_rag_pipeline
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from controllers.web.error import InvalidArgumentError, NotFoundError
|
from controllers.web.error import InvalidArgumentError, NotFoundError
|
||||||
from core.workflow.constants import CONVERSATION_VARIABLE_NODE_ID, SYSTEM_VARIABLE_NODE_ID
|
from dify_graph.constants import CONVERSATION_VARIABLE_NODE_ID, SYSTEM_VARIABLE_NODE_ID
|
||||||
from core.workflow.variables.types import SegmentType
|
from dify_graph.variables.types import SegmentType
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories.file_factory import build_from_mapping, build_from_mappings
|
from factories.file_factory import build_from_mapping, build_from_mappings
|
||||||
from factories.variable_factory import build_segment_with_type
|
from factories.variable_factory import build_segment_with_type
|
||||||
|
|||||||
@ -33,7 +33,7 @@ from controllers.web.error import InvokeRateLimitError as InvokeRateLimitHttpErr
|
|||||||
from core.app.apps.base_app_queue_manager import AppQueueManager
|
from core.app.apps.base_app_queue_manager import AppQueueManager
|
||||||
from core.app.apps.pipeline.pipeline_generator import PipelineGenerator
|
from core.app.apps.pipeline.pipeline_generator import PipelineGenerator
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import variable_factory
|
from factories import variable_factory
|
||||||
from libs import helper
|
from libs import helper
|
||||||
|
|||||||
@ -19,7 +19,7 @@ from controllers.console.app.error import (
|
|||||||
)
|
)
|
||||||
from controllers.console.explore.wraps import InstalledAppResource
|
from controllers.console.explore.wraps import InstalledAppResource
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from services.audio_service import AudioService
|
from services.audio_service import AudioService
|
||||||
from services.errors.audio import (
|
from services.errors.audio import (
|
||||||
AudioTooLargeServiceError,
|
AudioTooLargeServiceError,
|
||||||
|
|||||||
@ -24,7 +24,7 @@ from core.errors.error import (
|
|||||||
ProviderTokenNotInitError,
|
ProviderTokenNotInitError,
|
||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
|
|||||||
@ -21,7 +21,7 @@ from controllers.console.explore.error import (
|
|||||||
from controllers.console.explore.wraps import InstalledAppResource
|
from controllers.console.explore.wraps import InstalledAppResource
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from fields.conversation_fields import ResultResponse
|
from fields.conversation_fields import ResultResponse
|
||||||
from fields.message_fields import MessageInfiniteScrollPagination, MessageListItem, SuggestedQuestionsResponse
|
from fields.message_fields import MessageInfiniteScrollPagination, MessageListItem, SuggestedQuestionsResponse
|
||||||
from libs import helper
|
from libs import helper
|
||||||
|
|||||||
@ -41,8 +41,8 @@ from core.errors.error import (
|
|||||||
ProviderTokenNotInitError,
|
ProviderTokenNotInitError,
|
||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.graph_engine.manager import GraphEngineManager
|
||||||
from core.workflow.graph_engine.manager import GraphEngineManager
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from fields.app_fields import (
|
from fields.app_fields import (
|
||||||
|
|||||||
@ -21,8 +21,8 @@ from core.errors.error import (
|
|||||||
ProviderTokenNotInitError,
|
ProviderTokenNotInitError,
|
||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.graph_engine.manager import GraphEngineManager
|
||||||
from core.workflow.graph_engine.manager import GraphEngineManager
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.login import current_account_with_tenant
|
from libs.login import current_account_with_tenant
|
||||||
|
|||||||
@ -13,7 +13,7 @@ from controllers.common.errors import (
|
|||||||
)
|
)
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from core.helper import ssrf_proxy
|
from core.helper import ssrf_proxy
|
||||||
from core.workflow.file import helpers as file_helpers
|
from dify_graph.file import helpers as file_helpers
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.file_fields import FileWithSignedUrl, RemoteFileInfo
|
from fields.file_fields import FileWithSignedUrl, RemoteFileInfo
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
|
|||||||
@ -2,7 +2,7 @@ from flask_restx import Resource, fields
|
|||||||
|
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from services.agent_service import AgentService
|
from services.agent_service import AgentService
|
||||||
|
|
||||||
|
|||||||
@ -7,8 +7,8 @@ from pydantic import BaseModel, Field
|
|||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from core.plugin.impl.exc import PluginPermissionDeniedError
|
from core.plugin.impl.exc import PluginPermissionDeniedError
|
||||||
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from services.plugin.endpoint_service import EndpointService
|
from services.plugin.endpoint_service import EndpointService
|
||||||
|
|
||||||
|
|||||||
@ -5,8 +5,8 @@ from werkzeug.exceptions import Forbidden
|
|||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, setup_required
|
from controllers.console.wraps import account_initialization_required, setup_required
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
from dify_graph.model_runtime.entities.model_entities import ModelType
|
||||||
from core.model_runtime.errors.validate import CredentialsValidateFailedError
|
from dify_graph.model_runtime.errors.validate import CredentialsValidateFailedError
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models import TenantAccountRole
|
from models import TenantAccountRole
|
||||||
from services.model_load_balancing_service import ModelLoadBalancingService
|
from services.model_load_balancing_service import ModelLoadBalancingService
|
||||||
|
|||||||
@ -7,9 +7,9 @@ from pydantic import BaseModel, Field, field_validator
|
|||||||
|
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
from dify_graph.model_runtime.entities.model_entities import ModelType
|
||||||
from core.model_runtime.errors.validate import CredentialsValidateFailedError
|
from dify_graph.model_runtime.errors.validate import CredentialsValidateFailedError
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from services.billing_service import BillingService
|
from services.billing_service import BillingService
|
||||||
|
|||||||
@ -8,9 +8,9 @@ from pydantic import BaseModel, Field, field_validator
|
|||||||
from controllers.common.schema import register_enum_models, register_schema_models
|
from controllers.common.schema import register_enum_models, register_schema_models
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
from dify_graph.model_runtime.entities.model_entities import ModelType
|
||||||
from core.model_runtime.errors.validate import CredentialsValidateFailedError
|
from dify_graph.model_runtime.errors.validate import CredentialsValidateFailedError
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from services.model_load_balancing_service import ModelLoadBalancingService
|
from services.model_load_balancing_service import ModelLoadBalancingService
|
||||||
|
|||||||
@ -12,8 +12,8 @@ from controllers.common.schema import register_enum_models, register_schema_mode
|
|||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.workspace import plugin_permission_required
|
from controllers.console.workspace import plugin_permission_required
|
||||||
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
from controllers.console.wraps import account_initialization_required, is_admin_or_owner_required, setup_required
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from core.plugin.impl.exc import PluginDaemonClientSideError
|
from core.plugin.impl.exc import PluginDaemonClientSideError
|
||||||
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
from models.account import TenantPluginAutoUpgradeStrategy, TenantPluginPermission
|
from models.account import TenantPluginAutoUpgradeStrategy, TenantPluginPermission
|
||||||
from services.plugin.plugin_auto_upgrade_service import PluginAutoUpgradeService
|
from services.plugin.plugin_auto_upgrade_service import PluginAutoUpgradeService
|
||||||
|
|||||||
@ -23,10 +23,10 @@ from core.entities.mcp_provider import MCPAuthentication, MCPConfiguration
|
|||||||
from core.mcp.auth.auth_flow import auth, handle_callback
|
from core.mcp.auth.auth_flow import auth, handle_callback
|
||||||
from core.mcp.error import MCPAuthError, MCPError, MCPRefreshTokenError
|
from core.mcp.error import MCPAuthError, MCPError, MCPRefreshTokenError
|
||||||
from core.mcp.mcp_client import MCPClient
|
from core.mcp.mcp_client import MCPClient
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from core.plugin.entities.plugin_daemon import CredentialType
|
from core.plugin.entities.plugin_daemon import CredentialType
|
||||||
from core.plugin.impl.oauth import OAuthHandler
|
from core.plugin.impl.oauth import OAuthHandler
|
||||||
from core.tools.entities.tool_entities import ApiProviderSchemaType, WorkflowToolParameterConfiguration
|
from core.tools.entities.tool_entities import ApiProviderSchemaType, WorkflowToolParameterConfiguration
|
||||||
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.helper import alphanumeric, uuid_value
|
from libs.helper import alphanumeric, uuid_value
|
||||||
from libs.login import current_account_with_tenant, login_required
|
from libs.login import current_account_with_tenant, login_required
|
||||||
|
|||||||
@ -10,11 +10,11 @@ from werkzeug.exceptions import BadRequest, Forbidden
|
|||||||
from configs import dify_config
|
from configs import dify_config
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.web.error import NotFoundError
|
from controllers.web.error import NotFoundError
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from core.plugin.entities.plugin_daemon import CredentialType
|
from core.plugin.entities.plugin_daemon import CredentialType
|
||||||
from core.plugin.impl.oauth import OAuthHandler
|
from core.plugin.impl.oauth import OAuthHandler
|
||||||
from core.trigger.entities.entities import SubscriptionBuilderUpdater
|
from core.trigger.entities.entities import SubscriptionBuilderUpdater
|
||||||
from core.trigger.trigger_manager import TriggerManager
|
from core.trigger.trigger_manager import TriggerManager
|
||||||
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.login import current_user, login_required
|
from libs.login import current_user, login_required
|
||||||
from models.account import Account
|
from models.account import Account
|
||||||
|
|||||||
@ -8,7 +8,7 @@ from werkzeug.exceptions import Forbidden
|
|||||||
|
|
||||||
import services
|
import services
|
||||||
from core.tools.tool_file_manager import ToolFileManager
|
from core.tools.tool_file_manager import ToolFileManager
|
||||||
from core.workflow.file.helpers import verify_plugin_file_signature
|
from dify_graph.file.helpers import verify_plugin_file_signature
|
||||||
from fields.file_fields import FileResponse
|
from fields.file_fields import FileResponse
|
||||||
|
|
||||||
from ..common.errors import (
|
from ..common.errors import (
|
||||||
|
|||||||
@ -4,7 +4,6 @@ from controllers.console.wraps import setup_required
|
|||||||
from controllers.inner_api import inner_api_ns
|
from controllers.inner_api import inner_api_ns
|
||||||
from controllers.inner_api.plugin.wraps import get_user_tenant, plugin_data
|
from controllers.inner_api.plugin.wraps import get_user_tenant, plugin_data
|
||||||
from controllers.inner_api.wraps import plugin_inner_api_only
|
from controllers.inner_api.wraps import plugin_inner_api_only
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from core.plugin.backwards_invocation.app import PluginAppBackwardsInvocation
|
from core.plugin.backwards_invocation.app import PluginAppBackwardsInvocation
|
||||||
from core.plugin.backwards_invocation.base import BaseBackwardsInvocationResponse
|
from core.plugin.backwards_invocation.base import BaseBackwardsInvocationResponse
|
||||||
from core.plugin.backwards_invocation.encrypt import PluginEncrypter
|
from core.plugin.backwards_invocation.encrypt import PluginEncrypter
|
||||||
@ -29,7 +28,8 @@ from core.plugin.entities.request import (
|
|||||||
RequestRequestUploadFile,
|
RequestRequestUploadFile,
|
||||||
)
|
)
|
||||||
from core.tools.entities.tool_entities import ToolProviderType
|
from core.tools.entities.tool_entities import ToolProviderType
|
||||||
from core.workflow.file.helpers import get_signed_file_url_for_plugin
|
from dify_graph.file.helpers import get_signed_file_url_for_plugin
|
||||||
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from libs.helper import length_prefixed_response
|
from libs.helper import length_prefixed_response
|
||||||
from models import Account, Tenant
|
from models import Account, Tenant
|
||||||
from models.model import EndUser
|
from models.model import EndUser
|
||||||
|
|||||||
@ -8,9 +8,9 @@ from sqlalchemy.orm import Session
|
|||||||
from controllers.common.schema import register_schema_model
|
from controllers.common.schema import register_schema_model
|
||||||
from controllers.console.app.mcp_server import AppMCPServerStatus
|
from controllers.console.app.mcp_server import AppMCPServerStatus
|
||||||
from controllers.mcp import mcp_ns
|
from controllers.mcp import mcp_ns
|
||||||
from core.app.app_config.entities import VariableEntity
|
|
||||||
from core.mcp import types as mcp_types
|
from core.mcp import types as mcp_types
|
||||||
from core.mcp.server.streamable_http import handle_mcp_request
|
from core.mcp.server.streamable_http import handle_mcp_request
|
||||||
|
from dify_graph.variables.input_entities import VariableEntity
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from models.model import App, AppMCPServer, AppMode, EndUser
|
from models.model import App, AppMCPServer, AppMode, EndUser
|
||||||
|
|||||||
@ -21,7 +21,7 @@ from controllers.service_api.app.error import (
|
|||||||
)
|
)
|
||||||
from controllers.service_api.wraps import FetchUserArg, WhereisUserArg, validate_app_token
|
from controllers.service_api.wraps import FetchUserArg, WhereisUserArg, validate_app_token
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from models.model import App, EndUser
|
from models.model import App, EndUser
|
||||||
from services.audio_service import AudioService
|
from services.audio_service import AudioService
|
||||||
from services.errors.audio import (
|
from services.errors.audio import (
|
||||||
|
|||||||
@ -28,7 +28,7 @@ from core.errors.error import (
|
|||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.helper.trace_id_helper import get_external_trace_id
|
from core.helper.trace_id_helper import get_external_trace_id
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.helper import UUIDStrOrEmpty
|
from libs.helper import UUIDStrOrEmpty
|
||||||
from models.model import App, AppMode, EndUser
|
from models.model import App, AppMode, EndUser
|
||||||
|
|||||||
@ -27,9 +27,9 @@ from core.errors.error import (
|
|||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.helper.trace_id_helper import get_external_trace_id
|
from core.helper.trace_id_helper import get_external_trace_id
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.enums import WorkflowExecutionStatus
|
||||||
from core.workflow.enums import WorkflowExecutionStatus
|
from dify_graph.graph_engine.manager import GraphEngineManager
|
||||||
from core.workflow.graph_engine.manager import GraphEngineManager
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from fields.workflow_app_log_fields import build_workflow_app_log_pagination_model
|
from fields.workflow_app_log_fields import build_workflow_app_log_pagination_model
|
||||||
|
|||||||
@ -14,8 +14,8 @@ from controllers.service_api.wraps import (
|
|||||||
DatasetApiResource,
|
DatasetApiResource,
|
||||||
cloud_edition_billing_rate_limit_check,
|
cloud_edition_billing_rate_limit_check,
|
||||||
)
|
)
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
|
||||||
from core.provider_manager import ProviderManager
|
from core.provider_manager import ProviderManager
|
||||||
|
from dify_graph.model_runtime.entities.model_entities import ModelType
|
||||||
from fields.dataset_fields import dataset_detail_fields
|
from fields.dataset_fields import dataset_detail_fields
|
||||||
from fields.tag_fields import DataSetTag
|
from fields.tag_fields import DataSetTag
|
||||||
from libs.login import current_user
|
from libs.login import current_user
|
||||||
|
|||||||
@ -17,7 +17,7 @@ from controllers.service_api.wraps import (
|
|||||||
)
|
)
|
||||||
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
|
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
|
||||||
from core.model_manager import ModelManager
|
from core.model_manager import ModelManager
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
from dify_graph.model_runtime.entities.model_entities import ModelType
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.segment_fields import child_chunk_fields, segment_fields
|
from fields.segment_fields import child_chunk_fields, segment_fields
|
||||||
from libs.login import current_account_with_tenant
|
from libs.login import current_account_with_tenant
|
||||||
|
|||||||
@ -3,7 +3,7 @@ from flask_restx import Resource
|
|||||||
|
|
||||||
from controllers.service_api import service_api_ns
|
from controllers.service_api import service_api_ns
|
||||||
from controllers.service_api.wraps import validate_dataset_token
|
from controllers.service_api.wraps import validate_dataset_token
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from services.model_provider_service import ModelProviderService
|
from services.model_provider_service import ModelProviderService
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -20,7 +20,7 @@ from controllers.web.error import (
|
|||||||
)
|
)
|
||||||
from controllers.web.wraps import WebApiResource
|
from controllers.web.wraps import WebApiResource
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from models.model import App
|
from models.model import App
|
||||||
from services.audio_service import AudioService
|
from services.audio_service import AudioService
|
||||||
|
|||||||
@ -25,7 +25,7 @@ from core.errors.error import (
|
|||||||
ProviderTokenNotInitError,
|
ProviderTokenNotInitError,
|
||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.helper import uuid_value
|
from libs.helper import uuid_value
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
|
|||||||
@ -20,7 +20,7 @@ from controllers.web.error import (
|
|||||||
from controllers.web.wraps import WebApiResource
|
from controllers.web.wraps import WebApiResource
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from fields.conversation_fields import ResultResponse
|
from fields.conversation_fields import ResultResponse
|
||||||
from fields.message_fields import SuggestedQuestionsResponse, WebMessageInfiniteScrollPagination, WebMessageListItem
|
from fields.message_fields import SuggestedQuestionsResponse, WebMessageInfiniteScrollPagination, WebMessageListItem
|
||||||
from libs import helper
|
from libs import helper
|
||||||
|
|||||||
@ -11,7 +11,7 @@ from controllers.common.errors import (
|
|||||||
UnsupportedFileTypeError,
|
UnsupportedFileTypeError,
|
||||||
)
|
)
|
||||||
from core.helper import ssrf_proxy
|
from core.helper import ssrf_proxy
|
||||||
from core.workflow.file import helpers as file_helpers
|
from dify_graph.file import helpers as file_helpers
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from fields.file_fields import FileWithSignedUrl, RemoteFileInfo
|
from fields.file_fields import FileWithSignedUrl, RemoteFileInfo
|
||||||
from services.file_service import FileService
|
from services.file_service import FileService
|
||||||
|
|||||||
@ -22,8 +22,8 @@ from core.errors.error import (
|
|||||||
ProviderTokenNotInitError,
|
ProviderTokenNotInitError,
|
||||||
QuotaExceededError,
|
QuotaExceededError,
|
||||||
)
|
)
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.graph_engine.manager import GraphEngineManager
|
||||||
from core.workflow.graph_engine.manager import GraphEngineManager
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from models.model import App, AppMode, EndUser
|
from models.model import App, AppMode, EndUser
|
||||||
|
|||||||
@ -19,7 +19,15 @@ from core.callback_handler.agent_tool_callback_handler import DifyAgentCallbackH
|
|||||||
from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler
|
from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler
|
||||||
from core.memory.token_buffer_memory import TokenBufferMemory
|
from core.memory.token_buffer_memory import TokenBufferMemory
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from core.model_runtime.entities import (
|
from core.prompt.utils.extract_thread_messages import extract_thread_messages
|
||||||
|
from core.tools.__base.tool import Tool
|
||||||
|
from core.tools.entities.tool_entities import (
|
||||||
|
ToolParameter,
|
||||||
|
)
|
||||||
|
from core.tools.tool_manager import ToolManager
|
||||||
|
from core.tools.utils.dataset_retriever_tool import DatasetRetrieverTool
|
||||||
|
from dify_graph.file import file_manager
|
||||||
|
from dify_graph.model_runtime.entities import (
|
||||||
AssistantPromptMessage,
|
AssistantPromptMessage,
|
||||||
LLMUsage,
|
LLMUsage,
|
||||||
PromptMessage,
|
PromptMessage,
|
||||||
@ -29,17 +37,9 @@ from core.model_runtime.entities import (
|
|||||||
ToolPromptMessage,
|
ToolPromptMessage,
|
||||||
UserPromptMessage,
|
UserPromptMessage,
|
||||||
)
|
)
|
||||||
from core.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
||||||
from core.model_runtime.entities.model_entities import ModelFeature
|
from dify_graph.model_runtime.entities.model_entities import ModelFeature
|
||||||
from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
||||||
from core.prompt.utils.extract_thread_messages import extract_thread_messages
|
|
||||||
from core.tools.__base.tool import Tool
|
|
||||||
from core.tools.entities.tool_entities import (
|
|
||||||
ToolParameter,
|
|
||||||
)
|
|
||||||
from core.tools.tool_manager import ToolManager
|
|
||||||
from core.tools.utils.dataset_retriever_tool import DatasetRetrieverTool
|
|
||||||
from core.workflow.file import file_manager
|
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from models.enums import CreatorUserRole
|
from models.enums import CreatorUserRole
|
||||||
|
|||||||
@ -9,20 +9,20 @@ from core.agent.entities import AgentScratchpadUnit
|
|||||||
from core.agent.output_parser.cot_output_parser import CotAgentOutputParser
|
from core.agent.output_parser.cot_output_parser import CotAgentOutputParser
|
||||||
from core.app.apps.base_app_queue_manager import PublishFrom
|
from core.app.apps.base_app_queue_manager import PublishFrom
|
||||||
from core.app.entities.queue_entities import QueueAgentThoughtEvent, QueueMessageEndEvent, QueueMessageFileEvent
|
from core.app.entities.queue_entities import QueueAgentThoughtEvent, QueueMessageEndEvent, QueueMessageFileEvent
|
||||||
from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
from core.model_runtime.entities.message_entities import (
|
from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransform
|
||||||
|
from core.tools.__base.tool import Tool
|
||||||
|
from core.tools.entities.tool_entities import ToolInvokeMeta
|
||||||
|
from core.tools.tool_engine import ToolEngine
|
||||||
|
from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
|
||||||
|
from dify_graph.model_runtime.entities.message_entities import (
|
||||||
AssistantPromptMessage,
|
AssistantPromptMessage,
|
||||||
PromptMessage,
|
PromptMessage,
|
||||||
PromptMessageTool,
|
PromptMessageTool,
|
||||||
ToolPromptMessage,
|
ToolPromptMessage,
|
||||||
UserPromptMessage,
|
UserPromptMessage,
|
||||||
)
|
)
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from dify_graph.nodes.agent.exc import AgentMaxIterationError
|
||||||
from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransform
|
|
||||||
from core.tools.__base.tool import Tool
|
|
||||||
from core.tools.entities.tool_entities import ToolInvokeMeta
|
|
||||||
from core.tools.tool_engine import ToolEngine
|
|
||||||
from core.workflow.nodes.agent.exc import AgentMaxIterationError
|
|
||||||
from models.model import Message
|
from models.model import Message
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -1,16 +1,16 @@
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
from core.agent.cot_agent_runner import CotAgentRunner
|
from core.agent.cot_agent_runner import CotAgentRunner
|
||||||
from core.model_runtime.entities import (
|
from dify_graph.file import file_manager
|
||||||
|
from dify_graph.model_runtime.entities import (
|
||||||
AssistantPromptMessage,
|
AssistantPromptMessage,
|
||||||
PromptMessage,
|
PromptMessage,
|
||||||
SystemPromptMessage,
|
SystemPromptMessage,
|
||||||
TextPromptMessageContent,
|
TextPromptMessageContent,
|
||||||
UserPromptMessage,
|
UserPromptMessage,
|
||||||
)
|
)
|
||||||
from core.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from core.workflow.file import file_manager
|
|
||||||
|
|
||||||
|
|
||||||
class CotChatAgentRunner(CotAgentRunner):
|
class CotChatAgentRunner(CotAgentRunner):
|
||||||
|
|||||||
@ -1,13 +1,13 @@
|
|||||||
import json
|
import json
|
||||||
|
|
||||||
from core.agent.cot_agent_runner import CotAgentRunner
|
from core.agent.cot_agent_runner import CotAgentRunner
|
||||||
from core.model_runtime.entities.message_entities import (
|
from dify_graph.model_runtime.entities.message_entities import (
|
||||||
AssistantPromptMessage,
|
AssistantPromptMessage,
|
||||||
PromptMessage,
|
PromptMessage,
|
||||||
TextPromptMessageContent,
|
TextPromptMessageContent,
|
||||||
UserPromptMessage,
|
UserPromptMessage,
|
||||||
)
|
)
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
|
|
||||||
|
|
||||||
class CotCompletionAgentRunner(CotAgentRunner):
|
class CotCompletionAgentRunner(CotAgentRunner):
|
||||||
|
|||||||
@ -7,7 +7,11 @@ from typing import Any, Union
|
|||||||
from core.agent.base_agent_runner import BaseAgentRunner
|
from core.agent.base_agent_runner import BaseAgentRunner
|
||||||
from core.app.apps.base_app_queue_manager import PublishFrom
|
from core.app.apps.base_app_queue_manager import PublishFrom
|
||||||
from core.app.entities.queue_entities import QueueAgentThoughtEvent, QueueMessageEndEvent, QueueMessageFileEvent
|
from core.app.entities.queue_entities import QueueAgentThoughtEvent, QueueMessageEndEvent, QueueMessageFileEvent
|
||||||
from core.model_runtime.entities import (
|
from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransform
|
||||||
|
from core.tools.entities.tool_entities import ToolInvokeMeta
|
||||||
|
from core.tools.tool_engine import ToolEngine
|
||||||
|
from dify_graph.file import file_manager
|
||||||
|
from dify_graph.model_runtime.entities import (
|
||||||
AssistantPromptMessage,
|
AssistantPromptMessage,
|
||||||
LLMResult,
|
LLMResult,
|
||||||
LLMResultChunk,
|
LLMResultChunk,
|
||||||
@ -20,12 +24,8 @@ from core.model_runtime.entities import (
|
|||||||
ToolPromptMessage,
|
ToolPromptMessage,
|
||||||
UserPromptMessage,
|
UserPromptMessage,
|
||||||
)
|
)
|
||||||
from core.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
|
||||||
from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransform
|
from dify_graph.nodes.agent.exc import AgentMaxIterationError
|
||||||
from core.tools.entities.tool_entities import ToolInvokeMeta
|
|
||||||
from core.tools.tool_engine import ToolEngine
|
|
||||||
from core.workflow.file import file_manager
|
|
||||||
from core.workflow.nodes.agent.exc import AgentMaxIterationError
|
|
||||||
from models.model import Message
|
from models.model import Message
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -4,7 +4,7 @@ from collections.abc import Generator
|
|||||||
from typing import Union
|
from typing import Union
|
||||||
|
|
||||||
from core.agent.entities import AgentScratchpadUnit
|
from core.agent.entities import AgentScratchpadUnit
|
||||||
from core.model_runtime.entities.llm_entities import LLMResultChunk
|
from dify_graph.model_runtime.entities.llm_entities import LLMResultChunk
|
||||||
|
|
||||||
|
|
||||||
class CotAgentOutputParser:
|
class CotAgentOutputParser:
|
||||||
|
|||||||
@ -4,10 +4,10 @@ from core.app.app_config.entities import EasyUIBasedAppConfig
|
|||||||
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
|
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
|
||||||
from core.entities.model_entities import ModelStatus
|
from core.entities.model_entities import ModelStatus
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.model_runtime.entities.llm_entities import LLMMode
|
|
||||||
from core.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
|
|
||||||
from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
|
||||||
from core.provider_manager import ProviderManager
|
from core.provider_manager import ProviderManager
|
||||||
|
from dify_graph.model_runtime.entities.llm_entities import LLMMode
|
||||||
|
from dify_graph.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
|
||||||
|
from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
||||||
|
|
||||||
|
|
||||||
class ModelConfigConverter:
|
class ModelConfigConverter:
|
||||||
|
|||||||
@ -2,9 +2,9 @@ from collections.abc import Mapping
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from core.app.app_config.entities import ModelConfigEntity
|
from core.app.app_config.entities import ModelConfigEntity
|
||||||
from core.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
|
|
||||||
from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
|
|
||||||
from core.provider_manager import ProviderManager
|
from core.provider_manager import ProviderManager
|
||||||
|
from dify_graph.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
|
||||||
|
from dify_graph.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
|
||||||
from models.provider_ids import ModelProviderID
|
from models.provider_ids import ModelProviderID
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -4,8 +4,8 @@ from core.app.app_config.entities import (
|
|||||||
AdvancedCompletionPromptTemplateEntity,
|
AdvancedCompletionPromptTemplateEntity,
|
||||||
PromptTemplateEntity,
|
PromptTemplateEntity,
|
||||||
)
|
)
|
||||||
from core.model_runtime.entities.message_entities import PromptMessageRole
|
|
||||||
from core.prompt.simple_prompt_transform import ModelMode
|
from core.prompt.simple_prompt_transform import ModelMode
|
||||||
|
from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,7 +1,8 @@
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
from core.app.app_config.entities import ExternalDataVariableEntity, VariableEntity, VariableEntityType
|
from core.app.app_config.entities import ExternalDataVariableEntity
|
||||||
from core.external_data_tool.factory import ExternalDataToolFactory
|
from core.external_data_tool.factory import ExternalDataToolFactory
|
||||||
|
from dify_graph.variables.input_entities import VariableEntity, VariableEntityType
|
||||||
|
|
||||||
_ALLOWED_VARIABLE_ENTITY_TYPE = frozenset(
|
_ALLOWED_VARIABLE_ENTITY_TYPE = frozenset(
|
||||||
[
|
[
|
||||||
|
|||||||
@ -2,12 +2,12 @@ from collections.abc import Sequence
|
|||||||
from enum import StrEnum, auto
|
from enum import StrEnum, auto
|
||||||
from typing import Any, Literal
|
from typing import Any, Literal
|
||||||
|
|
||||||
from jsonschema import Draft7Validator, SchemaError
|
from pydantic import BaseModel, Field
|
||||||
from pydantic import BaseModel, Field, field_validator
|
|
||||||
|
|
||||||
from core.model_runtime.entities.llm_entities import LLMMode
|
from dify_graph.file import FileUploadConfig
|
||||||
from core.model_runtime.entities.message_entities import PromptMessageRole
|
from dify_graph.model_runtime.entities.llm_entities import LLMMode
|
||||||
from core.workflow.file import FileTransferMethod, FileType, FileUploadConfig
|
from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
|
||||||
|
from dify_graph.variables.input_entities import VariableEntity as WorkflowVariableEntity
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
|
|
||||||
|
|
||||||
@ -90,61 +90,7 @@ class PromptTemplateEntity(BaseModel):
|
|||||||
advanced_completion_prompt_template: AdvancedCompletionPromptTemplateEntity | None = None
|
advanced_completion_prompt_template: AdvancedCompletionPromptTemplateEntity | None = None
|
||||||
|
|
||||||
|
|
||||||
class VariableEntityType(StrEnum):
|
class RagPipelineVariableEntity(WorkflowVariableEntity):
|
||||||
TEXT_INPUT = "text-input"
|
|
||||||
SELECT = "select"
|
|
||||||
PARAGRAPH = "paragraph"
|
|
||||||
NUMBER = "number"
|
|
||||||
EXTERNAL_DATA_TOOL = "external_data_tool"
|
|
||||||
FILE = "file"
|
|
||||||
FILE_LIST = "file-list"
|
|
||||||
CHECKBOX = "checkbox"
|
|
||||||
JSON_OBJECT = "json_object"
|
|
||||||
|
|
||||||
|
|
||||||
class VariableEntity(BaseModel):
|
|
||||||
"""
|
|
||||||
Variable Entity.
|
|
||||||
"""
|
|
||||||
|
|
||||||
# `variable` records the name of the variable in user inputs.
|
|
||||||
variable: str
|
|
||||||
label: str
|
|
||||||
description: str = ""
|
|
||||||
type: VariableEntityType
|
|
||||||
required: bool = False
|
|
||||||
hide: bool = False
|
|
||||||
default: Any = None
|
|
||||||
max_length: int | None = None
|
|
||||||
options: Sequence[str] = Field(default_factory=list)
|
|
||||||
allowed_file_types: Sequence[FileType] | None = Field(default_factory=list)
|
|
||||||
allowed_file_extensions: Sequence[str] | None = Field(default_factory=list)
|
|
||||||
allowed_file_upload_methods: Sequence[FileTransferMethod] | None = Field(default_factory=list)
|
|
||||||
json_schema: dict | None = Field(default=None)
|
|
||||||
|
|
||||||
@field_validator("description", mode="before")
|
|
||||||
@classmethod
|
|
||||||
def convert_none_description(cls, v: Any) -> str:
|
|
||||||
return v or ""
|
|
||||||
|
|
||||||
@field_validator("options", mode="before")
|
|
||||||
@classmethod
|
|
||||||
def convert_none_options(cls, v: Any) -> Sequence[str]:
|
|
||||||
return v or []
|
|
||||||
|
|
||||||
@field_validator("json_schema")
|
|
||||||
@classmethod
|
|
||||||
def validate_json_schema(cls, schema: dict | None) -> dict | None:
|
|
||||||
if schema is None:
|
|
||||||
return None
|
|
||||||
try:
|
|
||||||
Draft7Validator.check_schema(schema)
|
|
||||||
except SchemaError as e:
|
|
||||||
raise ValueError(f"Invalid JSON schema: {e.message}")
|
|
||||||
return schema
|
|
||||||
|
|
||||||
|
|
||||||
class RagPipelineVariableEntity(VariableEntity):
|
|
||||||
"""
|
"""
|
||||||
Rag Pipeline Variable Entity.
|
Rag Pipeline Variable Entity.
|
||||||
"""
|
"""
|
||||||
@ -314,7 +260,7 @@ class AppConfig(BaseModel):
|
|||||||
app_id: str
|
app_id: str
|
||||||
app_mode: AppMode
|
app_mode: AppMode
|
||||||
additional_features: AppAdditionalFeatures | None = None
|
additional_features: AppAdditionalFeatures | None = None
|
||||||
variables: list[VariableEntity] = []
|
variables: list[WorkflowVariableEntity] = []
|
||||||
sensitive_word_avoidance: SensitiveWordAvoidanceEntity | None = None
|
sensitive_word_avoidance: SensitiveWordAvoidanceEntity | None = None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@ from collections.abc import Mapping
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from constants import DEFAULT_FILE_NUMBER_LIMITS
|
from constants import DEFAULT_FILE_NUMBER_LIMITS
|
||||||
from core.workflow.file import FileUploadConfig
|
from dify_graph.file import FileUploadConfig
|
||||||
|
|
||||||
|
|
||||||
class FileUploadConfigManager:
|
class FileUploadConfigManager:
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import re
|
import re
|
||||||
|
|
||||||
from core.app.app_config.entities import RagPipelineVariableEntity, VariableEntity
|
from core.app.app_config.entities import RagPipelineVariableEntity
|
||||||
|
from dify_graph.variables.input_entities import VariableEntity
|
||||||
from models.workflow import Workflow
|
from models.workflow import Workflow
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -31,18 +31,18 @@ from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity,
|
|||||||
from core.app.entities.task_entities import ChatbotAppBlockingResponse, ChatbotAppStreamResponse
|
from core.app.entities.task_entities import ChatbotAppBlockingResponse, ChatbotAppStreamResponse
|
||||||
from core.app.layers.pause_state_persist_layer import PauseStateLayerConfig, PauseStatePersistenceLayer
|
from core.app.layers.pause_state_persist_layer import PauseStateLayerConfig, PauseStatePersistenceLayer
|
||||||
from core.helper.trace_id_helper import extract_external_trace_id_from_args
|
from core.helper.trace_id_helper import extract_external_trace_id_from_args
|
||||||
from core.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
from core.prompt.utils.get_thread_messages_length import get_thread_messages_length
|
from core.prompt.utils.get_thread_messages_length import get_thread_messages_length
|
||||||
from core.repositories import DifyCoreRepositoryFactory
|
from core.repositories import DifyCoreRepositoryFactory
|
||||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
from core.workflow.repositories.draft_variable_repository import (
|
from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
|
from dify_graph.repositories.draft_variable_repository import (
|
||||||
DraftVariableSaverFactory,
|
DraftVariableSaverFactory,
|
||||||
)
|
)
|
||||||
from core.workflow.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
from dify_graph.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
||||||
from core.workflow.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
from dify_graph.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
||||||
from core.workflow.runtime import GraphRuntimeState
|
from dify_graph.runtime import GraphRuntimeState
|
||||||
from core.workflow.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
from dify_graph.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from libs.flask_utils import preserve_flask_contexts
|
from libs.flask_utils import preserve_flask_contexts
|
||||||
|
|||||||
@ -25,16 +25,16 @@ from core.app.workflow.layers.persistence import PersistenceWorkflowInfo, Workfl
|
|||||||
from core.db.session_factory import session_factory
|
from core.db.session_factory import session_factory
|
||||||
from core.moderation.base import ModerationError
|
from core.moderation.base import ModerationError
|
||||||
from core.moderation.input_moderation import InputModeration
|
from core.moderation.input_moderation import InputModeration
|
||||||
from core.workflow.enums import WorkflowType
|
|
||||||
from core.workflow.graph_engine.command_channels.redis_channel import RedisChannel
|
|
||||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
|
||||||
from core.workflow.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
|
||||||
from core.workflow.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
|
||||||
from core.workflow.runtime import GraphRuntimeState, VariablePool
|
|
||||||
from core.workflow.system_variable import SystemVariable
|
|
||||||
from core.workflow.variable_loader import VariableLoader
|
|
||||||
from core.workflow.variables.variables import Variable
|
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
|
from dify_graph.enums import WorkflowType
|
||||||
|
from dify_graph.graph_engine.command_channels.redis_channel import RedisChannel
|
||||||
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
|
from dify_graph.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
||||||
|
from dify_graph.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
||||||
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
|
from dify_graph.system_variable import SystemVariable
|
||||||
|
from dify_graph.variable_loader import VariableLoader
|
||||||
|
from dify_graph.variables.variables import Variable
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from extensions.otel import WorkflowAppRunnerHandler, trace_span
|
from extensions.otel import WorkflowAppRunnerHandler, trace_span
|
||||||
|
|||||||
@ -63,16 +63,16 @@ from core.app.entities.task_entities import (
|
|||||||
from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTaskPipeline
|
from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTaskPipeline
|
||||||
from core.app.task_pipeline.message_cycle_manager import MessageCycleManager
|
from core.app.task_pipeline.message_cycle_manager import MessageCycleManager
|
||||||
from core.base.tts import AppGeneratorTTSPublisher, AudioTrunk
|
from core.base.tts import AppGeneratorTTSPublisher, AudioTrunk
|
||||||
from core.model_runtime.entities.llm_entities import LLMUsage
|
|
||||||
from core.model_runtime.utils.encoders import jsonable_encoder
|
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
from core.repositories.human_input_repository import HumanInputFormRepositoryImpl
|
from core.repositories.human_input_repository import HumanInputFormRepositoryImpl
|
||||||
from core.workflow.entities.pause_reason import HumanInputRequired
|
from dify_graph.entities.pause_reason import HumanInputRequired
|
||||||
from core.workflow.enums import WorkflowExecutionStatus
|
from dify_graph.enums import WorkflowExecutionStatus
|
||||||
from core.workflow.nodes import NodeType
|
from dify_graph.model_runtime.entities.llm_entities import LLMUsage
|
||||||
from core.workflow.repositories.draft_variable_repository import DraftVariableSaverFactory
|
from dify_graph.model_runtime.utils.encoders import jsonable_encoder
|
||||||
from core.workflow.runtime import GraphRuntimeState
|
from dify_graph.nodes import NodeType
|
||||||
from core.workflow.system_variable import SystemVariable
|
from dify_graph.repositories.draft_variable_repository import DraftVariableSaverFactory
|
||||||
|
from dify_graph.runtime import GraphRuntimeState
|
||||||
|
from dify_graph.system_variable import SystemVariable
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from models import Account, Conversation, EndUser, Message, MessageFile
|
from models import Account, Conversation, EndUser, Message, MessageFile
|
||||||
|
|||||||
@ -20,8 +20,8 @@ from core.app.apps.exc import GenerateTaskStoppedError
|
|||||||
from core.app.apps.message_based_app_generator import MessageBasedAppGenerator
|
from core.app.apps.message_based_app_generator import MessageBasedAppGenerator
|
||||||
from core.app.apps.message_based_app_queue_manager import MessageBasedAppQueueManager
|
from core.app.apps.message_based_app_queue_manager import MessageBasedAppQueueManager
|
||||||
from core.app.entities.app_invoke_entities import AgentChatAppGenerateEntity, InvokeFrom
|
from core.app.entities.app_invoke_entities import AgentChatAppGenerateEntity, InvokeFrom
|
||||||
from core.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
|
from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from libs.flask_utils import preserve_flask_contexts
|
from libs.flask_utils import preserve_flask_contexts
|
||||||
|
|||||||
@ -14,10 +14,10 @@ from core.app.entities.app_invoke_entities import AgentChatAppGenerateEntity
|
|||||||
from core.app.entities.queue_entities import QueueAnnotationReplyEvent
|
from core.app.entities.queue_entities import QueueAnnotationReplyEvent
|
||||||
from core.memory.token_buffer_memory import TokenBufferMemory
|
from core.memory.token_buffer_memory import TokenBufferMemory
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from core.model_runtime.entities.llm_entities import LLMMode
|
|
||||||
from core.model_runtime.entities.model_entities import ModelFeature, ModelPropertyKey
|
|
||||||
from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
|
||||||
from core.moderation.base import ModerationError
|
from core.moderation.base import ModerationError
|
||||||
|
from dify_graph.model_runtime.entities.llm_entities import LLMMode
|
||||||
|
from dify_graph.model_runtime.entities.model_entities import ModelFeature, ModelPropertyKey
|
||||||
|
from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.model import App, Conversation, Message
|
from models.model import App, Conversation, Message
|
||||||
|
|
||||||
|
|||||||
@ -6,7 +6,7 @@ from typing import Any, Union
|
|||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.app.entities.task_entities import AppBlockingResponse, AppStreamResponse
|
from core.app.entities.task_entities import AppBlockingResponse, AppStreamResponse
|
||||||
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotInitError, QuotaExceededError
|
||||||
from core.model_runtime.errors.invoke import InvokeError
|
from dify_graph.model_runtime.errors.invoke import InvokeError
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@ -3,22 +3,22 @@ from typing import TYPE_CHECKING, Any, Union, final
|
|||||||
|
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from core.app.app_config.entities import VariableEntityType
|
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from core.workflow.enums import NodeType
|
from dify_graph.enums import NodeType
|
||||||
from core.workflow.file import File, FileUploadConfig
|
from dify_graph.file import File, FileUploadConfig
|
||||||
from core.workflow.repositories.draft_variable_repository import (
|
from dify_graph.repositories.draft_variable_repository import (
|
||||||
DraftVariableSaver,
|
DraftVariableSaver,
|
||||||
DraftVariableSaverFactory,
|
DraftVariableSaverFactory,
|
||||||
NoopDraftVariableSaver,
|
NoopDraftVariableSaver,
|
||||||
)
|
)
|
||||||
|
from dify_graph.variables.input_entities import VariableEntityType
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from libs.orjson import orjson_dumps
|
from libs.orjson import orjson_dumps
|
||||||
from models import Account, EndUser
|
from models import Account, EndUser
|
||||||
from services.workflow_draft_variable_service import DraftVariableSaver as DraftVariableSaverImpl
|
from services.workflow_draft_variable_service import DraftVariableSaver as DraftVariableSaverImpl
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.app.app_config.entities import VariableEntity
|
from dify_graph.variables.input_entities import VariableEntity
|
||||||
|
|
||||||
|
|
||||||
class BaseAppGenerator:
|
class BaseAppGenerator:
|
||||||
|
|||||||
@ -20,7 +20,7 @@ from core.app.entities.queue_entities import (
|
|||||||
QueueStopEvent,
|
QueueStopEvent,
|
||||||
WorkflowQueueMessage,
|
WorkflowQueueMessage,
|
||||||
)
|
)
|
||||||
from core.workflow.runtime import GraphRuntimeState
|
from dify_graph.runtime import GraphRuntimeState
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|||||||
@ -24,27 +24,27 @@ from core.app.features.hosting_moderation.hosting_moderation import HostingModer
|
|||||||
from core.external_data_tool.external_data_fetch import ExternalDataFetch
|
from core.external_data_tool.external_data_fetch import ExternalDataFetch
|
||||||
from core.memory.token_buffer_memory import TokenBufferMemory
|
from core.memory.token_buffer_memory import TokenBufferMemory
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
|
|
||||||
from core.model_runtime.entities.message_entities import (
|
|
||||||
AssistantPromptMessage,
|
|
||||||
ImagePromptMessageContent,
|
|
||||||
PromptMessage,
|
|
||||||
TextPromptMessageContent,
|
|
||||||
)
|
|
||||||
from core.model_runtime.entities.model_entities import ModelPropertyKey
|
|
||||||
from core.model_runtime.errors.invoke import InvokeBadRequestError
|
|
||||||
from core.moderation.input_moderation import InputModeration
|
from core.moderation.input_moderation import InputModeration
|
||||||
from core.prompt.advanced_prompt_transform import AdvancedPromptTransform
|
from core.prompt.advanced_prompt_transform import AdvancedPromptTransform
|
||||||
from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate, MemoryConfig
|
from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate, MemoryConfig
|
||||||
from core.prompt.simple_prompt_transform import ModelMode, SimplePromptTransform
|
from core.prompt.simple_prompt_transform import ModelMode, SimplePromptTransform
|
||||||
from core.tools.tool_file_manager import ToolFileManager
|
from core.tools.tool_file_manager import ToolFileManager
|
||||||
from core.workflow.file.enums import FileTransferMethod, FileType
|
from dify_graph.file.enums import FileTransferMethod, FileType
|
||||||
|
from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
|
||||||
|
from dify_graph.model_runtime.entities.message_entities import (
|
||||||
|
AssistantPromptMessage,
|
||||||
|
ImagePromptMessageContent,
|
||||||
|
PromptMessage,
|
||||||
|
TextPromptMessageContent,
|
||||||
|
)
|
||||||
|
from dify_graph.model_runtime.entities.model_entities import ModelPropertyKey
|
||||||
|
from dify_graph.model_runtime.errors.invoke import InvokeBadRequestError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.enums import CreatorUserRole
|
from models.enums import CreatorUserRole
|
||||||
from models.model import App, AppMode, Message, MessageAnnotation, MessageFile
|
from models.model import App, AppMode, Message, MessageAnnotation, MessageFile
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.workflow.file.models import File
|
from dify_graph.file.models import File
|
||||||
|
|
||||||
_logger = logging.getLogger(__name__)
|
_logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@ -19,8 +19,8 @@ from core.app.apps.exc import GenerateTaskStoppedError
|
|||||||
from core.app.apps.message_based_app_generator import MessageBasedAppGenerator
|
from core.app.apps.message_based_app_generator import MessageBasedAppGenerator
|
||||||
from core.app.apps.message_based_app_queue_manager import MessageBasedAppQueueManager
|
from core.app.apps.message_based_app_queue_manager import MessageBasedAppQueueManager
|
||||||
from core.app.entities.app_invoke_entities import ChatAppGenerateEntity, InvokeFrom
|
from core.app.entities.app_invoke_entities import ChatAppGenerateEntity, InvokeFrom
|
||||||
from core.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
|
from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from models import Account
|
from models import Account
|
||||||
|
|||||||
@ -13,10 +13,10 @@ from core.app.entities.queue_entities import QueueAnnotationReplyEvent
|
|||||||
from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler
|
from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler
|
||||||
from core.memory.token_buffer_memory import TokenBufferMemory
|
from core.memory.token_buffer_memory import TokenBufferMemory
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from core.model_runtime.entities.message_entities import ImagePromptMessageContent
|
|
||||||
from core.moderation.base import ModerationError
|
from core.moderation.base import ModerationError
|
||||||
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
|
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
|
||||||
from core.workflow.file import File
|
from dify_graph.file import File
|
||||||
|
from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.model import App, Conversation, Message
|
from models.model import App, Conversation, Message
|
||||||
|
|
||||||
|
|||||||
@ -4,7 +4,7 @@ from __future__ import annotations
|
|||||||
|
|
||||||
from typing import TYPE_CHECKING
|
from typing import TYPE_CHECKING
|
||||||
|
|
||||||
from core.workflow.runtime import GraphRuntimeState
|
from dify_graph.runtime import GraphRuntimeState
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTaskPipeline
|
from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTaskPipeline
|
||||||
|
|||||||
@ -49,21 +49,21 @@ from core.plugin.impl.datasource import PluginDatasourceManager
|
|||||||
from core.tools.entities.tool_entities import ToolProviderType
|
from core.tools.entities.tool_entities import ToolProviderType
|
||||||
from core.tools.tool_manager import ToolManager
|
from core.tools.tool_manager import ToolManager
|
||||||
from core.trigger.trigger_manager import TriggerManager
|
from core.trigger.trigger_manager import TriggerManager
|
||||||
from core.workflow.entities.pause_reason import HumanInputRequired
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
from core.workflow.entities.workflow_start_reason import WorkflowStartReason
|
from dify_graph.entities.pause_reason import HumanInputRequired
|
||||||
from core.workflow.enums import (
|
from dify_graph.entities.workflow_start_reason import WorkflowStartReason
|
||||||
|
from dify_graph.enums import (
|
||||||
NodeType,
|
NodeType,
|
||||||
SystemVariableKey,
|
SystemVariableKey,
|
||||||
WorkflowExecutionStatus,
|
WorkflowExecutionStatus,
|
||||||
WorkflowNodeExecutionMetadataKey,
|
WorkflowNodeExecutionMetadataKey,
|
||||||
WorkflowNodeExecutionStatus,
|
WorkflowNodeExecutionStatus,
|
||||||
)
|
)
|
||||||
from core.workflow.file import FILE_MODEL_IDENTITY, File
|
from dify_graph.file import FILE_MODEL_IDENTITY, File
|
||||||
from core.workflow.runtime import GraphRuntimeState
|
from dify_graph.runtime import GraphRuntimeState
|
||||||
from core.workflow.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from core.workflow.variables.segments import ArrayFileSegment, FileSegment, Segment
|
from dify_graph.variables.segments import ArrayFileSegment, FileSegment, Segment
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from dify_graph.workflow_type_encoder import WorkflowRuntimeTypeConverter
|
||||||
from core.workflow.workflow_type_encoder import WorkflowRuntimeTypeConverter
|
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from models import Account, EndUser
|
from models import Account, EndUser
|
||||||
|
|||||||
@ -19,8 +19,8 @@ from core.app.apps.exc import GenerateTaskStoppedError
|
|||||||
from core.app.apps.message_based_app_generator import MessageBasedAppGenerator
|
from core.app.apps.message_based_app_generator import MessageBasedAppGenerator
|
||||||
from core.app.apps.message_based_app_queue_manager import MessageBasedAppQueueManager
|
from core.app.apps.message_based_app_queue_manager import MessageBasedAppQueueManager
|
||||||
from core.app.entities.app_invoke_entities import CompletionAppGenerateEntity, InvokeFrom
|
from core.app.entities.app_invoke_entities import CompletionAppGenerateEntity, InvokeFrom
|
||||||
from core.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
|
from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from models import Account, App, EndUser, Message
|
from models import Account, App, EndUser, Message
|
||||||
|
|||||||
@ -11,10 +11,10 @@ from core.app.entities.app_invoke_entities import (
|
|||||||
)
|
)
|
||||||
from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler
|
from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from core.model_runtime.entities.message_entities import ImagePromptMessageContent
|
|
||||||
from core.moderation.base import ModerationError
|
from core.moderation.base import ModerationError
|
||||||
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
|
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
|
||||||
from core.workflow.file import File
|
from dify_graph.file import File
|
||||||
|
from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.model import App, Message
|
from models.model import App, Message
|
||||||
|
|
||||||
|
|||||||
@ -33,13 +33,13 @@ from core.datasource.entities.datasource_entities import (
|
|||||||
)
|
)
|
||||||
from core.datasource.online_drive.online_drive_plugin import OnlineDriveDatasourcePlugin
|
from core.datasource.online_drive.online_drive_plugin import OnlineDriveDatasourcePlugin
|
||||||
from core.entities.knowledge_entities import PipelineDataset, PipelineDocument
|
from core.entities.knowledge_entities import PipelineDataset, PipelineDocument
|
||||||
from core.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from core.rag.index_processor.constant.built_in_field import BuiltInField
|
from core.rag.index_processor.constant.built_in_field import BuiltInField
|
||||||
from core.repositories.factory import DifyCoreRepositoryFactory
|
from core.repositories.factory import DifyCoreRepositoryFactory
|
||||||
from core.workflow.repositories.draft_variable_repository import DraftVariableSaverFactory
|
from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
from core.workflow.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
from dify_graph.repositories.draft_variable_repository import DraftVariableSaverFactory
|
||||||
from core.workflow.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
from dify_graph.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
||||||
from core.workflow.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
from dify_graph.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
||||||
|
from dify_graph.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.flask_utils import preserve_flask_contexts
|
from libs.flask_utils import preserve_flask_contexts
|
||||||
from models import Account, EndUser, Workflow, WorkflowNodeExecutionTriggeredFrom
|
from models import Account, EndUser, Workflow, WorkflowNodeExecutionTriggeredFrom
|
||||||
|
|||||||
@ -10,18 +10,18 @@ from core.app.entities.app_invoke_entities import (
|
|||||||
RagPipelineGenerateEntity,
|
RagPipelineGenerateEntity,
|
||||||
)
|
)
|
||||||
from core.app.workflow.layers.persistence import PersistenceWorkflowInfo, WorkflowPersistenceLayer
|
from core.app.workflow.layers.persistence import PersistenceWorkflowInfo, WorkflowPersistenceLayer
|
||||||
from core.app.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from core.workflow.entities.graph_init_params import GraphInitParams
|
|
||||||
from core.workflow.enums import WorkflowType
|
|
||||||
from core.workflow.graph import Graph
|
|
||||||
from core.workflow.graph_events import GraphEngineEvent, GraphRunFailedEvent
|
|
||||||
from core.workflow.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
|
||||||
from core.workflow.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
|
||||||
from core.workflow.runtime import GraphRuntimeState, VariablePool
|
|
||||||
from core.workflow.system_variable import SystemVariable
|
|
||||||
from core.workflow.variable_loader import VariableLoader
|
|
||||||
from core.workflow.variables.variables import RAGPipelineVariable, RAGPipelineVariableInput
|
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
|
from dify_graph.entities.graph_init_params import GraphInitParams
|
||||||
|
from dify_graph.enums import WorkflowType
|
||||||
|
from dify_graph.graph import Graph
|
||||||
|
from dify_graph.graph_events import GraphEngineEvent, GraphRunFailedEvent
|
||||||
|
from dify_graph.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
||||||
|
from dify_graph.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
||||||
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
|
from dify_graph.system_variable import SystemVariable
|
||||||
|
from dify_graph.variable_loader import VariableLoader
|
||||||
|
from dify_graph.variables.variables import RAGPipelineVariable, RAGPipelineVariableInput
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models.dataset import Document, Pipeline
|
from models.dataset import Document, Pipeline
|
||||||
from models.enums import UserFrom
|
from models.enums import UserFrom
|
||||||
|
|||||||
@ -28,15 +28,15 @@ from core.app.entities.task_entities import WorkflowAppBlockingResponse, Workflo
|
|||||||
from core.app.layers.pause_state_persist_layer import PauseStateLayerConfig, PauseStatePersistenceLayer
|
from core.app.layers.pause_state_persist_layer import PauseStateLayerConfig, PauseStatePersistenceLayer
|
||||||
from core.db.session_factory import session_factory
|
from core.db.session_factory import session_factory
|
||||||
from core.helper.trace_id_helper import extract_external_trace_id_from_args
|
from core.helper.trace_id_helper import extract_external_trace_id_from_args
|
||||||
from core.model_runtime.errors.invoke import InvokeAuthorizationError
|
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
from core.repositories import DifyCoreRepositoryFactory
|
from core.repositories import DifyCoreRepositoryFactory
|
||||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
from core.workflow.repositories.draft_variable_repository import DraftVariableSaverFactory
|
from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
|
||||||
from core.workflow.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
from dify_graph.repositories.draft_variable_repository import DraftVariableSaverFactory
|
||||||
from core.workflow.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
from dify_graph.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
||||||
from core.workflow.runtime import GraphRuntimeState
|
from dify_graph.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
||||||
from core.workflow.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
from dify_graph.runtime import GraphRuntimeState
|
||||||
|
from dify_graph.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from factories import file_factory
|
from factories import file_factory
|
||||||
from libs.flask_utils import preserve_flask_contexts
|
from libs.flask_utils import preserve_flask_contexts
|
||||||
|
|||||||
@ -8,15 +8,15 @@ from core.app.apps.workflow.app_config_manager import WorkflowAppConfig
|
|||||||
from core.app.apps.workflow_app_runner import WorkflowBasedAppRunner
|
from core.app.apps.workflow_app_runner import WorkflowBasedAppRunner
|
||||||
from core.app.entities.app_invoke_entities import InvokeFrom, WorkflowAppGenerateEntity
|
from core.app.entities.app_invoke_entities import InvokeFrom, WorkflowAppGenerateEntity
|
||||||
from core.app.workflow.layers.persistence import PersistenceWorkflowInfo, WorkflowPersistenceLayer
|
from core.app.workflow.layers.persistence import PersistenceWorkflowInfo, WorkflowPersistenceLayer
|
||||||
from core.workflow.enums import WorkflowType
|
|
||||||
from core.workflow.graph_engine.command_channels.redis_channel import RedisChannel
|
|
||||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
|
||||||
from core.workflow.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
|
||||||
from core.workflow.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
|
||||||
from core.workflow.runtime import GraphRuntimeState, VariablePool
|
|
||||||
from core.workflow.system_variable import SystemVariable
|
|
||||||
from core.workflow.variable_loader import VariableLoader
|
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
|
from dify_graph.enums import WorkflowType
|
||||||
|
from dify_graph.graph_engine.command_channels.redis_channel import RedisChannel
|
||||||
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
|
from dify_graph.repositories.workflow_execution_repository import WorkflowExecutionRepository
|
||||||
|
from dify_graph.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
|
||||||
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
|
from dify_graph.system_variable import SystemVariable
|
||||||
|
from dify_graph.variable_loader import VariableLoader
|
||||||
from extensions.ext_redis import redis_client
|
from extensions.ext_redis import redis_client
|
||||||
from extensions.otel import WorkflowAppRunnerHandler, trace_span
|
from extensions.otel import WorkflowAppRunnerHandler, trace_span
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
|
|||||||
@ -55,11 +55,11 @@ from core.app.entities.task_entities import (
|
|||||||
from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTaskPipeline
|
from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTaskPipeline
|
||||||
from core.base.tts import AppGeneratorTTSPublisher, AudioTrunk
|
from core.base.tts import AppGeneratorTTSPublisher, AudioTrunk
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
from core.workflow.entities.workflow_start_reason import WorkflowStartReason
|
from dify_graph.entities.workflow_start_reason import WorkflowStartReason
|
||||||
from core.workflow.enums import WorkflowExecutionStatus
|
from dify_graph.enums import WorkflowExecutionStatus
|
||||||
from core.workflow.repositories.draft_variable_repository import DraftVariableSaverFactory
|
from dify_graph.repositories.draft_variable_repository import DraftVariableSaverFactory
|
||||||
from core.workflow.runtime import GraphRuntimeState
|
from dify_graph.runtime import GraphRuntimeState
|
||||||
from core.workflow.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from models import Account
|
from models import Account
|
||||||
from models.enums import CreatorUserRole
|
from models.enums import CreatorUserRole
|
||||||
|
|||||||
@ -29,12 +29,13 @@ from core.app.entities.queue_entities import (
|
|||||||
QueueWorkflowStartedEvent,
|
QueueWorkflowStartedEvent,
|
||||||
QueueWorkflowSucceededEvent,
|
QueueWorkflowSucceededEvent,
|
||||||
)
|
)
|
||||||
from core.app.workflow.node_factory import DifyNodeFactory
|
from core.workflow.node_factory import DifyNodeFactory
|
||||||
from core.workflow.entities import GraphInitParams
|
from core.workflow.workflow_entry import WorkflowEntry
|
||||||
from core.workflow.entities.pause_reason import HumanInputRequired
|
from dify_graph.entities import GraphInitParams
|
||||||
from core.workflow.graph import Graph
|
from dify_graph.entities.pause_reason import HumanInputRequired
|
||||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
from dify_graph.graph import Graph
|
||||||
from core.workflow.graph_events import (
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
|
from dify_graph.graph_events import (
|
||||||
GraphEngineEvent,
|
GraphEngineEvent,
|
||||||
GraphRunFailedEvent,
|
GraphRunFailedEvent,
|
||||||
GraphRunPartialSucceededEvent,
|
GraphRunPartialSucceededEvent,
|
||||||
@ -60,13 +61,12 @@ from core.workflow.graph_events import (
|
|||||||
NodeRunStreamChunkEvent,
|
NodeRunStreamChunkEvent,
|
||||||
NodeRunSucceededEvent,
|
NodeRunSucceededEvent,
|
||||||
)
|
)
|
||||||
from core.workflow.graph_events.graph import GraphRunAbortedEvent
|
from dify_graph.graph_events.graph import GraphRunAbortedEvent
|
||||||
from core.workflow.nodes import NodeType
|
from dify_graph.nodes import NodeType
|
||||||
from core.workflow.nodes.node_mapping import NODE_TYPE_CLASSES_MAPPING
|
from dify_graph.nodes.node_mapping import NODE_TYPE_CLASSES_MAPPING
|
||||||
from core.workflow.runtime import GraphRuntimeState, VariablePool
|
from dify_graph.runtime import GraphRuntimeState, VariablePool
|
||||||
from core.workflow.system_variable import SystemVariable
|
from dify_graph.system_variable import SystemVariable
|
||||||
from core.workflow.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader, load_into_variable_pool
|
from dify_graph.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader, load_into_variable_pool
|
||||||
from core.workflow.workflow_entry import WorkflowEntry
|
|
||||||
from models.enums import UserFrom
|
from models.enums import UserFrom
|
||||||
from models.workflow import Workflow
|
from models.workflow import Workflow
|
||||||
from tasks.mail_human_input_delivery_task import dispatch_human_input_email_task
|
from tasks.mail_human_input_delivery_task import dispatch_human_input_email_task
|
||||||
|
|||||||
@ -7,8 +7,8 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validat
|
|||||||
from constants import UUID_NIL
|
from constants import UUID_NIL
|
||||||
from core.app.app_config.entities import EasyUIBasedAppConfig, WorkflowUIBasedAppConfig
|
from core.app.app_config.entities import EasyUIBasedAppConfig, WorkflowUIBasedAppConfig
|
||||||
from core.entities.provider_configuration import ProviderModelBundle
|
from core.entities.provider_configuration import ProviderModelBundle
|
||||||
from core.model_runtime.entities.model_entities import AIModelEntity
|
from dify_graph.file import File, FileUploadConfig
|
||||||
from core.workflow.file import File, FileUploadConfig
|
from dify_graph.model_runtime.entities.model_entities import AIModelEntity
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager
|
from core.ops.ops_trace_manager import TraceQueueManager
|
||||||
|
|||||||
@ -5,13 +5,13 @@ from typing import Any
|
|||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict, Field
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
|
|
||||||
from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
|
|
||||||
from core.rag.entities.citation_metadata import RetrievalSourceMetadata
|
from core.rag.entities.citation_metadata import RetrievalSourceMetadata
|
||||||
from core.workflow.entities import AgentNodeStrategyInit
|
from dify_graph.entities import AgentNodeStrategyInit
|
||||||
from core.workflow.entities.pause_reason import PauseReason
|
from dify_graph.entities.pause_reason import PauseReason
|
||||||
from core.workflow.entities.workflow_start_reason import WorkflowStartReason
|
from dify_graph.entities.workflow_start_reason import WorkflowStartReason
|
||||||
from core.workflow.enums import WorkflowNodeExecutionMetadataKey
|
from dify_graph.enums import WorkflowNodeExecutionMetadataKey
|
||||||
from core.workflow.nodes import NodeType
|
from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
|
||||||
|
from dify_graph.nodes import NodeType
|
||||||
|
|
||||||
|
|
||||||
class QueueEvent(StrEnum):
|
class QueueEvent(StrEnum):
|
||||||
|
|||||||
@ -4,12 +4,12 @@ from typing import Any
|
|||||||
|
|
||||||
from pydantic import BaseModel, ConfigDict, Field
|
from pydantic import BaseModel, ConfigDict, Field
|
||||||
|
|
||||||
from core.model_runtime.entities.llm_entities import LLMResult, LLMUsage
|
|
||||||
from core.rag.entities.citation_metadata import RetrievalSourceMetadata
|
from core.rag.entities.citation_metadata import RetrievalSourceMetadata
|
||||||
from core.workflow.entities import AgentNodeStrategyInit
|
from dify_graph.entities import AgentNodeStrategyInit
|
||||||
from core.workflow.entities.workflow_start_reason import WorkflowStartReason
|
from dify_graph.entities.workflow_start_reason import WorkflowStartReason
|
||||||
from core.workflow.enums import WorkflowExecutionStatus, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
|
from dify_graph.enums import WorkflowExecutionStatus, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
|
||||||
from core.workflow.nodes.human_input.entities import FormInput, UserAction
|
from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMUsage
|
||||||
|
from dify_graph.nodes.human_input.entities import FormInput, UserAction
|
||||||
|
|
||||||
|
|
||||||
class AnnotationReplyAccount(BaseModel):
|
class AnnotationReplyAccount(BaseModel):
|
||||||
|
|||||||
@ -2,7 +2,7 @@ import logging
|
|||||||
|
|
||||||
from core.app.entities.app_invoke_entities import EasyUIBasedAppGenerateEntity
|
from core.app.entities.app_invoke_entities import EasyUIBasedAppGenerateEntity
|
||||||
from core.helper import moderation
|
from core.helper import moderation
|
||||||
from core.model_runtime.entities.message_entities import PromptMessage
|
from dify_graph.model_runtime.entities.message_entities import PromptMessage
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@ -1,12 +1,12 @@
|
|||||||
import logging
|
import logging
|
||||||
|
|
||||||
from core.workflow.constants import CONVERSATION_VARIABLE_NODE_ID
|
from dify_graph.constants import CONVERSATION_VARIABLE_NODE_ID
|
||||||
from core.workflow.conversation_variable_updater import ConversationVariableUpdater
|
from dify_graph.conversation_variable_updater import ConversationVariableUpdater
|
||||||
from core.workflow.enums import NodeType
|
from dify_graph.enums import NodeType
|
||||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
from core.workflow.graph_events import GraphEngineEvent, NodeRunSucceededEvent
|
from dify_graph.graph_events import GraphEngineEvent, NodeRunSucceededEvent
|
||||||
from core.workflow.nodes.variable_assigner.common import helpers as common_helpers
|
from dify_graph.nodes.variable_assigner.common import helpers as common_helpers
|
||||||
from core.workflow.variables import VariableBase
|
from dify_graph.variables import VariableBase
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|||||||
@ -6,9 +6,9 @@ from sqlalchemy import Engine
|
|||||||
from sqlalchemy.orm import Session, sessionmaker
|
from sqlalchemy.orm import Session, sessionmaker
|
||||||
|
|
||||||
from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity
|
from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity
|
||||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
from core.workflow.graph_events.base import GraphEngineEvent
|
from dify_graph.graph_events.base import GraphEngineEvent
|
||||||
from core.workflow.graph_events.graph import GraphRunPausedEvent
|
from dify_graph.graph_events.graph import GraphRunPausedEvent
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
from repositories.api_workflow_run_repository import APIWorkflowRunRepository
|
from repositories.api_workflow_run_repository import APIWorkflowRunRepository
|
||||||
from repositories.factory import DifyAPIRepositoryFactory
|
from repositories.factory import DifyAPIRepositoryFactory
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
from core.workflow.graph_events.base import GraphEngineEvent
|
from dify_graph.graph_events.base import GraphEngineEvent
|
||||||
from core.workflow.graph_events.graph import GraphRunPausedEvent
|
from dify_graph.graph_events.graph import GraphRunPausedEvent
|
||||||
|
|
||||||
|
|
||||||
class SuspendLayer(GraphEngineLayer):
|
class SuspendLayer(GraphEngineLayer):
|
||||||
|
|||||||
@ -4,9 +4,9 @@ from typing import ClassVar
|
|||||||
|
|
||||||
from apscheduler.schedulers.background import BackgroundScheduler # type: ignore
|
from apscheduler.schedulers.background import BackgroundScheduler # type: ignore
|
||||||
|
|
||||||
from core.workflow.graph_engine.entities.commands import CommandType, GraphEngineCommand
|
from dify_graph.graph_engine.entities.commands import CommandType, GraphEngineCommand
|
||||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
from core.workflow.graph_events.base import GraphEngineEvent
|
from dify_graph.graph_events.base import GraphEngineEvent
|
||||||
from services.workflow.entities import WorkflowScheduleCFSPlanEntity
|
from services.workflow.entities import WorkflowScheduleCFSPlanEntity
|
||||||
from services.workflow.scheduler import CFSPlanScheduler, SchedulerCommand
|
from services.workflow.scheduler import CFSPlanScheduler, SchedulerCommand
|
||||||
|
|
||||||
|
|||||||
@ -5,9 +5,9 @@ from typing import Any, ClassVar
|
|||||||
from pydantic import TypeAdapter
|
from pydantic import TypeAdapter
|
||||||
|
|
||||||
from core.db.session_factory import session_factory
|
from core.db.session_factory import session_factory
|
||||||
from core.workflow.graph_engine.layers.base import GraphEngineLayer
|
from dify_graph.graph_engine.layers.base import GraphEngineLayer
|
||||||
from core.workflow.graph_events.base import GraphEngineEvent
|
from dify_graph.graph_events.base import GraphEngineEvent
|
||||||
from core.workflow.graph_events.graph import GraphRunFailedEvent, GraphRunPausedEvent, GraphRunSucceededEvent
|
from dify_graph.graph_events.graph import GraphRunFailedEvent, GraphRunPausedEvent, GraphRunSucceededEvent
|
||||||
from models.enums import WorkflowTriggerStatus
|
from models.enums import WorkflowTriggerStatus
|
||||||
from repositories.sqlalchemy_workflow_trigger_log_repository import SQLAlchemyWorkflowTriggerLogRepository
|
from repositories.sqlalchemy_workflow_trigger_log_repository import SQLAlchemyWorkflowTriggerLogRepository
|
||||||
from tasks.workflow_cfs_scheduler.cfs_scheduler import AsyncWorkflowCFSPlanEntity
|
from tasks.workflow_cfs_scheduler.cfs_scheduler import AsyncWorkflowCFSPlanEntity
|
||||||
|
|||||||
@ -1 +1,5 @@
|
|||||||
"""LLM-related application services."""
|
"""LLM-related application services."""
|
||||||
|
|
||||||
|
from .quota import deduct_llm_quota, ensure_llm_quota_available
|
||||||
|
|
||||||
|
__all__ = ["deduct_llm_quota", "ensure_llm_quota_available"]
|
||||||
|
|||||||
@ -5,11 +5,11 @@ from typing import Any
|
|||||||
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
|
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
|
||||||
from core.errors.error import ProviderTokenNotInitError
|
from core.errors.error import ProviderTokenNotInitError
|
||||||
from core.model_manager import ModelInstance, ModelManager
|
from core.model_manager import ModelInstance, ModelManager
|
||||||
from core.model_runtime.entities.model_entities import ModelType
|
|
||||||
from core.provider_manager import ProviderManager
|
from core.provider_manager import ProviderManager
|
||||||
from core.workflow.nodes.llm.entities import ModelConfig
|
from dify_graph.model_runtime.entities.model_entities import ModelType
|
||||||
from core.workflow.nodes.llm.exc import LLMModeRequiredError, ModelNotExistError
|
from dify_graph.nodes.llm.entities import ModelConfig
|
||||||
from core.workflow.nodes.llm.protocols import CredentialsProvider, ModelFactory
|
from dify_graph.nodes.llm.exc import LLMModeRequiredError, ModelNotExistError
|
||||||
|
from dify_graph.nodes.llm.protocols import CredentialsProvider, ModelFactory
|
||||||
|
|
||||||
|
|
||||||
class DifyCredentialsProvider:
|
class DifyCredentialsProvider:
|
||||||
|
|||||||
@ -1,76 +1,34 @@
|
|||||||
from collections.abc import Sequence
|
from sqlalchemy import update
|
||||||
from typing import cast
|
|
||||||
|
|
||||||
from sqlalchemy import select, update
|
|
||||||
from sqlalchemy.orm import Session
|
from sqlalchemy.orm import Session
|
||||||
|
|
||||||
from configs import dify_config
|
from configs import dify_config
|
||||||
|
from core.entities.model_entities import ModelStatus
|
||||||
from core.entities.provider_entities import ProviderQuotaType, QuotaUnit
|
from core.entities.provider_entities import ProviderQuotaType, QuotaUnit
|
||||||
from core.memory.token_buffer_memory import TokenBufferMemory
|
from core.errors.error import QuotaExceededError
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from core.model_runtime.entities.llm_entities import LLMUsage
|
from dify_graph.model_runtime.entities.llm_entities import LLMUsage
|
||||||
from core.model_runtime.entities.model_entities import AIModelEntity
|
|
||||||
from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
|
||||||
from core.prompt.entities.advanced_prompt_entities import MemoryConfig
|
|
||||||
from core.workflow.enums import SystemVariableKey
|
|
||||||
from core.workflow.file.models import File
|
|
||||||
from core.workflow.runtime import VariablePool
|
|
||||||
from core.workflow.variables.segments import ArrayAnySegment, ArrayFileSegment, FileSegment, NoneSegment, StringSegment
|
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
from models.model import Conversation
|
|
||||||
from models.provider import Provider, ProviderType
|
from models.provider import Provider, ProviderType
|
||||||
from models.provider_ids import ModelProviderID
|
from models.provider_ids import ModelProviderID
|
||||||
|
|
||||||
from .exc import InvalidVariableTypeError
|
|
||||||
|
|
||||||
|
def ensure_llm_quota_available(*, model_instance: ModelInstance) -> None:
|
||||||
|
provider_model_bundle = model_instance.provider_model_bundle
|
||||||
|
provider_configuration = provider_model_bundle.configuration
|
||||||
|
|
||||||
def fetch_model_schema(*, model_instance: ModelInstance) -> AIModelEntity:
|
if provider_configuration.using_provider_type != ProviderType.SYSTEM:
|
||||||
model_schema = cast(LargeLanguageModel, model_instance.model_type_instance).get_model_schema(
|
return
|
||||||
model_instance.model_name,
|
|
||||||
model_instance.credentials,
|
provider_model = provider_configuration.get_provider_model(
|
||||||
|
model_type=model_instance.model_type_instance.model_type,
|
||||||
|
model=model_instance.model_name,
|
||||||
)
|
)
|
||||||
if not model_schema:
|
if provider_model and provider_model.status == ModelStatus.QUOTA_EXCEEDED:
|
||||||
raise ValueError(f"Model schema not found for {model_instance.model_name}")
|
raise QuotaExceededError(f"Model provider {model_instance.provider} quota exceeded.")
|
||||||
return model_schema
|
|
||||||
|
|
||||||
|
|
||||||
def fetch_files(variable_pool: VariablePool, selector: Sequence[str]) -> Sequence["File"]:
|
def deduct_llm_quota(*, tenant_id: str, model_instance: ModelInstance, usage: LLMUsage) -> None:
|
||||||
variable = variable_pool.get(selector)
|
|
||||||
if variable is None:
|
|
||||||
return []
|
|
||||||
elif isinstance(variable, FileSegment):
|
|
||||||
return [variable.value]
|
|
||||||
elif isinstance(variable, ArrayFileSegment):
|
|
||||||
return variable.value
|
|
||||||
elif isinstance(variable, NoneSegment | ArrayAnySegment):
|
|
||||||
return []
|
|
||||||
raise InvalidVariableTypeError(f"Invalid variable type: {type(variable)}")
|
|
||||||
|
|
||||||
|
|
||||||
def fetch_memory(
|
|
||||||
variable_pool: VariablePool, app_id: str, node_data_memory: MemoryConfig | None, model_instance: ModelInstance
|
|
||||||
) -> TokenBufferMemory | None:
|
|
||||||
if not node_data_memory:
|
|
||||||
return None
|
|
||||||
|
|
||||||
# get conversation id
|
|
||||||
conversation_id_variable = variable_pool.get(["sys", SystemVariableKey.CONVERSATION_ID])
|
|
||||||
if not isinstance(conversation_id_variable, StringSegment):
|
|
||||||
return None
|
|
||||||
conversation_id = conversation_id_variable.value
|
|
||||||
|
|
||||||
with Session(db.engine, expire_on_commit=False) as session:
|
|
||||||
stmt = select(Conversation).where(Conversation.app_id == app_id, Conversation.id == conversation_id)
|
|
||||||
conversation = session.scalar(stmt)
|
|
||||||
if not conversation:
|
|
||||||
return None
|
|
||||||
|
|
||||||
memory = TokenBufferMemory(conversation=conversation, model_instance=model_instance)
|
|
||||||
return memory
|
|
||||||
|
|
||||||
|
|
||||||
def deduct_llm_quota(tenant_id: str, model_instance: ModelInstance, usage: LLMUsage):
|
|
||||||
provider_model_bundle = model_instance.provider_model_bundle
|
provider_model_bundle = model_instance.provider_model_bundle
|
||||||
provider_configuration = provider_model_bundle.configuration
|
provider_configuration = provider_model_bundle.configuration
|
||||||
|
|
||||||
@ -16,8 +16,8 @@ from core.app.entities.task_entities import (
|
|||||||
PingStreamResponse,
|
PingStreamResponse,
|
||||||
)
|
)
|
||||||
from core.errors.error import QuotaExceededError
|
from core.errors.error import QuotaExceededError
|
||||||
from core.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeError
|
|
||||||
from core.moderation.output_moderation import ModerationRule, OutputModeration
|
from core.moderation.output_moderation import ModerationRule, OutputModeration
|
||||||
|
from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeError
|
||||||
from models.enums import MessageStatus
|
from models.enums import MessageStatus
|
||||||
from models.model import Message
|
from models.model import Message
|
||||||
|
|
||||||
|
|||||||
@ -46,19 +46,19 @@ from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTas
|
|||||||
from core.app.task_pipeline.message_cycle_manager import MessageCycleManager
|
from core.app.task_pipeline.message_cycle_manager import MessageCycleManager
|
||||||
from core.base.tts import AppGeneratorTTSPublisher, AudioTrunk
|
from core.base.tts import AppGeneratorTTSPublisher, AudioTrunk
|
||||||
from core.model_manager import ModelInstance
|
from core.model_manager import ModelInstance
|
||||||
from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
|
|
||||||
from core.model_runtime.entities.message_entities import (
|
|
||||||
AssistantPromptMessage,
|
|
||||||
TextPromptMessageContent,
|
|
||||||
)
|
|
||||||
from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
|
||||||
from core.ops.entities.trace_entity import TraceTaskName
|
from core.ops.entities.trace_entity import TraceTaskName
|
||||||
from core.ops.ops_trace_manager import TraceQueueManager, TraceTask
|
from core.ops.ops_trace_manager import TraceQueueManager, TraceTask
|
||||||
from core.prompt.utils.prompt_message_util import PromptMessageUtil
|
from core.prompt.utils.prompt_message_util import PromptMessageUtil
|
||||||
from core.prompt.utils.prompt_template_parser import PromptTemplateParser
|
from core.prompt.utils.prompt_template_parser import PromptTemplateParser
|
||||||
from core.tools.signature import sign_tool_file
|
from core.tools.signature import sign_tool_file
|
||||||
from core.workflow.file import helpers as file_helpers
|
from dify_graph.file import helpers as file_helpers
|
||||||
from core.workflow.file.enums import FileTransferMethod
|
from dify_graph.file.enums import FileTransferMethod
|
||||||
|
from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
|
||||||
|
from dify_graph.model_runtime.entities.message_entities import (
|
||||||
|
AssistantPromptMessage,
|
||||||
|
TextPromptMessageContent,
|
||||||
|
)
|
||||||
|
from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
|
||||||
from events.message_event import message_was_created
|
from events.message_event import message_was_created
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
from libs.datetime_utils import naive_utc_now
|
from libs.datetime_utils import naive_utc_now
|
||||||
@ -157,7 +157,7 @@ class EasyUIBasedGenerateTaskPipeline(BasedGenerateTaskPipeline):
|
|||||||
id=self._message_id,
|
id=self._message_id,
|
||||||
mode=self._conversation_mode,
|
mode=self._conversation_mode,
|
||||||
message_id=self._message_id,
|
message_id=self._message_id,
|
||||||
answer=cast(str, self._task_state.llm_result.message.content),
|
answer=self._task_state.llm_result.message.get_text_content(),
|
||||||
created_at=self._message_created_at,
|
created_at=self._message_created_at,
|
||||||
**extras,
|
**extras,
|
||||||
),
|
),
|
||||||
@ -170,7 +170,7 @@ class EasyUIBasedGenerateTaskPipeline(BasedGenerateTaskPipeline):
|
|||||||
mode=self._conversation_mode,
|
mode=self._conversation_mode,
|
||||||
conversation_id=self._conversation_id,
|
conversation_id=self._conversation_id,
|
||||||
message_id=self._message_id,
|
message_id=self._message_id,
|
||||||
answer=cast(str, self._task_state.llm_result.message.content),
|
answer=self._task_state.llm_result.message.get_text_content(),
|
||||||
created_at=self._message_created_at,
|
created_at=self._message_created_at,
|
||||||
**extras,
|
**extras,
|
||||||
),
|
),
|
||||||
@ -283,7 +283,7 @@ class EasyUIBasedGenerateTaskPipeline(BasedGenerateTaskPipeline):
|
|||||||
|
|
||||||
# handle output moderation
|
# handle output moderation
|
||||||
output_moderation_answer = self.handle_output_moderation_when_task_finished(
|
output_moderation_answer = self.handle_output_moderation_when_task_finished(
|
||||||
cast(str, self._task_state.llm_result.message.content)
|
self._task_state.llm_result.message.get_text_content()
|
||||||
)
|
)
|
||||||
if output_moderation_answer:
|
if output_moderation_answer:
|
||||||
self._task_state.llm_result.message.content = output_moderation_answer
|
self._task_state.llm_result.message.content = output_moderation_answer
|
||||||
@ -397,7 +397,7 @@ class EasyUIBasedGenerateTaskPipeline(BasedGenerateTaskPipeline):
|
|||||||
message.message_unit_price = usage.prompt_unit_price
|
message.message_unit_price = usage.prompt_unit_price
|
||||||
message.message_price_unit = usage.prompt_price_unit
|
message.message_price_unit = usage.prompt_price_unit
|
||||||
message.answer = (
|
message.answer = (
|
||||||
PromptTemplateParser.remove_template_variables(cast(str, llm_result.message.content).strip())
|
PromptTemplateParser.remove_template_variables(llm_result.message.get_text_content().strip())
|
||||||
if llm_result.message.content
|
if llm_result.message.content
|
||||||
else ""
|
else ""
|
||||||
)
|
)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user