diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS
index bfb1c85436..1bb7d06232 100644
--- a/.github/CODEOWNERS
+++ b/.github/CODEOWNERS
@@ -36,7 +36,7 @@
/api/core/workflow/graph/ @laipz8200 @QuantumGhost
/api/core/workflow/graph_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)
/api/core/workflow/nodes/agent/ @Nov1c444
diff --git a/api/.importlinter b/api/.importlinter
index 0bba4fb1e0..ebf4ccfbe9 100644
--- a/api/.importlinter
+++ b/api/.importlinter
@@ -56,6 +56,8 @@ ignore_imports =
dify_graph.nodes.llm.file_saver -> extensions.ext_database
dify_graph.nodes.llm.node -> extensions.ext_database
dify_graph.nodes.tool.tool_node -> extensions.ext_database
+ dify_graph.model_runtime.model_providers.__base.ai_model -> extensions.ext_redis
+ dify_graph.model_runtime.model_providers.model_provider_factory -> extensions.ext_redis
# TODO(QuantumGhost): use DI to avoid depending on global DB.
dify_graph.nodes.human_input.human_input_node -> extensions.ext_database
@@ -110,7 +112,7 @@ ignore_imports =
dify_graph.nodes.iteration.iteration_node -> core.app.workflow.layers.llm_quota
dify_graph.nodes.llm.llm_utils -> core.model_manager
dify_graph.nodes.llm.protocols -> core.model_manager
- dify_graph.nodes.llm.llm_utils -> core.model_runtime.model_providers.__base.large_language_model
+ dify_graph.nodes.llm.llm_utils -> dify_graph.model_runtime.model_providers.__base.large_language_model
dify_graph.nodes.llm.node -> core.tools.signature
dify_graph.nodes.tool.tool_node -> core.callback_handler.workflow_tool_callback_handler
dify_graph.nodes.tool.tool_node -> core.tools.tool_engine
@@ -123,7 +125,7 @@ ignore_imports =
dify_graph.nodes.knowledge_retrieval.knowledge_retrieval_node -> core.app.app_config.entities
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.advanced_prompt_transform
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.prompt.simple_prompt_transform
- dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.model_runtime.model_providers.__base.large_language_model
+ dify_graph.nodes.parameter_extractor.parameter_extractor_node -> dify_graph.model_runtime.model_providers.__base.large_language_model
dify_graph.nodes.question_classifier.question_classifier_node -> core.prompt.simple_prompt_transform
dify_graph.nodes.parameter_extractor.parameter_extractor_node -> core.model_manager
dify_graph.nodes.question_classifier.question_classifier_node -> core.model_manager
@@ -163,58 +165,13 @@ ignore_imports =
dify_graph.nodes.llm.node -> models.model
dify_graph.nodes.agent.agent_node -> services
dify_graph.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
- dify_graph
-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
+ dify_graph.model_runtime.model_providers.__base.ai_model -> configs
+ dify_graph.model_runtime.model_providers.__base.ai_model -> extensions.ext_redis
+ dify_graph.model_runtime.model_providers.__base.large_language_model -> configs
+ dify_graph.model_runtime.model_providers.__base.text_embedding_model -> core.entities.embedding_type
+ dify_graph.model_runtime.model_providers.model_provider_factory -> configs
+ dify_graph.model_runtime.model_providers.model_provider_factory -> extensions.ext_redis
+ dify_graph.model_runtime.model_providers.model_provider_factory -> models.provider_ids
[importlinter:contract:rsc]
name = RSC
diff --git a/api/.ruff.toml b/api/.ruff.toml
index 3301452ad9..b0947eb619 100644
--- a/api/.ruff.toml
+++ b/api/.ruff.toml
@@ -100,7 +100,7 @@ ignore = [
"configs/*" = [
"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"]
"libs/gmpy2_pkcs10aep_cipher.py" = [
"N803", # invalid-argument-name
diff --git a/api/controllers/console/app/audio.py b/api/controllers/console/app/audio.py
index 941db325bf..2c5e8d29ee 100644
--- a/api/controllers/console/app/audio.py
+++ b/api/controllers/console/app/audio.py
@@ -22,7 +22,7 @@ from controllers.console.app.error import (
from controllers.console.app.wraps import get_app_model
from controllers.console.wraps import account_initialization_required, setup_required
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 models import App, AppMode
from services.audio_service import AudioService
diff --git a/api/controllers/console/app/completion.py b/api/controllers/console/app/completion.py
index 2922121a54..4d7ddfea13 100644
--- a/api/controllers/console/app/completion.py
+++ b/api/controllers/console/app/completion.py
@@ -26,7 +26,7 @@ from core.errors.error import (
QuotaExceededError,
)
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.helper import uuid_value
from libs.login import current_user, login_required
diff --git a/api/controllers/console/app/generator.py b/api/controllers/console/app/generator.py
index 1ac55b5e8d..af4ac450bb 100644
--- a/api/controllers/console/app/generator.py
+++ b/api/controllers/console/app/generator.py
@@ -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.llm_generator.entities import RuleCodeGeneratePayload, RuleGeneratePayload, RuleStructuredOutputPayload
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 libs.login import current_account_with_tenant, login_required
from models import App
diff --git a/api/controllers/console/app/message.py b/api/controllers/console/app/message.py
index 0bea777870..3beea2a385 100644
--- a/api/controllers/console/app/message.py
+++ b/api/controllers/console/app/message.py
@@ -24,7 +24,7 @@ from controllers.console.wraps import (
)
from core.app.entities.app_invoke_entities import InvokeFrom
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 fields.raws import FilesContainedField
from libs.helper import TimestampField, uuid_value
diff --git a/api/controllers/console/app/workflow.py b/api/controllers/console/app/workflow.py
index 735616bb6b..9759e0815a 100644
--- a/api/controllers/console/app/workflow.py
+++ b/api/controllers/console/app/workflow.py
@@ -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.entities.app_invoke_entities import InvokeFrom
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.trigger.debug.event_selectors import (
TriggerDebugEvent,
@@ -32,6 +31,7 @@ from core.trigger.debug.event_selectors import (
from dify_graph.enums import NodeType
from dify_graph.file.models import File
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_redis import redis_client
from factories import file_factory, variable_factory
diff --git a/api/controllers/console/auth/oauth_server.py b/api/controllers/console/auth/oauth_server.py
index 38ea5d2dae..6e59d4203c 100644
--- a/api/controllers/console/auth/oauth_server.py
+++ b/api/controllers/console/auth/oauth_server.py
@@ -8,7 +8,7 @@ from pydantic import BaseModel
from werkzeug.exceptions import BadRequest, NotFound
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 models import Account
from models.model import OAuthProviderApp
diff --git a/api/controllers/console/datasets/datasets.py b/api/controllers/console/datasets/datasets.py
index 92a6eede8a..45def1ae62 100644
--- a/api/controllers/console/datasets/datasets.py
+++ b/api/controllers/console/datasets/datasets.py
@@ -25,12 +25,12 @@ from controllers.console.wraps import (
)
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
from core.indexing_runner import IndexingRunner
-from core.model_runtime.entities.model_entities import ModelType
from core.provider_manager import ProviderManager
from core.rag.datasource.vdb.vector_type import VectorType
from core.rag.extractor.entity.datasource_type import DatasourceType
from core.rag.extractor.entity.extract_setting import ExtractSetting, NotionInfo, WebsiteInfo
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 fields.app_fields import app_detail_kernel_fields, related_app_list
from fields.dataset_fields import (
diff --git a/api/controllers/console/datasets/datasets_document.py b/api/controllers/console/datasets/datasets_document.py
index bf097d374a..ee726bc470 100644
--- a/api/controllers/console/datasets/datasets_document.py
+++ b/api/controllers/console/datasets/datasets_document.py
@@ -24,11 +24,11 @@ from core.errors.error import (
)
from core.indexing_runner import IndexingRunner
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.rag.extractor.entity.datasource_type import DatasourceType
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 fields.dataset_fields import dataset_fields
from fields.document_fields import (
diff --git a/api/controllers/console/datasets/datasets_segments.py b/api/controllers/console/datasets/datasets_segments.py
index 23a668112d..3fd0f3b712 100644
--- a/api/controllers/console/datasets/datasets_segments.py
+++ b/api/controllers/console/datasets/datasets_segments.py
@@ -26,7 +26,7 @@ from controllers.console.wraps import (
)
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
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_redis import redis_client
from fields.segment_fields import child_chunk_fields, segment_fields
diff --git a/api/controllers/console/datasets/hit_testing_base.py b/api/controllers/console/datasets/hit_testing_base.py
index db1a874437..99ff49d79d 100644
--- a/api/controllers/console/datasets/hit_testing_base.py
+++ b/api/controllers/console/datasets/hit_testing_base.py
@@ -19,7 +19,7 @@ from core.errors.error import (
ProviderTokenNotInitError,
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 libs.login import current_user
from models.account import Account
diff --git a/api/controllers/console/datasets/rag_pipeline/datasource_auth.py b/api/controllers/console/datasets/rag_pipeline/datasource_auth.py
index 1a47e226e5..a4498005d8 100644
--- a/api/controllers/console/datasets/rag_pipeline/datasource_auth.py
+++ b/api/controllers/console/datasets/rag_pipeline/datasource_auth.py
@@ -9,9 +9,9 @@ from configs import dify_config
from controllers.common.schema import register_schema_models
from controllers.console import console_ns
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 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 models.provider_ids import DatasourceProviderID
from services.datasource_provider_service import DatasourceProviderService
diff --git a/api/controllers/console/datasets/rag_pipeline/rag_pipeline_workflow.py b/api/controllers/console/datasets/rag_pipeline/rag_pipeline_workflow.py
index 29b6b64b94..51cdcc0c7a 100644
--- a/api/controllers/console/datasets/rag_pipeline/rag_pipeline_workflow.py
+++ b/api/controllers/console/datasets/rag_pipeline/rag_pipeline_workflow.py
@@ -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.pipeline.pipeline_generator import PipelineGenerator
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 factories import variable_factory
from libs import helper
diff --git a/api/controllers/console/explore/audio.py b/api/controllers/console/explore/audio.py
index 0311db1584..ffb9e5bb6e 100644
--- a/api/controllers/console/explore/audio.py
+++ b/api/controllers/console/explore/audio.py
@@ -19,7 +19,7 @@ from controllers.console.app.error import (
)
from controllers.console.explore.wraps import InstalledAppResource
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.errors.audio import (
AudioTooLargeServiceError,
diff --git a/api/controllers/console/explore/completion.py b/api/controllers/console/explore/completion.py
index a6e5b2822a..fcd52d2818 100644
--- a/api/controllers/console/explore/completion.py
+++ b/api/controllers/console/explore/completion.py
@@ -24,7 +24,7 @@ from core.errors.error import (
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 libs import helper
from libs.datetime_utils import naive_utc_now
diff --git a/api/controllers/console/explore/message.py b/api/controllers/console/explore/message.py
index 88487ac96f..53970dbd3b 100644
--- a/api/controllers/console/explore/message.py
+++ b/api/controllers/console/explore/message.py
@@ -21,7 +21,7 @@ from controllers.console.explore.error import (
from controllers.console.explore.wraps import InstalledAppResource
from core.app.entities.app_invoke_entities import InvokeFrom
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.message_fields import MessageInfiniteScrollPagination, MessageListItem, SuggestedQuestionsResponse
from libs import helper
diff --git a/api/controllers/console/explore/trial.py b/api/controllers/console/explore/trial.py
index 7771436641..25bb8ed7fe 100644
--- a/api/controllers/console/explore/trial.py
+++ b/api/controllers/console/explore/trial.py
@@ -41,8 +41,8 @@ from core.errors.error import (
ProviderTokenNotInitError,
QuotaExceededError,
)
-from core.model_runtime.errors.invoke import InvokeError
from dify_graph.graph_engine.manager import GraphEngineManager
+from dify_graph.model_runtime.errors.invoke import InvokeError
from extensions.ext_database import db
from extensions.ext_redis import redis_client
from fields.app_fields import (
diff --git a/api/controllers/console/explore/workflow.py b/api/controllers/console/explore/workflow.py
index 7e48e43b42..7801cee473 100644
--- a/api/controllers/console/explore/workflow.py
+++ b/api/controllers/console/explore/workflow.py
@@ -21,8 +21,8 @@ from core.errors.error import (
ProviderTokenNotInitError,
QuotaExceededError,
)
-from core.model_runtime.errors.invoke import InvokeError
from dify_graph.graph_engine.manager import GraphEngineManager
+from dify_graph.model_runtime.errors.invoke import InvokeError
from extensions.ext_redis import redis_client
from libs import helper
from libs.login import current_account_with_tenant
diff --git a/api/controllers/console/workspace/agent_providers.py b/api/controllers/console/workspace/agent_providers.py
index 9527fe782e..e2b504751b 100644
--- a/api/controllers/console/workspace/agent_providers.py
+++ b/api/controllers/console/workspace/agent_providers.py
@@ -2,7 +2,7 @@ from flask_restx import Resource, fields
from controllers.console import console_ns
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 services.agent_service import AgentService
diff --git a/api/controllers/console/workspace/endpoint.py b/api/controllers/console/workspace/endpoint.py
index 1897cbdca7..538c5fb561 100644
--- a/api/controllers/console/workspace/endpoint.py
+++ b/api/controllers/console/workspace/endpoint.py
@@ -7,8 +7,8 @@ from pydantic import BaseModel, Field
from controllers.common.schema import register_schema_models
from controllers.console import console_ns
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 dify_graph.model_runtime.utils.encoders import jsonable_encoder
from libs.login import current_account_with_tenant, login_required
from services.plugin.endpoint_service import EndpointService
diff --git a/api/controllers/console/workspace/load_balancing_config.py b/api/controllers/console/workspace/load_balancing_config.py
index ccb60b1461..0a9e54de99 100644
--- a/api/controllers/console/workspace/load_balancing_config.py
+++ b/api/controllers/console/workspace/load_balancing_config.py
@@ -5,8 +5,8 @@ from werkzeug.exceptions import Forbidden
from controllers.common.schema import register_schema_models
from controllers.console import console_ns
from controllers.console.wraps import account_initialization_required, setup_required
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.errors.validate import CredentialsValidateFailedError
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.errors.validate import CredentialsValidateFailedError
from libs.login import current_account_with_tenant, login_required
from models import TenantAccountRole
from services.model_load_balancing_service import ModelLoadBalancingService
diff --git a/api/controllers/console/workspace/model_providers.py b/api/controllers/console/workspace/model_providers.py
index 7bada2fa12..db3b02ae94 100644
--- a/api/controllers/console/workspace/model_providers.py
+++ b/api/controllers/console/workspace/model_providers.py
@@ -7,9 +7,9 @@ from pydantic import BaseModel, Field, field_validator
from controllers.console import console_ns
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 core.model_runtime.errors.validate import CredentialsValidateFailedError
-from core.model_runtime.utils.encoders import jsonable_encoder
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.errors.validate import CredentialsValidateFailedError
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from libs.helper import uuid_value
from libs.login import current_account_with_tenant, login_required
from services.billing_service import BillingService
diff --git a/api/controllers/console/workspace/models.py b/api/controllers/console/workspace/models.py
index 583e3e3057..d7eceb656c 100644
--- a/api/controllers/console/workspace/models.py
+++ b/api/controllers/console/workspace/models.py
@@ -8,9 +8,9 @@ from pydantic import BaseModel, Field, field_validator
from controllers.common.schema import register_enum_models, register_schema_models
from controllers.console import console_ns
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 core.model_runtime.errors.validate import CredentialsValidateFailedError
-from core.model_runtime.utils.encoders import jsonable_encoder
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.errors.validate import CredentialsValidateFailedError
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from libs.helper import uuid_value
from libs.login import current_account_with_tenant, login_required
from services.model_load_balancing_service import ModelLoadBalancingService
diff --git a/api/controllers/console/workspace/plugin.py b/api/controllers/console/workspace/plugin.py
index d1485bc1c0..2f06f72f29 100644
--- a/api/controllers/console/workspace/plugin.py
+++ b/api/controllers/console/workspace/plugin.py
@@ -12,8 +12,8 @@ from controllers.common.schema import register_enum_models, register_schema_mode
from controllers.console import console_ns
from controllers.console.workspace import plugin_permission_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 dify_graph.model_runtime.utils.encoders import jsonable_encoder
from libs.login import current_account_with_tenant, login_required
from models.account import TenantPluginAutoUpgradeStrategy, TenantPluginPermission
from services.plugin.plugin_auto_upgrade_service import PluginAutoUpgradeService
diff --git a/api/controllers/console/workspace/tool_providers.py b/api/controllers/console/workspace/tool_providers.py
index 5bfa895849..b38f05795a 100644
--- a/api/controllers/console/workspace/tool_providers.py
+++ b/api/controllers/console/workspace/tool_providers.py
@@ -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.error import MCPAuthError, MCPError, MCPRefreshTokenError
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.impl.oauth import OAuthHandler
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 libs.helper import alphanumeric, uuid_value
from libs.login import current_account_with_tenant, login_required
diff --git a/api/controllers/console/workspace/trigger_providers.py b/api/controllers/console/workspace/trigger_providers.py
index 6b642af613..ad78d2a623 100644
--- a/api/controllers/console/workspace/trigger_providers.py
+++ b/api/controllers/console/workspace/trigger_providers.py
@@ -10,11 +10,11 @@ from werkzeug.exceptions import BadRequest, Forbidden
from configs import dify_config
from controllers.common.schema import register_schema_models
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.impl.oauth import OAuthHandler
from core.trigger.entities.entities import SubscriptionBuilderUpdater
from core.trigger.trigger_manager import TriggerManager
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from extensions.ext_database import db
from libs.login import current_user, login_required
from models.account import Account
diff --git a/api/controllers/inner_api/plugin/plugin.py b/api/controllers/inner_api/plugin/plugin.py
index da1b40f2bd..9b8b3950e6 100644
--- a/api/controllers/inner_api/plugin/plugin.py
+++ b/api/controllers/inner_api/plugin/plugin.py
@@ -4,7 +4,6 @@ from controllers.console.wraps import setup_required
from controllers.inner_api import inner_api_ns
from controllers.inner_api.plugin.wraps import get_user_tenant, plugin_data
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.base import BaseBackwardsInvocationResponse
from core.plugin.backwards_invocation.encrypt import PluginEncrypter
@@ -30,6 +29,7 @@ from core.plugin.entities.request import (
)
from core.tools.entities.tool_entities import ToolProviderType
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 models import Account, Tenant
from models.model import EndUser
diff --git a/api/controllers/service_api/app/audio.py b/api/controllers/service_api/app/audio.py
index e383920460..38d292d0b9 100644
--- a/api/controllers/service_api/app/audio.py
+++ b/api/controllers/service_api/app/audio.py
@@ -21,7 +21,7 @@ from controllers.service_api.app.error import (
)
from controllers.service_api.wraps import FetchUserArg, WhereisUserArg, validate_app_token
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 services.audio_service import AudioService
from services.errors.audio import (
diff --git a/api/controllers/service_api/app/completion.py b/api/controllers/service_api/app/completion.py
index 9d8431f066..98f09c44a1 100644
--- a/api/controllers/service_api/app/completion.py
+++ b/api/controllers/service_api/app/completion.py
@@ -28,7 +28,7 @@ from core.errors.error import (
QuotaExceededError,
)
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.helper import UUIDStrOrEmpty
from models.model import App, AppMode, EndUser
diff --git a/api/controllers/service_api/app/workflow.py b/api/controllers/service_api/app/workflow.py
index f58295099f..b2148f4fa1 100644
--- a/api/controllers/service_api/app/workflow.py
+++ b/api/controllers/service_api/app/workflow.py
@@ -27,9 +27,9 @@ from core.errors.error import (
QuotaExceededError,
)
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 dify_graph.graph_engine.manager import GraphEngineManager
+from dify_graph.model_runtime.errors.invoke import InvokeError
from extensions.ext_database import db
from extensions.ext_redis import redis_client
from fields.workflow_app_log_fields import build_workflow_app_log_pagination_model
diff --git a/api/controllers/service_api/dataset/dataset.py b/api/controllers/service_api/dataset/dataset.py
index c06b81b775..83d07087ab 100644
--- a/api/controllers/service_api/dataset/dataset.py
+++ b/api/controllers/service_api/dataset/dataset.py
@@ -14,8 +14,8 @@ from controllers.service_api.wraps import (
DatasetApiResource,
cloud_edition_billing_rate_limit_check,
)
-from core.model_runtime.entities.model_entities import ModelType
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.tag_fields import DataSetTag
from libs.login import current_user
diff --git a/api/controllers/service_api/dataset/segment.py b/api/controllers/service_api/dataset/segment.py
index 4eb4fed29a..2e3b7fd85e 100644
--- a/api/controllers/service_api/dataset/segment.py
+++ b/api/controllers/service_api/dataset/segment.py
@@ -17,7 +17,7 @@ from controllers.service_api.wraps import (
)
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
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 fields.segment_fields import child_chunk_fields, segment_fields
from libs.login import current_account_with_tenant
diff --git a/api/controllers/service_api/workspace/models.py b/api/controllers/service_api/workspace/models.py
index fffcb47bd4..35aed40a59 100644
--- a/api/controllers/service_api/workspace/models.py
+++ b/api/controllers/service_api/workspace/models.py
@@ -3,7 +3,7 @@ from flask_restx import Resource
from controllers.service_api import service_api_ns
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
diff --git a/api/controllers/web/audio.py b/api/controllers/web/audio.py
index 15828cc208..2b8f752668 100644
--- a/api/controllers/web/audio.py
+++ b/api/controllers/web/audio.py
@@ -20,7 +20,7 @@ from controllers.web.error import (
)
from controllers.web.wraps import WebApiResource
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 models.model import App
from services.audio_service import AudioService
diff --git a/api/controllers/web/completion.py b/api/controllers/web/completion.py
index a97d745471..8634c1f43c 100644
--- a/api/controllers/web/completion.py
+++ b/api/controllers/web/completion.py
@@ -25,7 +25,7 @@ from core.errors.error import (
ProviderTokenNotInitError,
QuotaExceededError,
)
-from core.model_runtime.errors.invoke import InvokeError
+from dify_graph.model_runtime.errors.invoke import InvokeError
from libs import helper
from libs.helper import uuid_value
from models.model import AppMode
diff --git a/api/controllers/web/message.py b/api/controllers/web/message.py
index 80035ba818..bbae1ce266 100644
--- a/api/controllers/web/message.py
+++ b/api/controllers/web/message.py
@@ -20,7 +20,7 @@ from controllers.web.error import (
from controllers.web.wraps import WebApiResource
from core.app.entities.app_invoke_entities import InvokeFrom
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.message_fields import SuggestedQuestionsResponse, WebMessageInfiniteScrollPagination, WebMessageListItem
from libs import helper
diff --git a/api/controllers/web/workflow.py b/api/controllers/web/workflow.py
index a4c1ba75eb..508d1a756a 100644
--- a/api/controllers/web/workflow.py
+++ b/api/controllers/web/workflow.py
@@ -22,8 +22,8 @@ from core.errors.error import (
ProviderTokenNotInitError,
QuotaExceededError,
)
-from core.model_runtime.errors.invoke import InvokeError
from dify_graph.graph_engine.manager import GraphEngineManager
+from dify_graph.model_runtime.errors.invoke import InvokeError
from extensions.ext_redis import redis_client
from libs import helper
from models.model import App, AppMode, EndUser
diff --git a/api/core/agent/base_agent_runner.py b/api/core/agent/base_agent_runner.py
index 22e3843fec..4a8b5f3549 100644
--- a/api/core/agent/base_agent_runner.py
+++ b/api/core/agent/base_agent_runner.py
@@ -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.memory.token_buffer_memory import TokenBufferMemory
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,
LLMUsage,
PromptMessage,
@@ -29,17 +37,9 @@ from core.model_runtime.entities import (
ToolPromptMessage,
UserPromptMessage,
)
-from core.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
-from core.model_runtime.entities.model_entities import ModelFeature
-from core.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 dify_graph.file import file_manager
+from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
+from dify_graph.model_runtime.entities.model_entities import ModelFeature
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from extensions.ext_database import db
from factories import file_factory
from models.enums import CreatorUserRole
diff --git a/api/core/agent/cot_agent_runner.py b/api/core/agent/cot_agent_runner.py
index 511406afde..c6ecd5509b 100644
--- a/api/core/agent/cot_agent_runner.py
+++ b/api/core/agent/cot_agent_runner.py
@@ -9,19 +9,19 @@ from core.agent.entities import AgentScratchpadUnit
from core.agent.output_parser.cot_output_parser import CotAgentOutputParser
from core.app.apps.base_app_queue_manager import PublishFrom
from core.app.entities.queue_entities import QueueAgentThoughtEvent, QueueMessageEndEvent, QueueMessageFileEvent
-from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
-from core.model_runtime.entities.message_entities import (
+from core.ops.ops_trace_manager import TraceQueueManager
+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,
PromptMessage,
PromptMessageTool,
ToolPromptMessage,
UserPromptMessage,
)
-from core.ops.ops_trace_manager import TraceQueueManager
-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.nodes.agent.exc import AgentMaxIterationError
from models.model import Message
diff --git a/api/core/agent/cot_chat_agent_runner.py b/api/core/agent/cot_chat_agent_runner.py
index b0a0b23fb5..89451a0498 100644
--- a/api/core/agent/cot_chat_agent_runner.py
+++ b/api/core/agent/cot_chat_agent_runner.py
@@ -1,16 +1,16 @@
import json
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,
PromptMessage,
SystemPromptMessage,
TextPromptMessageContent,
UserPromptMessage,
)
-from core.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
-from core.model_runtime.utils.encoders import jsonable_encoder
-from dify_graph.file import file_manager
+from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
class CotChatAgentRunner(CotAgentRunner):
diff --git a/api/core/agent/cot_completion_agent_runner.py b/api/core/agent/cot_completion_agent_runner.py
index da9a001d84..3023b9bc4d 100644
--- a/api/core/agent/cot_completion_agent_runner.py
+++ b/api/core/agent/cot_completion_agent_runner.py
@@ -1,13 +1,13 @@
import json
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,
PromptMessage,
TextPromptMessageContent,
UserPromptMessage,
)
-from core.model_runtime.utils.encoders import jsonable_encoder
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
class CotCompletionAgentRunner(CotAgentRunner):
diff --git a/api/core/agent/fc_agent_runner.py b/api/core/agent/fc_agent_runner.py
index 23650cc21e..3271fe319b 100644
--- a/api/core/agent/fc_agent_runner.py
+++ b/api/core/agent/fc_agent_runner.py
@@ -7,7 +7,11 @@ from typing import Any, Union
from core.agent.base_agent_runner import BaseAgentRunner
from core.app.apps.base_app_queue_manager import PublishFrom
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,
LLMResult,
LLMResultChunk,
@@ -20,11 +24,7 @@ from core.model_runtime.entities import (
ToolPromptMessage,
UserPromptMessage,
)
-from core.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
-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.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
from dify_graph.nodes.agent.exc import AgentMaxIterationError
from models.model import Message
diff --git a/api/core/agent/output_parser/cot_output_parser.py b/api/core/agent/output_parser/cot_output_parser.py
index 7c8f09e6b9..82676f1ebd 100644
--- a/api/core/agent/output_parser/cot_output_parser.py
+++ b/api/core/agent/output_parser/cot_output_parser.py
@@ -4,7 +4,7 @@ from collections.abc import Generator
from typing import Union
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:
diff --git a/api/core/app/app_config/easy_ui_based_app/model_config/converter.py b/api/core/app/app_config/easy_ui_based_app/model_config/converter.py
index b816c8d7d0..558b6e69a0 100644
--- a/api/core/app/app_config/easy_ui_based_app/model_config/converter.py
+++ b/api/core/app/app_config/easy_ui_based_app/model_config/converter.py
@@ -4,10 +4,10 @@ from core.app.app_config.entities import EasyUIBasedAppConfig
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
from core.entities.model_entities import ModelStatus
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 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:
diff --git a/api/core/app/app_config/easy_ui_based_app/model_config/manager.py b/api/core/app/app_config/easy_ui_based_app/model_config/manager.py
index c391a279b5..e4e750c735 100644
--- a/api/core/app/app_config/easy_ui_based_app/model_config/manager.py
+++ b/api/core/app/app_config/easy_ui_based_app/model_config/manager.py
@@ -2,9 +2,9 @@ from collections.abc import Mapping
from typing import Any
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 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
diff --git a/api/core/app/app_config/easy_ui_based_app/prompt_template/manager.py b/api/core/app/app_config/easy_ui_based_app/prompt_template/manager.py
index 21614c010c..01b9601965 100644
--- a/api/core/app/app_config/easy_ui_based_app/prompt_template/manager.py
+++ b/api/core/app/app_config/easy_ui_based_app/prompt_template/manager.py
@@ -4,8 +4,8 @@ from core.app.app_config.entities import (
AdvancedCompletionPromptTemplateEntity,
PromptTemplateEntity,
)
-from core.model_runtime.entities.message_entities import PromptMessageRole
from core.prompt.simple_prompt_transform import ModelMode
+from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
from models.model import AppMode
diff --git a/api/core/app/app_config/entities.py b/api/core/app/app_config/entities.py
index b5de73dadd..f26351d93e 100644
--- a/api/core/app/app_config/entities.py
+++ b/api/core/app/app_config/entities.py
@@ -4,9 +4,9 @@ from typing import Any, Literal
from pydantic import BaseModel, Field
-from core.model_runtime.entities.llm_entities import LLMMode
-from core.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.file import FileUploadConfig
+from dify_graph.model_runtime.entities.llm_entities import LLMMode
+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
diff --git a/api/core/app/apps/advanced_chat/app_generator.py b/api/core/app/apps/advanced_chat/app_generator.py
index ccac77eeaa..05ae1a4d38 100644
--- a/api/core/app/apps/advanced_chat/app_generator.py
+++ b/api/core/app/apps/advanced_chat/app_generator.py
@@ -31,11 +31,11 @@ from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity,
from core.app.entities.task_entities import ChatbotAppBlockingResponse, ChatbotAppStreamResponse
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.model_runtime.errors.invoke import InvokeAuthorizationError
from core.ops.ops_trace_manager import TraceQueueManager
from core.prompt.utils.get_thread_messages_length import get_thread_messages_length
from core.repositories import DifyCoreRepositoryFactory
from dify_graph.graph_engine.layers.base import GraphEngineLayer
+from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
from dify_graph.repositories.draft_variable_repository import (
DraftVariableSaverFactory,
)
diff --git a/api/core/app/apps/advanced_chat/generate_task_pipeline.py b/api/core/app/apps/advanced_chat/generate_task_pipeline.py
index c19a1e9c0d..f57a0d9b3b 100644
--- a/api/core/app/apps/advanced_chat/generate_task_pipeline.py
+++ b/api/core/app/apps/advanced_chat/generate_task_pipeline.py
@@ -63,12 +63,12 @@ from core.app.entities.task_entities import (
from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTaskPipeline
from core.app.task_pipeline.message_cycle_manager import MessageCycleManager
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.repositories.human_input_repository import HumanInputFormRepositoryImpl
from dify_graph.entities.pause_reason import HumanInputRequired
from dify_graph.enums import WorkflowExecutionStatus
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.nodes import NodeType
from dify_graph.repositories.draft_variable_repository import DraftVariableSaverFactory
from dify_graph.runtime import GraphRuntimeState
diff --git a/api/core/app/apps/agent_chat/app_generator.py b/api/core/app/apps/agent_chat/app_generator.py
index 7bd3b8a56e..76a067d7b6 100644
--- a/api/core/app/apps/agent_chat/app_generator.py
+++ b/api/core/app/apps/agent_chat/app_generator.py
@@ -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_queue_manager import MessageBasedAppQueueManager
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 dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
from extensions.ext_database import db
from factories import file_factory
from libs.flask_utils import preserve_flask_contexts
diff --git a/api/core/app/apps/agent_chat/app_runner.py b/api/core/app/apps/agent_chat/app_runner.py
index 7309113f27..a81da2e91c 100644
--- a/api/core/app/apps/agent_chat/app_runner.py
+++ b/api/core/app/apps/agent_chat/app_runner.py
@@ -14,10 +14,10 @@ from core.app.entities.app_invoke_entities import AgentChatAppGenerateEntity
from core.app.entities.queue_entities import QueueAnnotationReplyEvent
from core.memory.token_buffer_memory import TokenBufferMemory
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 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 models.model import App, Conversation, Message
diff --git a/api/core/app/apps/base_app_generate_response_converter.py b/api/core/app/apps/base_app_generate_response_converter.py
index d1e2f16b6f..77950a832a 100644
--- a/api/core/app/apps/base_app_generate_response_converter.py
+++ b/api/core/app/apps/base_app_generate_response_converter.py
@@ -6,7 +6,7 @@ from typing import Any, Union
from core.app.entities.app_invoke_entities import InvokeFrom
from core.app.entities.task_entities import AppBlockingResponse, AppStreamResponse
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__)
diff --git a/api/core/app/apps/base_app_runner.py b/api/core/app/apps/base_app_runner.py
index 0223d8f9a7..88714f3837 100644
--- a/api/core/app/apps/base_app_runner.py
+++ b/api/core/app/apps/base_app_runner.py
@@ -24,21 +24,21 @@ from core.app.features.hosting_moderation.hosting_moderation import HostingModer
from core.external_data_tool.external_data_fetch import ExternalDataFetch
from core.memory.token_buffer_memory import TokenBufferMemory
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.prompt.advanced_prompt_transform import AdvancedPromptTransform
from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate, MemoryConfig
from core.prompt.simple_prompt_transform import ModelMode, SimplePromptTransform
from core.tools.tool_file_manager import ToolFileManager
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 models.enums import CreatorUserRole
from models.model import App, AppMode, Message, MessageAnnotation, MessageFile
diff --git a/api/core/app/apps/chat/app_generator.py b/api/core/app/apps/chat/app_generator.py
index c1251d2feb..91cf54c774 100644
--- a/api/core/app/apps/chat/app_generator.py
+++ b/api/core/app/apps/chat/app_generator.py
@@ -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_queue_manager import MessageBasedAppQueueManager
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 dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
from extensions.ext_database import db
from factories import file_factory
from models import Account
diff --git a/api/core/app/apps/chat/app_runner.py b/api/core/app/apps/chat/app_runner.py
index 5cf13fbb17..23546a47bb 100644
--- a/api/core/app/apps/chat/app_runner.py
+++ b/api/core/app/apps/chat/app_runner.py
@@ -13,10 +13,10 @@ from core.app.entities.queue_entities import QueueAnnotationReplyEvent
from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler
from core.memory.token_buffer_memory import TokenBufferMemory
from core.model_manager import ModelInstance
-from core.model_runtime.entities.message_entities import ImagePromptMessageContent
from core.moderation.base import ModerationError
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
from dify_graph.file import File
+from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent
from extensions.ext_database import db
from models.model import App, Conversation, Message
diff --git a/api/core/app/apps/completion/app_generator.py b/api/core/app/apps/completion/app_generator.py
index 843328f904..e8b0e4f179 100644
--- a/api/core/app/apps/completion/app_generator.py
+++ b/api/core/app/apps/completion/app_generator.py
@@ -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_queue_manager import MessageBasedAppQueueManager
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 dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
from extensions.ext_database import db
from factories import file_factory
from models import Account, App, EndUser, Message
diff --git a/api/core/app/apps/completion/app_runner.py b/api/core/app/apps/completion/app_runner.py
index 96bbe532f1..ac05172945 100644
--- a/api/core/app/apps/completion/app_runner.py
+++ b/api/core/app/apps/completion/app_runner.py
@@ -11,10 +11,10 @@ from core.app.entities.app_invoke_entities import (
)
from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler
from core.model_manager import ModelInstance
-from core.model_runtime.entities.message_entities import ImagePromptMessageContent
from core.moderation.base import ModerationError
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
from dify_graph.file import File
+from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent
from extensions.ext_database import db
from models.model import App, Message
diff --git a/api/core/app/apps/pipeline/pipeline_generator.py b/api/core/app/apps/pipeline/pipeline_generator.py
index 6be2d034b5..dcfc1415e8 100644
--- a/api/core/app/apps/pipeline/pipeline_generator.py
+++ b/api/core/app/apps/pipeline/pipeline_generator.py
@@ -33,9 +33,9 @@ from core.datasource.entities.datasource_entities import (
)
from core.datasource.online_drive.online_drive_plugin import OnlineDriveDatasourcePlugin
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.repositories.factory import DifyCoreRepositoryFactory
+from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
from dify_graph.repositories.draft_variable_repository import DraftVariableSaverFactory
from dify_graph.repositories.workflow_execution_repository import WorkflowExecutionRepository
from dify_graph.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
diff --git a/api/core/app/apps/workflow/app_generator.py b/api/core/app/apps/workflow/app_generator.py
index 4eee00c999..32a7a3ccec 100644
--- a/api/core/app/apps/workflow/app_generator.py
+++ b/api/core/app/apps/workflow/app_generator.py
@@ -28,10 +28,10 @@ from core.app.entities.task_entities import WorkflowAppBlockingResponse, Workflo
from core.app.layers.pause_state_persist_layer import PauseStateLayerConfig, PauseStatePersistenceLayer
from core.db.session_factory import session_factory
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.repositories import DifyCoreRepositoryFactory
from dify_graph.graph_engine.layers.base import GraphEngineLayer
+from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
from dify_graph.repositories.draft_variable_repository import DraftVariableSaverFactory
from dify_graph.repositories.workflow_execution_repository import WorkflowExecutionRepository
from dify_graph.repositories.workflow_node_execution_repository import WorkflowNodeExecutionRepository
diff --git a/api/core/app/entities/app_invoke_entities.py b/api/core/app/entities/app_invoke_entities.py
index df906e5e54..7fe6e0c72c 100644
--- a/api/core/app/entities/app_invoke_entities.py
+++ b/api/core/app/entities/app_invoke_entities.py
@@ -7,8 +7,8 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validat
from constants import UUID_NIL
from core.app.app_config.entities import EasyUIBasedAppConfig, WorkflowUIBasedAppConfig
from core.entities.provider_configuration import ProviderModelBundle
-from core.model_runtime.entities.model_entities import AIModelEntity
from dify_graph.file import File, FileUploadConfig
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity
if TYPE_CHECKING:
from core.ops.ops_trace_manager import TraceQueueManager
diff --git a/api/core/app/entities/queue_entities.py b/api/core/app/entities/queue_entities.py
index de19b8e6d2..d42df0d1bf 100644
--- a/api/core/app/entities/queue_entities.py
+++ b/api/core/app/entities/queue_entities.py
@@ -5,12 +5,12 @@ from typing import Any
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 dify_graph.entities import AgentNodeStrategyInit
from dify_graph.entities.pause_reason import PauseReason
from dify_graph.entities.workflow_start_reason import WorkflowStartReason
from dify_graph.enums import WorkflowNodeExecutionMetadataKey
+from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
from dify_graph.nodes import NodeType
diff --git a/api/core/app/entities/task_entities.py b/api/core/app/entities/task_entities.py
index 1f3153fff4..b58dae0ff2 100644
--- a/api/core/app/entities/task_entities.py
+++ b/api/core/app/entities/task_entities.py
@@ -4,11 +4,11 @@ from typing import Any
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 dify_graph.entities import AgentNodeStrategyInit
from dify_graph.entities.workflow_start_reason import WorkflowStartReason
from dify_graph.enums import WorkflowExecutionStatus, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
+from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMUsage
from dify_graph.nodes.human_input.entities import FormInput, UserAction
diff --git a/api/core/app/features/hosting_moderation/hosting_moderation.py b/api/core/app/features/hosting_moderation/hosting_moderation.py
index a5a5486581..5ed1fadc41 100644
--- a/api/core/app/features/hosting_moderation/hosting_moderation.py
+++ b/api/core/app/features/hosting_moderation/hosting_moderation.py
@@ -2,7 +2,7 @@ import logging
from core.app.entities.app_invoke_entities import EasyUIBasedAppGenerateEntity
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__)
diff --git a/api/core/app/llm/model_access.py b/api/core/app/llm/model_access.py
index dc28225b8e..a63ff39fa5 100644
--- a/api/core/app/llm/model_access.py
+++ b/api/core/app/llm/model_access.py
@@ -5,8 +5,8 @@ from typing import Any
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
from core.errors.error import ProviderTokenNotInitError
from core.model_manager import ModelInstance, ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.provider_manager import ProviderManager
+from dify_graph.model_runtime.entities.model_entities import ModelType
from dify_graph.nodes.llm.entities import ModelConfig
from dify_graph.nodes.llm.exc import LLMModeRequiredError, ModelNotExistError
from dify_graph.nodes.llm.protocols import CredentialsProvider, ModelFactory
diff --git a/api/core/app/llm/quota.py b/api/core/app/llm/quota.py
index 1c66c8c1ff..7aa3bf15ab 100644
--- a/api/core/app/llm/quota.py
+++ b/api/core/app/llm/quota.py
@@ -6,7 +6,7 @@ from core.entities.model_entities import ModelStatus
from core.entities.provider_entities import ProviderQuotaType, QuotaUnit
from core.errors.error import QuotaExceededError
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 extensions.ext_database import db
from libs.datetime_utils import naive_utc_now
from models.provider import Provider, ProviderType
diff --git a/api/core/app/task_pipeline/based_generate_task_pipeline.py b/api/core/app/task_pipeline/based_generate_task_pipeline.py
index 26c7e60a4c..0d5e0acec6 100644
--- a/api/core/app/task_pipeline/based_generate_task_pipeline.py
+++ b/api/core/app/task_pipeline/based_generate_task_pipeline.py
@@ -16,8 +16,8 @@ from core.app.entities.task_entities import (
PingStreamResponse,
)
from core.errors.error import QuotaExceededError
-from core.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeError
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.model import Message
diff --git a/api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py b/api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py
index d7946d5478..1fa782eb6c 100644
--- a/api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py
+++ b/api/core/app/task_pipeline/easy_ui_based_generate_task_pipeline.py
@@ -46,12 +46,6 @@ from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTas
from core.app.task_pipeline.message_cycle_manager import MessageCycleManager
from core.base.tts import AppGeneratorTTSPublisher, AudioTrunk
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.ops_trace_manager import TraceQueueManager, TraceTask
from core.prompt.utils.prompt_message_util import PromptMessageUtil
@@ -59,6 +53,12 @@ from core.prompt.utils.prompt_template_parser import PromptTemplateParser
from core.tools.signature import sign_tool_file
from dify_graph.file import helpers as file_helpers
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 extensions.ext_database import db
from libs.datetime_utils import naive_utc_now
diff --git a/api/core/base/tts/app_generator_tts_publisher.py b/api/core/base/tts/app_generator_tts_publisher.py
index f83aaa0006..beda515666 100644
--- a/api/core/base/tts/app_generator_tts_publisher.py
+++ b/api/core/base/tts/app_generator_tts_publisher.py
@@ -15,8 +15,8 @@ from core.app.entities.queue_entities import (
WorkflowQueueMessage,
)
from core.model_manager import ModelInstance, ModelManager
-from core.model_runtime.entities.message_entities import TextPromptMessageContent
-from core.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.message_entities import TextPromptMessageContent
+from dify_graph.model_runtime.entities.model_entities import ModelType
class AudioTrunk:
diff --git a/api/core/datasource/entities/api_entities.py b/api/core/datasource/entities/api_entities.py
index 1179537570..4c9ff64479 100644
--- a/api/core/datasource/entities/api_entities.py
+++ b/api/core/datasource/entities/api_entities.py
@@ -3,8 +3,8 @@ from typing import Literal, Optional
from pydantic import BaseModel, Field, field_validator
from core.datasource.entities.datasource_entities import DatasourceParameter
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.tools.entities.common_entities import I18nObject
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
class DatasourceApiEntity(BaseModel):
diff --git a/api/core/entities/model_entities.py b/api/core/entities/model_entities.py
index a123fb0321..3427fc54b1 100644
--- a/api/core/entities/model_entities.py
+++ b/api/core/entities/model_entities.py
@@ -3,9 +3,9 @@ from enum import StrEnum, auto
from pydantic import BaseModel, ConfigDict
-from core.model_runtime.entities.common_entities import I18nObject
-from core.model_runtime.entities.model_entities import ModelType, ProviderModel
-from core.model_runtime.entities.provider_entities import ProviderEntity
+from dify_graph.model_runtime.entities.common_entities import I18nObject
+from dify_graph.model_runtime.entities.model_entities import ModelType, ProviderModel
+from dify_graph.model_runtime.entities.provider_entities import ProviderEntity
class ModelStatus(StrEnum):
diff --git a/api/core/entities/provider_configuration.py b/api/core/entities/provider_configuration.py
index 8a26b2e91b..9f8d06e322 100644
--- a/api/core/entities/provider_configuration.py
+++ b/api/core/entities/provider_configuration.py
@@ -19,15 +19,15 @@ from core.entities.provider_entities import (
)
from core.helper import encrypter
from core.helper.model_provider_cache import ProviderCredentialsCache, ProviderCredentialsCacheType
-from core.model_runtime.entities.model_entities import AIModelEntity, FetchFrom, ModelType
-from core.model_runtime.entities.provider_entities import (
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity, FetchFrom, ModelType
+from dify_graph.model_runtime.entities.provider_entities import (
ConfigurateMethod,
CredentialFormSchema,
FormType,
ProviderEntity,
)
-from core.model_runtime.model_providers.__base.ai_model import AIModel
-from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
+from dify_graph.model_runtime.model_providers.__base.ai_model import AIModel
+from dify_graph.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
from libs.datetime_utils import naive_utc_now
from models.engine import db
from models.provider import (
diff --git a/api/core/entities/provider_entities.py b/api/core/entities/provider_entities.py
index 0078ec7e4f..a830f227a9 100644
--- a/api/core/entities/provider_entities.py
+++ b/api/core/entities/provider_entities.py
@@ -11,8 +11,8 @@ from core.entities.parameter_entities import (
ModelSelectorScope,
ToolSelectorScope,
)
-from core.model_runtime.entities.model_entities import ModelType
from core.tools.entities.common_entities import I18nObject
+from dify_graph.model_runtime.entities.model_entities import ModelType
class ProviderQuotaType(StrEnum):
diff --git a/api/core/helper/moderation.py b/api/core/helper/moderation.py
index 86bac4119a..873f6a4093 100644
--- a/api/core/helper/moderation.py
+++ b/api/core/helper/moderation.py
@@ -4,10 +4,10 @@ from typing import cast
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
from core.entities import DEFAULT_PLUGIN_ID
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.errors.invoke import InvokeBadRequestError
-from core.model_runtime.model_providers.__base.moderation_model import ModerationModel
-from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.errors.invoke import InvokeBadRequestError
+from dify_graph.model_runtime.model_providers.__base.moderation_model import ModerationModel
+from dify_graph.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
from extensions.ext_hosting_provider import hosting_configuration
from models.provider import ProviderType
diff --git a/api/core/hosting_configuration.py b/api/core/hosting_configuration.py
index 370e64e385..600a444357 100644
--- a/api/core/hosting_configuration.py
+++ b/api/core/hosting_configuration.py
@@ -4,7 +4,7 @@ from pydantic import BaseModel
from configs import dify_config
from core.entities import DEFAULT_PLUGIN_ID
from core.entities.provider_entities import ProviderQuotaType, QuotaUnit, RestrictModel
-from core.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.model_entities import ModelType
class HostingQuota(BaseModel):
diff --git a/api/core/indexing_runner.py b/api/core/indexing_runner.py
index 4e3ad7bb75..7eebd9ec95 100644
--- a/api/core/indexing_runner.py
+++ b/api/core/indexing_runner.py
@@ -15,7 +15,6 @@ from configs import dify_config
from core.entities.knowledge_entities import IndexingEstimate, PreviewDetail, QAPreviewDetail
from core.errors.error import ProviderTokenNotInitError
from core.model_manager import ModelInstance, ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.rag.cleaner.clean_processor import CleanProcessor
from core.rag.datasource.keyword.keyword_factory import Keyword
from core.rag.docstore.dataset_docstore import DatasetDocumentStore
@@ -31,6 +30,7 @@ from core.rag.splitter.fixed_text_splitter import (
)
from core.rag.splitter.text_splitter import TextSplitter
from core.tools.utils.web_reader_tool import get_image_upload_file_ids
+from dify_graph.model_runtime.entities.model_entities import ModelType
from extensions.ext_database import db
from extensions.ext_redis import redis_client
from extensions.ext_storage import storage
diff --git a/api/core/llm_generator/llm_generator.py b/api/core/llm_generator/llm_generator.py
index b16a42e390..6a09dbff35 100644
--- a/api/core/llm_generator/llm_generator.py
+++ b/api/core/llm_generator/llm_generator.py
@@ -23,15 +23,15 @@ from core.llm_generator.prompts import (
WORKFLOW_RULE_CONFIG_PROMPT_GENERATE_TEMPLATE,
)
from core.model_manager import ModelManager
-from core.model_runtime.entities.llm_entities import LLMResult
-from core.model_runtime.entities.message_entities import PromptMessage, SystemPromptMessage, UserPromptMessage
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeError
from core.ops.entities.trace_entity import TraceTaskName
from core.ops.ops_trace_manager import TraceQueueManager, TraceTask
from core.ops.utils import measure_time
from core.prompt.utils.prompt_template_parser import PromptTemplateParser
from dify_graph.entities.workflow_node_execution import WorkflowNodeExecutionMetadataKey
+from dify_graph.model_runtime.entities.llm_entities import LLMResult
+from dify_graph.model_runtime.entities.message_entities import PromptMessage, SystemPromptMessage, UserPromptMessage
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeError
from extensions.ext_database import db
from extensions.ext_storage import storage
from models import App, Message, WorkflowNodeExecutionModel
diff --git a/api/core/llm_generator/output_parser/structured_output.py b/api/core/llm_generator/output_parser/structured_output.py
index 686529c3ca..77ea1713ea 100644
--- a/api/core/llm_generator/output_parser/structured_output.py
+++ b/api/core/llm_generator/output_parser/structured_output.py
@@ -10,22 +10,22 @@ from pydantic import TypeAdapter, ValidationError
from core.llm_generator.output_parser.errors import OutputParserError
from core.llm_generator.prompts import STRUCTURED_OUTPUT_PROMPT
from core.model_manager import ModelInstance
-from core.model_runtime.callbacks.base_callback import Callback
-from core.model_runtime.entities.llm_entities import (
+from dify_graph.model_runtime.callbacks.base_callback import Callback
+from dify_graph.model_runtime.entities.llm_entities import (
LLMResult,
LLMResultChunk,
LLMResultChunkDelta,
LLMResultChunkWithStructuredOutput,
LLMResultWithStructuredOutput,
)
-from core.model_runtime.entities.message_entities import (
+from dify_graph.model_runtime.entities.message_entities import (
AssistantPromptMessage,
PromptMessage,
PromptMessageTool,
SystemPromptMessage,
TextPromptMessageContent,
)
-from core.model_runtime.entities.model_entities import AIModelEntity, ParameterRule
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity, ParameterRule
class ResponseFormat(StrEnum):
diff --git a/api/core/mcp/utils.py b/api/core/mcp/utils.py
index 84bef7b935..db9cb726d7 100644
--- a/api/core/mcp/utils.py
+++ b/api/core/mcp/utils.py
@@ -8,7 +8,7 @@ from httpx_sse import connect_sse
from configs import dify_config
from core.mcp.types import ErrorData, JSONRPCError
-from core.model_runtime.utils.encoders import jsonable_encoder
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
HTTP_REQUEST_NODE_SSL_VERIFY = dify_config.HTTP_REQUEST_NODE_SSL_VERIFY
diff --git a/api/core/memory/token_buffer_memory.py b/api/core/memory/token_buffer_memory.py
index 2e93681da0..1156a98af1 100644
--- a/api/core/memory/token_buffer_memory.py
+++ b/api/core/memory/token_buffer_memory.py
@@ -5,7 +5,9 @@ from sqlalchemy.orm import sessionmaker
from core.app.app_config.features.file_upload.manager import FileUploadConfigManager
from core.model_manager import ModelInstance
-from core.model_runtime.entities import (
+from core.prompt.utils.extract_thread_messages import extract_thread_messages
+from dify_graph.file import file_manager
+from dify_graph.model_runtime.entities import (
AssistantPromptMessage,
ImagePromptMessageContent,
PromptMessage,
@@ -13,9 +15,7 @@ from core.model_runtime.entities import (
TextPromptMessageContent,
UserPromptMessage,
)
-from core.model_runtime.entities.message_entities import PromptMessageContentUnionTypes
-from core.prompt.utils.extract_thread_messages import extract_thread_messages
-from dify_graph.file import file_manager
+from dify_graph.model_runtime.entities.message_entities import PromptMessageContentUnionTypes
from extensions.ext_database import db
from factories import file_factory
from models.model import AppMode, Conversation, Message, MessageFile
diff --git a/api/core/model_manager.py b/api/core/model_manager.py
index 2b3a3be1b9..0f710a8fcf 100644
--- a/api/core/model_manager.py
+++ b/api/core/model_manager.py
@@ -7,20 +7,20 @@ from core.entities.embedding_type import EmbeddingInputType
from core.entities.provider_configuration import ProviderConfiguration, ProviderModelBundle
from core.entities.provider_entities import ModelLoadBalancingConfiguration
from core.errors.error import ProviderTokenNotInitError
-from core.model_runtime.callbacks.base_callback import Callback
-from core.model_runtime.entities.llm_entities import LLMResult
-from core.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool
-from core.model_runtime.entities.model_entities import ModelFeature, ModelType
-from core.model_runtime.entities.rerank_entities import RerankResult
-from core.model_runtime.entities.text_embedding_entities import EmbeddingResult
-from core.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeConnectionError, InvokeRateLimitError
-from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
-from core.model_runtime.model_providers.__base.moderation_model import ModerationModel
-from core.model_runtime.model_providers.__base.rerank_model import RerankModel
-from core.model_runtime.model_providers.__base.speech2text_model import Speech2TextModel
-from core.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel
-from core.model_runtime.model_providers.__base.tts_model import TTSModel
from core.provider_manager import ProviderManager
+from dify_graph.model_runtime.callbacks.base_callback import Callback
+from dify_graph.model_runtime.entities.llm_entities import LLMResult
+from dify_graph.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool
+from dify_graph.model_runtime.entities.model_entities import ModelFeature, ModelType
+from dify_graph.model_runtime.entities.rerank_entities import RerankResult
+from dify_graph.model_runtime.entities.text_embedding_entities import EmbeddingResult
+from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError, InvokeConnectionError, InvokeRateLimitError
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
+from dify_graph.model_runtime.model_providers.__base.moderation_model import ModerationModel
+from dify_graph.model_runtime.model_providers.__base.rerank_model import RerankModel
+from dify_graph.model_runtime.model_providers.__base.speech2text_model import Speech2TextModel
+from dify_graph.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel
+from dify_graph.model_runtime.model_providers.__base.tts_model import TTSModel
from extensions.ext_redis import redis_client
from models.provider import ProviderType
from services.enterprise.plugin_manager_service import PluginCredentialType
diff --git a/api/core/moderation/openai_moderation/openai_moderation.py b/api/core/moderation/openai_moderation/openai_moderation.py
index 5cab4841f5..06676f5cf4 100644
--- a/api/core/moderation/openai_moderation/openai_moderation.py
+++ b/api/core/moderation/openai_moderation/openai_moderation.py
@@ -1,6 +1,6 @@
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.moderation.base import Moderation, ModerationAction, ModerationInputsResult, ModerationOutputsResult
+from dify_graph.model_runtime.entities.model_entities import ModelType
class OpenAIModeration(Moderation):
diff --git a/api/core/plugin/backwards_invocation/model.py b/api/core/plugin/backwards_invocation/model.py
index 4ecc22834d..11c9191bac 100644
--- a/api/core/plugin/backwards_invocation/model.py
+++ b/api/core/plugin/backwards_invocation/model.py
@@ -5,18 +5,6 @@ from collections.abc import Generator
from core.app.llm import deduct_llm_quota
from core.llm_generator.output_parser.structured_output import invoke_llm_with_structured_output
from core.model_manager import ModelManager
-from core.model_runtime.entities.llm_entities import (
- LLMResult,
- LLMResultChunk,
- LLMResultChunkDelta,
- LLMResultChunkWithStructuredOutput,
- LLMResultWithStructuredOutput,
-)
-from core.model_runtime.entities.message_entities import (
- PromptMessage,
- SystemPromptMessage,
- UserPromptMessage,
-)
from core.plugin.backwards_invocation.base import BaseBackwardsInvocation
from core.plugin.entities.request import (
RequestInvokeLLM,
@@ -30,6 +18,18 @@ from core.plugin.entities.request import (
)
from core.tools.entities.tool_entities import ToolProviderType
from core.tools.utils.model_invocation_utils import ModelInvocationUtils
+from dify_graph.model_runtime.entities.llm_entities import (
+ LLMResult,
+ LLMResultChunk,
+ LLMResultChunkDelta,
+ LLMResultChunkWithStructuredOutput,
+ LLMResultWithStructuredOutput,
+)
+from dify_graph.model_runtime.entities.message_entities import (
+ PromptMessage,
+ SystemPromptMessage,
+ UserPromptMessage,
+)
from models.account import Tenant
diff --git a/api/core/plugin/entities/marketplace.py b/api/core/plugin/entities/marketplace.py
index cf1f7ff0dd..81e1e12c5f 100644
--- a/api/core/plugin/entities/marketplace.py
+++ b/api/core/plugin/entities/marketplace.py
@@ -1,10 +1,10 @@
from pydantic import BaseModel, Field, computed_field, model_validator
-from core.model_runtime.entities.provider_entities import ProviderEntity
from core.plugin.entities.endpoint import EndpointProviderDeclaration
from core.plugin.entities.plugin import PluginResourceRequirements
from core.tools.entities.common_entities import I18nObject
from core.tools.entities.tool_entities import ToolProviderEntity
+from dify_graph.model_runtime.entities.provider_entities import ProviderEntity
class MarketplacePluginDeclaration(BaseModel):
diff --git a/api/core/plugin/entities/plugin.py b/api/core/plugin/entities/plugin.py
index 9e1a9edf82..7a3780f7de 100644
--- a/api/core/plugin/entities/plugin.py
+++ b/api/core/plugin/entities/plugin.py
@@ -8,12 +8,12 @@ from pydantic import BaseModel, Field, field_validator, model_validator
from core.agent.plugin_entities import AgentStrategyProviderEntity
from core.datasource.entities.datasource_entities import DatasourceProviderEntity
-from core.model_runtime.entities.provider_entities import ProviderEntity
from core.plugin.entities.base import BasePluginEntity
from core.plugin.entities.endpoint import EndpointProviderDeclaration
from core.tools.entities.common_entities import I18nObject
from core.tools.entities.tool_entities import ToolProviderEntity
from core.trigger.entities.entities import TriggerProviderEntity
+from dify_graph.model_runtime.entities.provider_entities import ProviderEntity
class PluginInstallationSource(StrEnum):
diff --git a/api/core/plugin/entities/plugin_daemon.py b/api/core/plugin/entities/plugin_daemon.py
index 6674228dc0..2dc540e6a8 100644
--- a/api/core/plugin/entities/plugin_daemon.py
+++ b/api/core/plugin/entities/plugin_daemon.py
@@ -10,14 +10,14 @@ from pydantic import BaseModel, ConfigDict, Field
from core.agent.plugin_entities import AgentProviderEntityWithPlugin
from core.datasource.entities.datasource_entities import DatasourceProviderEntityWithPlugin
-from core.model_runtime.entities.model_entities import AIModelEntity
-from core.model_runtime.entities.provider_entities import ProviderEntity
from core.plugin.entities.base import BasePluginEntity
from core.plugin.entities.parameters import PluginParameterOption
from core.plugin.entities.plugin import PluginDeclaration, PluginEntity
from core.tools.entities.common_entities import I18nObject
from core.tools.entities.tool_entities import ToolProviderEntityWithPlugin
from core.trigger.entities.entities import TriggerProviderEntity
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity
+from dify_graph.model_runtime.entities.provider_entities import ProviderEntity
T = TypeVar("T", bound=(BaseModel | dict | list | bool | str))
diff --git a/api/core/plugin/entities/request.py b/api/core/plugin/entities/request.py
index 0a1dc50bfa..c15e9b0385 100644
--- a/api/core/plugin/entities/request.py
+++ b/api/core/plugin/entities/request.py
@@ -7,7 +7,8 @@ from flask import Response
from pydantic import BaseModel, ConfigDict, Field, field_validator
from core.entities.provider_entities import BasicProviderConfig
-from core.model_runtime.entities.message_entities import (
+from core.plugin.utils.http_parser import deserialize_response
+from dify_graph.model_runtime.entities.message_entities import (
AssistantPromptMessage,
PromptMessage,
PromptMessageRole,
@@ -16,8 +17,7 @@ from core.model_runtime.entities.message_entities import (
ToolPromptMessage,
UserPromptMessage,
)
-from core.model_runtime.entities.model_entities import ModelType
-from core.plugin.utils.http_parser import deserialize_response
+from dify_graph.model_runtime.entities.model_entities import ModelType
from dify_graph.nodes.parameter_extractor.entities import (
ModelConfig as ParameterExtractorModelConfig,
)
diff --git a/api/core/plugin/impl/base.py b/api/core/plugin/impl/base.py
index 7a6a598a2f..737d204105 100644
--- a/api/core/plugin/impl/base.py
+++ b/api/core/plugin/impl/base.py
@@ -9,14 +9,6 @@ from pydantic import BaseModel
from yarl import URL
from configs import dify_config
-from core.model_runtime.errors.invoke import (
- InvokeAuthorizationError,
- InvokeBadRequestError,
- InvokeConnectionError,
- InvokeRateLimitError,
- InvokeServerUnavailableError,
-)
-from core.model_runtime.errors.validate import CredentialsValidateFailedError
from core.plugin.endpoint.exc import EndpointSetupFailedError
from core.plugin.entities.plugin_daemon import PluginDaemonBasicResponse, PluginDaemonError, PluginDaemonInnerError
from core.plugin.impl.exc import (
@@ -35,6 +27,14 @@ from core.trigger.errors import (
TriggerPluginInvokeError,
TriggerProviderCredentialValidationError,
)
+from dify_graph.model_runtime.errors.invoke import (
+ InvokeAuthorizationError,
+ InvokeBadRequestError,
+ InvokeConnectionError,
+ InvokeRateLimitError,
+ InvokeServerUnavailableError,
+)
+from dify_graph.model_runtime.errors.validate import CredentialsValidateFailedError
plugin_daemon_inner_api_baseurl = URL(str(dify_config.PLUGIN_DAEMON_URL))
_plugin_daemon_timeout_config = cast(
diff --git a/api/core/plugin/impl/model.py b/api/core/plugin/impl/model.py
index 5d70980967..49ee5d79cb 100644
--- a/api/core/plugin/impl/model.py
+++ b/api/core/plugin/impl/model.py
@@ -2,12 +2,6 @@ import binascii
from collections.abc import Generator, Sequence
from typing import IO
-from core.model_runtime.entities.llm_entities import LLMResultChunk
-from core.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool
-from core.model_runtime.entities.model_entities import AIModelEntity
-from core.model_runtime.entities.rerank_entities import RerankResult
-from core.model_runtime.entities.text_embedding_entities import EmbeddingResult
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.plugin.entities.plugin_daemon import (
PluginBasicBooleanResponse,
PluginDaemonInnerError,
@@ -19,6 +13,12 @@ from core.plugin.entities.plugin_daemon import (
PluginVoicesResponse,
)
from core.plugin.impl.base import BasePluginClient
+from dify_graph.model_runtime.entities.llm_entities import LLMResultChunk
+from dify_graph.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity
+from dify_graph.model_runtime.entities.rerank_entities import RerankResult
+from dify_graph.model_runtime.entities.text_embedding_entities import EmbeddingResult
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
class PluginModelClient(BasePluginClient):
diff --git a/api/core/prompt/advanced_prompt_transform.py b/api/core/prompt/advanced_prompt_transform.py
index 1883538dad..ce9f7e64b2 100644
--- a/api/core/prompt/advanced_prompt_transform.py
+++ b/api/core/prompt/advanced_prompt_transform.py
@@ -5,7 +5,12 @@ from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEnti
from core.helper.code_executor.jinja2.jinja2_formatter import Jinja2Formatter
from core.memory.token_buffer_memory import TokenBufferMemory
from core.model_manager import ModelInstance
-from core.model_runtime.entities import (
+from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate, MemoryConfig
+from core.prompt.prompt_transform import PromptTransform
+from core.prompt.utils.prompt_template_parser import PromptTemplateParser
+from dify_graph.file import file_manager
+from dify_graph.file.models import File
+from dify_graph.model_runtime.entities import (
AssistantPromptMessage,
PromptMessage,
PromptMessageRole,
@@ -13,12 +18,7 @@ from core.model_runtime.entities import (
TextPromptMessageContent,
UserPromptMessage,
)
-from core.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
-from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate, MemoryConfig
-from core.prompt.prompt_transform import PromptTransform
-from core.prompt.utils.prompt_template_parser import PromptTemplateParser
-from dify_graph.file import file_manager
-from dify_graph.file.models import File
+from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
from dify_graph.runtime import VariablePool
diff --git a/api/core/prompt/agent_history_prompt_transform.py b/api/core/prompt/agent_history_prompt_transform.py
index c1ae47709f..d09a46bfde 100644
--- a/api/core/prompt/agent_history_prompt_transform.py
+++ b/api/core/prompt/agent_history_prompt_transform.py
@@ -4,13 +4,13 @@ from core.app.entities.app_invoke_entities import (
ModelConfigWithCredentialsEntity,
)
from core.memory.token_buffer_memory import TokenBufferMemory
-from core.model_runtime.entities.message_entities import (
+from core.prompt.prompt_transform import PromptTransform
+from dify_graph.model_runtime.entities.message_entities import (
PromptMessage,
SystemPromptMessage,
UserPromptMessage,
)
-from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
-from core.prompt.prompt_transform import PromptTransform
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
class AgentHistoryPromptTransform(PromptTransform):
diff --git a/api/core/prompt/entities/advanced_prompt_entities.py b/api/core/prompt/entities/advanced_prompt_entities.py
index 7094633093..667f5ef099 100644
--- a/api/core/prompt/entities/advanced_prompt_entities.py
+++ b/api/core/prompt/entities/advanced_prompt_entities.py
@@ -2,7 +2,7 @@ from typing import Literal
from pydantic import BaseModel
-from core.model_runtime.entities.message_entities import PromptMessageRole
+from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
class ChatModelMessage(BaseModel):
diff --git a/api/core/prompt/prompt_transform.py b/api/core/prompt/prompt_transform.py
index 22ef5809bb..951736831f 100644
--- a/api/core/prompt/prompt_transform.py
+++ b/api/core/prompt/prompt_transform.py
@@ -3,9 +3,9 @@ from typing import Any
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
from core.memory.token_buffer_memory import TokenBufferMemory
from core.model_manager import ModelInstance
-from core.model_runtime.entities.message_entities import PromptMessage
-from core.model_runtime.entities.model_entities import AIModelEntity, ModelPropertyKey
from core.prompt.entities.advanced_prompt_entities import MemoryConfig
+from dify_graph.model_runtime.entities.message_entities import PromptMessage
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity, ModelPropertyKey
class PromptTransform:
diff --git a/api/core/prompt/simple_prompt_transform.py b/api/core/prompt/simple_prompt_transform.py
index 53981eb1e1..10c44349ae 100644
--- a/api/core/prompt/simple_prompt_transform.py
+++ b/api/core/prompt/simple_prompt_transform.py
@@ -7,7 +7,11 @@ from typing import TYPE_CHECKING, Any, cast
from core.app.app_config.entities import PromptTemplateEntity
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
from core.memory.token_buffer_memory import TokenBufferMemory
-from core.model_runtime.entities.message_entities import (
+from core.prompt.entities.advanced_prompt_entities import MemoryConfig
+from core.prompt.prompt_transform import PromptTransform
+from core.prompt.utils.prompt_template_parser import PromptTemplateParser
+from dify_graph.file import file_manager
+from dify_graph.model_runtime.entities.message_entities import (
ImagePromptMessageContent,
PromptMessage,
PromptMessageContentUnionTypes,
@@ -15,10 +19,6 @@ from core.model_runtime.entities.message_entities import (
TextPromptMessageContent,
UserPromptMessage,
)
-from core.prompt.entities.advanced_prompt_entities import MemoryConfig
-from core.prompt.prompt_transform import PromptTransform
-from core.prompt.utils.prompt_template_parser import PromptTemplateParser
-from dify_graph.file import file_manager
from models.model import AppMode
if TYPE_CHECKING:
diff --git a/api/core/prompt/utils/prompt_message_util.py b/api/core/prompt/utils/prompt_message_util.py
index 0a7a467227..85a2201395 100644
--- a/api/core/prompt/utils/prompt_message_util.py
+++ b/api/core/prompt/utils/prompt_message_util.py
@@ -1,7 +1,8 @@
from collections.abc import Sequence
from typing import Any, cast
-from core.model_runtime.entities import (
+from core.prompt.simple_prompt_transform import ModelMode
+from dify_graph.model_runtime.entities import (
AssistantPromptMessage,
AudioPromptMessageContent,
ImagePromptMessageContent,
@@ -10,7 +11,6 @@ from core.model_runtime.entities import (
PromptMessageRole,
TextPromptMessageContent,
)
-from core.prompt.simple_prompt_transform import ModelMode
class PromptMessageUtil:
diff --git a/api/core/provider_manager.py b/api/core/provider_manager.py
index fdbfca4330..f82c3a846b 100644
--- a/api/core/provider_manager.py
+++ b/api/core/provider_manager.py
@@ -28,14 +28,14 @@ from core.entities.provider_entities import (
from core.helper import encrypter
from core.helper.model_provider_cache import ProviderCredentialsCache, ProviderCredentialsCacheType
from core.helper.position_helper import is_filtered
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.entities.provider_entities import (
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.provider_entities import (
ConfigurateMethod,
CredentialFormSchema,
FormType,
ProviderEntity,
)
-from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
+from dify_graph.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
from extensions import ext_hosting_provider
from extensions.ext_database import db
from extensions.ext_redis import redis_client
diff --git a/api/core/rag/data_post_processor/data_post_processor.py b/api/core/rag/data_post_processor/data_post_processor.py
index bfa8781e9f..2b73ef5f26 100644
--- a/api/core/rag/data_post_processor/data_post_processor.py
+++ b/api/core/rag/data_post_processor/data_post_processor.py
@@ -1,6 +1,4 @@
from core.model_manager import ModelInstance, ModelManager
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.errors.invoke import InvokeAuthorizationError
from core.rag.data_post_processor.reorder import ReorderRunner
from core.rag.index_processor.constant.query_type import QueryType
from core.rag.models.document import Document
@@ -8,6 +6,8 @@ from core.rag.rerank.entity.weight import KeywordSetting, VectorSetting, Weights
from core.rag.rerank.rerank_base import BaseRerankRunner
from core.rag.rerank.rerank_factory import RerankRunnerFactory
from core.rag.rerank.rerank_type import RerankMode
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.errors.invoke import InvokeAuthorizationError
class DataPostProcessor:
diff --git a/api/core/rag/datasource/retrieval_service.py b/api/core/rag/datasource/retrieval_service.py
index 91c16ce079..e8a3a05e19 100644
--- a/api/core/rag/datasource/retrieval_service.py
+++ b/api/core/rag/datasource/retrieval_service.py
@@ -10,7 +10,6 @@ from sqlalchemy.orm import Session, load_only
from configs import dify_config
from core.db.session_factory import session_factory
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.rag.data_post_processor.data_post_processor import DataPostProcessor
from core.rag.datasource.keyword.keyword_factory import Keyword
from core.rag.datasource.vdb.vector_factory import Vector
@@ -23,6 +22,7 @@ from core.rag.models.document import Document
from core.rag.rerank.rerank_type import RerankMode
from core.rag.retrieval.retrieval_methods import RetrievalMethod
from core.tools.signature import sign_upload_file
+from dify_graph.model_runtime.entities.model_entities import ModelType
from extensions.ext_database import db
from models.dataset import (
ChildChunk,
diff --git a/api/core/rag/datasource/vdb/vector_factory.py b/api/core/rag/datasource/vdb/vector_factory.py
index b9772b3c08..3225764693 100644
--- a/api/core/rag/datasource/vdb/vector_factory.py
+++ b/api/core/rag/datasource/vdb/vector_factory.py
@@ -8,13 +8,13 @@ from sqlalchemy import select
from configs import dify_config
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.rag.datasource.vdb.vector_base import BaseVector
from core.rag.datasource.vdb.vector_type import VectorType
from core.rag.embedding.cached_embedding import CacheEmbedding
from core.rag.embedding.embedding_base import Embeddings
from core.rag.index_processor.constant.doc_type import DocType
from core.rag.models.document import Document
+from dify_graph.model_runtime.entities.model_entities import ModelType
from extensions.ext_database import db
from extensions.ext_redis import redis_client
from extensions.ext_storage import storage
diff --git a/api/core/rag/docstore/dataset_docstore.py b/api/core/rag/docstore/dataset_docstore.py
index 69adac522d..16a5588024 100644
--- a/api/core/rag/docstore/dataset_docstore.py
+++ b/api/core/rag/docstore/dataset_docstore.py
@@ -6,8 +6,8 @@ from typing import Any
from sqlalchemy import func, select
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.rag.models.document import AttachmentDocument, Document
+from dify_graph.model_runtime.entities.model_entities import ModelType
from extensions.ext_database import db
from models.dataset import ChildChunk, Dataset, DocumentSegment, SegmentAttachmentBinding
diff --git a/api/core/rag/embedding/cached_embedding.py b/api/core/rag/embedding/cached_embedding.py
index 0efe19a57c..6d1b65a055 100644
--- a/api/core/rag/embedding/cached_embedding.py
+++ b/api/core/rag/embedding/cached_embedding.py
@@ -9,9 +9,9 @@ from sqlalchemy.exc import IntegrityError
from configs import dify_config
from core.entities.embedding_type import EmbeddingInputType
from core.model_manager import ModelInstance
-from core.model_runtime.entities.model_entities import ModelPropertyKey
-from core.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel
from core.rag.embedding.embedding_base import Embeddings
+from dify_graph.model_runtime.entities.model_entities import ModelPropertyKey
+from dify_graph.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel
from extensions.ext_database import db
from extensions.ext_redis import redis_client
from libs import helper
diff --git a/api/core/rag/index_processor/processor/paragraph_index_processor.py b/api/core/rag/index_processor/processor/paragraph_index_processor.py
index 79265cf3ed..9c21dad488 100644
--- a/api/core/rag/index_processor/processor/paragraph_index_processor.py
+++ b/api/core/rag/index_processor/processor/paragraph_index_processor.py
@@ -12,15 +12,6 @@ from core.app.llm import deduct_llm_quota
from core.entities.knowledge_entities import PreviewDetail
from core.llm_generator.prompts import DEFAULT_GENERATOR_SUMMARY_PROMPT
from core.model_manager import ModelInstance
-from core.model_runtime.entities.llm_entities import LLMResult, LLMUsage
-from core.model_runtime.entities.message_entities import (
- ImagePromptMessageContent,
- PromptMessage,
- PromptMessageContentUnionTypes,
- TextPromptMessageContent,
- UserPromptMessage,
-)
-from core.model_runtime.entities.model_entities import ModelFeature, ModelType
from core.provider_manager import ProviderManager
from core.rag.cleaner.clean_processor import CleanProcessor
from core.rag.datasource.keyword.keyword_factory import Keyword
@@ -36,6 +27,15 @@ from core.rag.models.document import AttachmentDocument, Document, MultimodalGen
from core.rag.retrieval.retrieval_methods import RetrievalMethod
from core.tools.utils.text_processing_utils import remove_leading_symbols
from dify_graph.file import File, FileTransferMethod, FileType, file_manager
+from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMUsage
+from dify_graph.model_runtime.entities.message_entities import (
+ ImagePromptMessageContent,
+ PromptMessage,
+ PromptMessageContentUnionTypes,
+ TextPromptMessageContent,
+ UserPromptMessage,
+)
+from dify_graph.model_runtime.entities.model_entities import ModelFeature, ModelType
from extensions.ext_database import db
from factories.file_factory import build_from_mapping
from libs import helper
diff --git a/api/core/rag/rerank/rerank_model.py b/api/core/rag/rerank/rerank_model.py
index 690e780921..fcb14ffc52 100644
--- a/api/core/rag/rerank/rerank_model.py
+++ b/api/core/rag/rerank/rerank_model.py
@@ -1,12 +1,12 @@
import base64
from core.model_manager import ModelInstance, ModelManager
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.entities.rerank_entities import RerankResult
from core.rag.index_processor.constant.doc_type import DocType
from core.rag.index_processor.constant.query_type import QueryType
from core.rag.models.document import Document
from core.rag.rerank.rerank_base import BaseRerankRunner
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.rerank_entities import RerankResult
from extensions.ext_database import db
from extensions.ext_storage import storage
from models.model import UploadFile
diff --git a/api/core/rag/rerank/weight_rerank.py b/api/core/rag/rerank/weight_rerank.py
index 18020608cb..7edd05d2d1 100644
--- a/api/core/rag/rerank/weight_rerank.py
+++ b/api/core/rag/rerank/weight_rerank.py
@@ -4,7 +4,6 @@ from collections import Counter
import numpy as np
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.rag.datasource.keyword.jieba.jieba_keyword_table_handler import JiebaKeywordTableHandler
from core.rag.embedding.cached_embedding import CacheEmbedding
from core.rag.index_processor.constant.doc_type import DocType
@@ -12,6 +11,7 @@ from core.rag.index_processor.constant.query_type import QueryType
from core.rag.models.document import Document
from core.rag.rerank.entity.weight import VectorSetting, Weights
from core.rag.rerank.rerank_base import BaseRerankRunner
+from dify_graph.model_runtime.entities.model_entities import ModelType
class WeightRerankRunner(BaseRerankRunner):
diff --git a/api/core/rag/retrieval/dataset_retrieval.py b/api/core/rag/retrieval/dataset_retrieval.py
index 151dfe81b3..b56ff9edef 100644
--- a/api/core/rag/retrieval/dataset_retrieval.py
+++ b/api/core/rag/retrieval/dataset_retrieval.py
@@ -25,10 +25,6 @@ from core.entities.agent_entities import PlanningStrategy
from core.entities.model_entities import ModelStatus
from core.memory.token_buffer_memory import TokenBufferMemory
from core.model_manager import ModelInstance, ModelManager
-from core.model_runtime.entities.llm_entities import LLMResult, LLMUsage
-from core.model_runtime.entities.message_entities import PromptMessage, PromptMessageRole, PromptMessageTool
-from core.model_runtime.entities.model_entities import ModelFeature, ModelType
-from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from core.ops.entities.trace_entity import TraceTaskName
from core.ops.ops_trace_manager import TraceQueueManager, TraceTask
from core.ops.utils import measure_time
@@ -61,6 +57,10 @@ from core.rag.retrieval.template_prompts import (
from core.tools.signature import sign_upload_file
from core.tools.utils.dataset_retriever.dataset_retriever_base_tool import DatasetRetrieverBaseTool
from dify_graph.file import File, FileTransferMethod, FileType
+from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMUsage
+from dify_graph.model_runtime.entities.message_entities import PromptMessage, PromptMessageRole, PromptMessageTool
+from dify_graph.model_runtime.entities.model_entities import ModelFeature, ModelType
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from dify_graph.nodes.knowledge_retrieval import exc
from dify_graph.repositories.rag_retrieval_protocol import (
KnowledgeRetrievalRequest,
diff --git a/api/core/rag/retrieval/router/multi_dataset_function_call_router.py b/api/core/rag/retrieval/router/multi_dataset_function_call_router.py
index 5f3e1a8cae..23a2ac8386 100644
--- a/api/core/rag/retrieval/router/multi_dataset_function_call_router.py
+++ b/api/core/rag/retrieval/router/multi_dataset_function_call_router.py
@@ -2,8 +2,8 @@ from typing import Union
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
from core.model_manager import ModelInstance
-from core.model_runtime.entities.llm_entities import LLMResult, LLMUsage
-from core.model_runtime.entities.message_entities import PromptMessageTool, SystemPromptMessage, UserPromptMessage
+from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMUsage
+from dify_graph.model_runtime.entities.message_entities import PromptMessageTool, SystemPromptMessage, UserPromptMessage
class FunctionCallMultiDatasetRouter:
diff --git a/api/core/rag/retrieval/router/multi_dataset_react_route.py b/api/core/rag/retrieval/router/multi_dataset_react_route.py
index fa2007122d..ea110fa0a7 100644
--- a/api/core/rag/retrieval/router/multi_dataset_react_route.py
+++ b/api/core/rag/retrieval/router/multi_dataset_react_route.py
@@ -4,12 +4,12 @@ from typing import Union
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
from core.app.llm import deduct_llm_quota
from core.model_manager import ModelInstance
-from core.model_runtime.entities.llm_entities import LLMResult, LLMUsage
-from core.model_runtime.entities.message_entities import PromptMessage, PromptMessageRole, PromptMessageTool
from core.prompt.advanced_prompt_transform import AdvancedPromptTransform
from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate
from core.rag.retrieval.output_parser.react_output import ReactAction
from core.rag.retrieval.output_parser.structured_chat import StructuredChatOutputParser
+from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMUsage
+from dify_graph.model_runtime.entities.message_entities import PromptMessage, PromptMessageRole, PromptMessageTool
PREFIX = """Respond to the human as helpfully and accurately as possible. You have access to the following tools:"""
diff --git a/api/core/rag/splitter/fixed_text_splitter.py b/api/core/rag/splitter/fixed_text_splitter.py
index b65cb14d8e..7a00e8a886 100644
--- a/api/core/rag/splitter/fixed_text_splitter.py
+++ b/api/core/rag/splitter/fixed_text_splitter.py
@@ -7,7 +7,6 @@ import re
from typing import Any
from core.model_manager import ModelInstance
-from core.model_runtime.model_providers.__base.tokenizers.gpt2_tokenizer import GPT2Tokenizer
from core.rag.splitter.text_splitter import (
TS,
Collection,
@@ -16,6 +15,7 @@ from core.rag.splitter.text_splitter import (
Set,
Union,
)
+from dify_graph.model_runtime.model_providers.__base.tokenizers.gpt2_tokenizer import GPT2Tokenizer
class EnhanceRecursiveCharacterTextSplitter(RecursiveCharacterTextSplitter):
diff --git a/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py b/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py
index 85ee9b5083..3fc333038d 100644
--- a/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py
+++ b/api/core/repositories/sqlalchemy_workflow_node_execution_repository.py
@@ -17,9 +17,9 @@ from sqlalchemy.orm import sessionmaker
from tenacity import before_sleep_log, retry, retry_if_exception, stop_after_attempt
from configs import dify_config
-from core.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.entities import WorkflowNodeExecution
from dify_graph.enums import NodeType, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.repositories.workflow_node_execution_repository import OrderConfig, WorkflowNodeExecutionRepository
from dify_graph.workflow_type_encoder import WorkflowRuntimeTypeConverter
from extensions.ext_storage import storage
diff --git a/api/core/tools/builtin_tool/providers/audio/tools/asr.py b/api/core/tools/builtin_tool/providers/audio/tools/asr.py
index b0552fd863..dacc49c746 100644
--- a/api/core/tools/builtin_tool/providers/audio/tools/asr.py
+++ b/api/core/tools/builtin_tool/providers/audio/tools/asr.py
@@ -3,13 +3,13 @@ from collections.abc import Generator
from typing import Any
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.plugin.entities.parameters import PluginParameterOption
from core.tools.builtin_tool.tool import BuiltinTool
from core.tools.entities.common_entities import I18nObject
from core.tools.entities.tool_entities import ToolInvokeMessage, ToolParameter
from dify_graph.file.enums import FileType
from dify_graph.file.file_manager import download
+from dify_graph.model_runtime.entities.model_entities import ModelType
from services.model_provider_service import ModelProviderService
diff --git a/api/core/tools/builtin_tool/providers/audio/tools/tts.py b/api/core/tools/builtin_tool/providers/audio/tools/tts.py
index 5009f7ac21..7818bff0ab 100644
--- a/api/core/tools/builtin_tool/providers/audio/tools/tts.py
+++ b/api/core/tools/builtin_tool/providers/audio/tools/tts.py
@@ -3,11 +3,11 @@ from collections.abc import Generator
from typing import Any
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
from core.plugin.entities.parameters import PluginParameterOption
from core.tools.builtin_tool.tool import BuiltinTool
from core.tools.entities.common_entities import I18nObject
from core.tools.entities.tool_entities import ToolInvokeMessage, ToolParameter
+from dify_graph.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
from services.model_provider_service import ModelProviderService
diff --git a/api/core/tools/builtin_tool/tool.py b/api/core/tools/builtin_tool/tool.py
index 51b0407886..00f5931088 100644
--- a/api/core/tools/builtin_tool/tool.py
+++ b/api/core/tools/builtin_tool/tool.py
@@ -1,11 +1,11 @@
from __future__ import annotations
-from core.model_runtime.entities.llm_entities import LLMResult
-from core.model_runtime.entities.message_entities import PromptMessage, SystemPromptMessage, UserPromptMessage
from core.tools.__base.tool import Tool
from core.tools.__base.tool_runtime import ToolRuntime
from core.tools.entities.tool_entities import ToolProviderType
from core.tools.utils.model_invocation_utils import ModelInvocationUtils
+from dify_graph.model_runtime.entities.llm_entities import LLMResult
+from dify_graph.model_runtime.entities.message_entities import PromptMessage, SystemPromptMessage, UserPromptMessage
_SUMMARY_PROMPT = """You are a professional language researcher, you are interested in the language
and you can quickly aimed at the main point of an webpage and reproduce it in your own words but
diff --git a/api/core/tools/entities/api_entities.py b/api/core/tools/entities/api_entities.py
index 218ffafd55..2545290b57 100644
--- a/api/core/tools/entities/api_entities.py
+++ b/api/core/tools/entities/api_entities.py
@@ -5,11 +5,11 @@ from typing import Any, Literal
from pydantic import BaseModel, Field, field_validator
from core.entities.mcp_provider import MCPAuthentication, MCPConfiguration
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.plugin.entities.plugin_daemon import CredentialType
from core.tools.__base.tool import ToolParameter
from core.tools.entities.common_entities import I18nObject
from core.tools.entities.tool_entities import ToolProviderType
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
class ToolApiEntity(BaseModel):
diff --git a/api/core/tools/mcp_tool/tool.py b/api/core/tools/mcp_tool/tool.py
index 1d439323f2..9025ff6ef1 100644
--- a/api/core/tools/mcp_tool/tool.py
+++ b/api/core/tools/mcp_tool/tool.py
@@ -17,11 +17,11 @@ from core.mcp.types import (
TextContent,
TextResourceContents,
)
-from core.model_runtime.entities.llm_entities import LLMUsage, LLMUsageMetadata
from core.tools.__base.tool import Tool
from core.tools.__base.tool_runtime import ToolRuntime
from core.tools.entities.tool_entities import ToolEntity, ToolInvokeMessage, ToolProviderType
from core.tools.errors import ToolInvokeError
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage, LLMUsageMetadata
logger = logging.getLogger(__name__)
diff --git a/api/core/tools/tool_manager.py b/api/core/tools/tool_manager.py
index 1bb9960e62..323bb0584a 100644
--- a/api/core/tools/tool_manager.py
+++ b/api/core/tools/tool_manager.py
@@ -37,7 +37,6 @@ from core.agent.entities import AgentToolEntity
from core.app.entities.app_invoke_entities import InvokeFrom
from core.helper.module_import_helper import load_single_subclass_from_source
from core.helper.position_helper import is_filtered
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.plugin.entities.plugin_daemon import CredentialType
from core.tools.__base.tool import Tool
from core.tools.builtin_tool.provider import BuiltinToolProviderController
@@ -58,6 +57,7 @@ from core.tools.tool_label_manager import ToolLabelManager
from core.tools.utils.configuration import ToolParameterConfigurationManager
from core.tools.utils.encryption import create_provider_encrypter, create_tool_provider_encrypter
from core.tools.workflow_as_tool.tool import WorkflowTool
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from models.tools import ApiToolProvider, BuiltinToolProvider, WorkflowToolProvider
from services.tools.tools_transform_service import ToolTransformService
diff --git a/api/core/tools/utils/dataset_retriever/dataset_multi_retriever_tool.py b/api/core/tools/utils/dataset_retriever/dataset_multi_retriever_tool.py
index 20e10be075..3dbbbe6563 100644
--- a/api/core/tools/utils/dataset_retriever/dataset_multi_retriever_tool.py
+++ b/api/core/tools/utils/dataset_retriever/dataset_multi_retriever_tool.py
@@ -7,13 +7,13 @@ from sqlalchemy import select
from core.callback_handler.index_tool_callback_handler import DatasetIndexToolCallbackHandler
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.rag.datasource.retrieval_service import RetrievalService
from core.rag.entities.citation_metadata import RetrievalSourceMetadata
from core.rag.models.document import Document as RagDocument
from core.rag.rerank.rerank_model import RerankModelRunner
from core.rag.retrieval.retrieval_methods import RetrievalMethod
from core.tools.utils.dataset_retriever.dataset_retriever_base_tool import DatasetRetrieverBaseTool
+from dify_graph.model_runtime.entities.model_entities import ModelType
from extensions.ext_database import db
from models.dataset import Dataset, Document, DocumentSegment
diff --git a/api/core/tools/utils/model_invocation_utils.py b/api/core/tools/utils/model_invocation_utils.py
index e7fba09359..8f958563bd 100644
--- a/api/core/tools/utils/model_invocation_utils.py
+++ b/api/core/tools/utils/model_invocation_utils.py
@@ -9,18 +9,18 @@ from decimal import Decimal
from typing import cast
from core.model_manager import ModelManager
-from core.model_runtime.entities.llm_entities import LLMResult
-from core.model_runtime.entities.message_entities import PromptMessage
-from core.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
-from core.model_runtime.errors.invoke import (
+from dify_graph.model_runtime.entities.llm_entities import LLMResult
+from dify_graph.model_runtime.entities.message_entities import PromptMessage
+from dify_graph.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
+from dify_graph.model_runtime.errors.invoke import (
InvokeAuthorizationError,
InvokeBadRequestError,
InvokeConnectionError,
InvokeRateLimitError,
InvokeServerUnavailableError,
)
-from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
-from core.model_runtime.utils.encoders import jsonable_encoder
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from extensions.ext_database import db
from models.tools import ToolModelInvoke
diff --git a/api/core/tools/workflow_as_tool/tool.py b/api/core/tools/workflow_as_tool/tool.py
index 6b1b48505b..9b9aa7a741 100644
--- a/api/core/tools/workflow_as_tool/tool.py
+++ b/api/core/tools/workflow_as_tool/tool.py
@@ -8,7 +8,6 @@ from typing import Any, cast
from sqlalchemy import select
from core.db.session_factory import session_factory
-from core.model_runtime.entities.llm_entities import LLMUsage, LLMUsageMetadata
from core.tools.__base.tool import Tool
from core.tools.__base.tool_runtime import ToolRuntime
from core.tools.entities.tool_entities import (
@@ -19,6 +18,7 @@ from core.tools.entities.tool_entities import (
)
from core.tools.errors import ToolInvokeError
from dify_graph.file import FILE_MODEL_IDENTITY, File, FileTransferMethod
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage, LLMUsageMetadata
from factories.file_factory import build_from_mapping
from models import Account, Tenant
from models.model import App, EndUser
diff --git a/api/core/workflow/node_factory.py b/api/core/workflow/node_factory.py
index 522e510755..3105ceb04b 100644
--- a/api/core/workflow/node_factory.py
+++ b/api/core/workflow/node_factory.py
@@ -15,9 +15,6 @@ from core.helper.code_executor.code_executor import (
from core.helper.ssrf_proxy import ssrf_proxy
from core.memory.token_buffer_memory import TokenBufferMemory
from core.model_manager import ModelInstance
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.memory import PromptMessageMemory
-from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from core.prompt.entities.advanced_prompt_entities import MemoryConfig
from core.rag.index_processor.index_processor import IndexProcessor
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
@@ -27,6 +24,9 @@ from dify_graph.entities.graph_config import NodeConfigDict
from dify_graph.enums import NodeType, SystemVariableKey
from dify_graph.file.file_manager import file_manager
from dify_graph.graph.graph import NodeFactory
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.memory import PromptMessageMemory
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from dify_graph.nodes.base.node import Node
from dify_graph.nodes.code.code_node import CodeNode, WorkflowCodeExecutor
from dify_graph.nodes.code.entities import CodeLanguage
diff --git a/api/dify_graph/file/file_manager.py b/api/dify_graph/file/file_manager.py
index a7719400d9..8d998054db 100644
--- a/api/dify_graph/file/file_manager.py
+++ b/api/dify_graph/file/file_manager.py
@@ -3,14 +3,14 @@ from __future__ import annotations
import base64
from collections.abc import Mapping
-from core.model_runtime.entities import (
+from dify_graph.model_runtime.entities import (
AudioPromptMessageContent,
DocumentPromptMessageContent,
ImagePromptMessageContent,
TextPromptMessageContent,
VideoPromptMessageContent,
)
-from core.model_runtime.entities.message_entities import PromptMessageContentUnionTypes
+from dify_graph.model_runtime.entities.message_entities import PromptMessageContentUnionTypes
from . import helpers
from .enums import FileAttribute
diff --git a/api/dify_graph/file/models.py b/api/dify_graph/file/models.py
index cd7d3edde8..db12d4f57a 100644
--- a/api/dify_graph/file/models.py
+++ b/api/dify_graph/file/models.py
@@ -5,7 +5,7 @@ from typing import Any
from pydantic import BaseModel, Field, model_validator
-from core.model_runtime.entities.message_entities import ImagePromptMessageContent
+from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent
from . import helpers
from .constants import FILE_MODEL_IDENTITY
diff --git a/api/dify_graph/graph_engine/event_management/event_handlers.py b/api/dify_graph/graph_engine/event_management/event_handlers.py
index 92ea793ccb..7f5ad40e0e 100644
--- a/api/dify_graph/graph_engine/event_management/event_handlers.py
+++ b/api/dify_graph/graph_engine/event_management/event_handlers.py
@@ -7,7 +7,6 @@ from collections.abc import Mapping
from functools import singledispatchmethod
from typing import TYPE_CHECKING, final
-from core.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.enums import ErrorStrategy, NodeExecutionType, NodeState
from dify_graph.graph import Graph
from dify_graph.graph_events import (
@@ -30,6 +29,7 @@ from dify_graph.graph_events import (
NodeRunStreamChunkEvent,
NodeRunSucceededEvent,
)
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.runtime import GraphRuntimeState
from ..domain.graph_execution import GraphExecution
diff --git a/api/core/model_runtime/README.md b/api/dify_graph/model_runtime/README.md
similarity index 100%
rename from api/core/model_runtime/README.md
rename to api/dify_graph/model_runtime/README.md
diff --git a/api/core/model_runtime/README_CN.md b/api/dify_graph/model_runtime/README_CN.md
similarity index 100%
rename from api/core/model_runtime/README_CN.md
rename to api/dify_graph/model_runtime/README_CN.md
diff --git a/api/core/model_runtime/__init__.py b/api/dify_graph/model_runtime/__init__.py
similarity index 100%
rename from api/core/model_runtime/__init__.py
rename to api/dify_graph/model_runtime/__init__.py
diff --git a/api/core/model_runtime/callbacks/__init__.py b/api/dify_graph/model_runtime/callbacks/__init__.py
similarity index 100%
rename from api/core/model_runtime/callbacks/__init__.py
rename to api/dify_graph/model_runtime/callbacks/__init__.py
diff --git a/api/core/model_runtime/callbacks/base_callback.py b/api/dify_graph/model_runtime/callbacks/base_callback.py
similarity index 94%
rename from api/core/model_runtime/callbacks/base_callback.py
rename to api/dify_graph/model_runtime/callbacks/base_callback.py
index a745a91510..20faf3d6cd 100644
--- a/api/core/model_runtime/callbacks/base_callback.py
+++ b/api/dify_graph/model_runtime/callbacks/base_callback.py
@@ -1,9 +1,9 @@
from abc import ABC, abstractmethod
from collections.abc import Sequence
-from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
-from core.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool
-from core.model_runtime.model_providers.__base.ai_model import AIModel
+from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
+from dify_graph.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool
+from dify_graph.model_runtime.model_providers.__base.ai_model import AIModel
_TEXT_COLOR_MAPPING = {
"blue": "36;1",
diff --git a/api/core/model_runtime/callbacks/logging_callback.py b/api/dify_graph/model_runtime/callbacks/logging_callback.py
similarity index 94%
rename from api/core/model_runtime/callbacks/logging_callback.py
rename to api/dify_graph/model_runtime/callbacks/logging_callback.py
index b366fcc57b..49b9ab27eb 100644
--- a/api/core/model_runtime/callbacks/logging_callback.py
+++ b/api/dify_graph/model_runtime/callbacks/logging_callback.py
@@ -4,10 +4,10 @@ import sys
from collections.abc import Sequence
from typing import cast
-from core.model_runtime.callbacks.base_callback import Callback
-from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
-from core.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool
-from core.model_runtime.model_providers.__base.ai_model import AIModel
+from dify_graph.model_runtime.callbacks.base_callback import Callback
+from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
+from dify_graph.model_runtime.entities.message_entities import PromptMessage, PromptMessageTool
+from dify_graph.model_runtime.model_providers.__base.ai_model import AIModel
logger = logging.getLogger(__name__)
diff --git a/api/core/model_runtime/entities/__init__.py b/api/dify_graph/model_runtime/entities/__init__.py
similarity index 100%
rename from api/core/model_runtime/entities/__init__.py
rename to api/dify_graph/model_runtime/entities/__init__.py
diff --git a/api/core/model_runtime/entities/common_entities.py b/api/dify_graph/model_runtime/entities/common_entities.py
similarity index 100%
rename from api/core/model_runtime/entities/common_entities.py
rename to api/dify_graph/model_runtime/entities/common_entities.py
diff --git a/api/core/model_runtime/entities/defaults.py b/api/dify_graph/model_runtime/entities/defaults.py
similarity index 98%
rename from api/core/model_runtime/entities/defaults.py
rename to api/dify_graph/model_runtime/entities/defaults.py
index 51c9c51257..53b732e5c6 100644
--- a/api/core/model_runtime/entities/defaults.py
+++ b/api/dify_graph/model_runtime/entities/defaults.py
@@ -1,4 +1,4 @@
-from core.model_runtime.entities.model_entities import DefaultParameterName
+from dify_graph.model_runtime.entities.model_entities import DefaultParameterName
PARAMETER_RULE_TEMPLATE: dict[DefaultParameterName, dict] = {
DefaultParameterName.TEMPERATURE: {
diff --git a/api/core/model_runtime/entities/llm_entities.py b/api/dify_graph/model_runtime/entities/llm_entities.py
similarity index 97%
rename from api/core/model_runtime/entities/llm_entities.py
rename to api/dify_graph/model_runtime/entities/llm_entities.py
index 2c7c421eed..eec682a2ae 100644
--- a/api/core/model_runtime/entities/llm_entities.py
+++ b/api/dify_graph/model_runtime/entities/llm_entities.py
@@ -7,8 +7,8 @@ from typing import Any, TypedDict, Union
from pydantic import BaseModel, Field
-from core.model_runtime.entities.message_entities import AssistantPromptMessage, PromptMessage
-from core.model_runtime.entities.model_entities import ModelUsage, PriceInfo
+from dify_graph.model_runtime.entities.message_entities import AssistantPromptMessage, PromptMessage
+from dify_graph.model_runtime.entities.model_entities import ModelUsage, PriceInfo
class LLMMode(StrEnum):
diff --git a/api/core/model_runtime/entities/message_entities.py b/api/dify_graph/model_runtime/entities/message_entities.py
similarity index 100%
rename from api/core/model_runtime/entities/message_entities.py
rename to api/dify_graph/model_runtime/entities/message_entities.py
diff --git a/api/core/model_runtime/entities/model_entities.py b/api/dify_graph/model_runtime/entities/model_entities.py
similarity index 98%
rename from api/core/model_runtime/entities/model_entities.py
rename to api/dify_graph/model_runtime/entities/model_entities.py
index 19194d162c..fbcde6740a 100644
--- a/api/core/model_runtime/entities/model_entities.py
+++ b/api/dify_graph/model_runtime/entities/model_entities.py
@@ -6,7 +6,7 @@ from typing import Any
from pydantic import BaseModel, ConfigDict, model_validator
-from core.model_runtime.entities.common_entities import I18nObject
+from dify_graph.model_runtime.entities.common_entities import I18nObject
class ModelType(StrEnum):
diff --git a/api/core/model_runtime/entities/provider_entities.py b/api/dify_graph/model_runtime/entities/provider_entities.py
similarity index 95%
rename from api/core/model_runtime/entities/provider_entities.py
rename to api/dify_graph/model_runtime/entities/provider_entities.py
index 2d88751668..97a99ea7ce 100644
--- a/api/core/model_runtime/entities/provider_entities.py
+++ b/api/dify_graph/model_runtime/entities/provider_entities.py
@@ -3,8 +3,8 @@ from enum import StrEnum, auto
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
-from core.model_runtime.entities.common_entities import I18nObject
-from core.model_runtime.entities.model_entities import AIModelEntity, ModelType
+from dify_graph.model_runtime.entities.common_entities import I18nObject
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity, ModelType
class ConfigurateMethod(StrEnum):
diff --git a/api/core/model_runtime/entities/rerank_entities.py b/api/dify_graph/model_runtime/entities/rerank_entities.py
similarity index 100%
rename from api/core/model_runtime/entities/rerank_entities.py
rename to api/dify_graph/model_runtime/entities/rerank_entities.py
diff --git a/api/core/model_runtime/entities/text_embedding_entities.py b/api/dify_graph/model_runtime/entities/text_embedding_entities.py
similarity index 89%
rename from api/core/model_runtime/entities/text_embedding_entities.py
rename to api/dify_graph/model_runtime/entities/text_embedding_entities.py
index 854c448250..a0210c169d 100644
--- a/api/core/model_runtime/entities/text_embedding_entities.py
+++ b/api/dify_graph/model_runtime/entities/text_embedding_entities.py
@@ -2,7 +2,7 @@ from decimal import Decimal
from pydantic import BaseModel
-from core.model_runtime.entities.model_entities import ModelUsage
+from dify_graph.model_runtime.entities.model_entities import ModelUsage
class EmbeddingUsage(ModelUsage):
diff --git a/api/core/model_runtime/errors/__init__.py b/api/dify_graph/model_runtime/errors/__init__.py
similarity index 100%
rename from api/core/model_runtime/errors/__init__.py
rename to api/dify_graph/model_runtime/errors/__init__.py
diff --git a/api/core/model_runtime/errors/invoke.py b/api/dify_graph/model_runtime/errors/invoke.py
similarity index 100%
rename from api/core/model_runtime/errors/invoke.py
rename to api/dify_graph/model_runtime/errors/invoke.py
diff --git a/api/core/model_runtime/errors/validate.py b/api/dify_graph/model_runtime/errors/validate.py
similarity index 100%
rename from api/core/model_runtime/errors/validate.py
rename to api/dify_graph/model_runtime/errors/validate.py
diff --git a/api/core/model_runtime/memory/__init__.py b/api/dify_graph/model_runtime/memory/__init__.py
similarity index 100%
rename from api/core/model_runtime/memory/__init__.py
rename to api/dify_graph/model_runtime/memory/__init__.py
diff --git a/api/core/model_runtime/memory/prompt_message_memory.py b/api/dify_graph/model_runtime/memory/prompt_message_memory.py
similarity index 89%
rename from api/core/model_runtime/memory/prompt_message_memory.py
rename to api/dify_graph/model_runtime/memory/prompt_message_memory.py
index 4491ddfd05..a76a7faf71 100644
--- a/api/core/model_runtime/memory/prompt_message_memory.py
+++ b/api/dify_graph/model_runtime/memory/prompt_message_memory.py
@@ -3,7 +3,7 @@ from __future__ import annotations
from collections.abc import Sequence
from typing import Protocol
-from core.model_runtime.entities import PromptMessage
+from dify_graph.model_runtime.entities import PromptMessage
DEFAULT_MEMORY_MAX_TOKEN_LIMIT = 2000
diff --git a/api/core/model_runtime/model_providers/__base/__init__.py b/api/dify_graph/model_runtime/model_providers/__base/__init__.py
similarity index 100%
rename from api/core/model_runtime/model_providers/__base/__init__.py
rename to api/dify_graph/model_runtime/model_providers/__base/__init__.py
diff --git a/api/core/model_runtime/model_providers/__base/ai_model.py b/api/dify_graph/model_runtime/model_providers/__base/ai_model.py
similarity index 97%
rename from api/core/model_runtime/model_providers/__base/ai_model.py
rename to api/dify_graph/model_runtime/model_providers/__base/ai_model.py
index c3e50eaddd..ac7ae9925b 100644
--- a/api/core/model_runtime/model_providers/__base/ai_model.py
+++ b/api/dify_graph/model_runtime/model_providers/__base/ai_model.py
@@ -6,9 +6,10 @@ from pydantic import BaseModel, ConfigDict, Field, ValidationError
from redis import RedisError
from configs import dify_config
-from core.model_runtime.entities.common_entities import I18nObject
-from core.model_runtime.entities.defaults import PARAMETER_RULE_TEMPLATE
-from core.model_runtime.entities.model_entities import (
+from core.plugin.entities.plugin_daemon import PluginModelProviderEntity
+from dify_graph.model_runtime.entities.common_entities import I18nObject
+from dify_graph.model_runtime.entities.defaults import PARAMETER_RULE_TEMPLATE
+from dify_graph.model_runtime.entities.model_entities import (
AIModelEntity,
DefaultParameterName,
ModelType,
@@ -16,7 +17,7 @@ from core.model_runtime.entities.model_entities import (
PriceInfo,
PriceType,
)
-from core.model_runtime.errors.invoke import (
+from dify_graph.model_runtime.errors.invoke import (
InvokeAuthorizationError,
InvokeBadRequestError,
InvokeConnectionError,
@@ -24,7 +25,6 @@ from core.model_runtime.errors.invoke import (
InvokeRateLimitError,
InvokeServerUnavailableError,
)
-from core.plugin.entities.plugin_daemon import PluginModelProviderEntity
from extensions.ext_redis import redis_client
logger = logging.getLogger(__name__)
diff --git a/api/core/model_runtime/model_providers/__base/large_language_model.py b/api/dify_graph/model_runtime/model_providers/__base/large_language_model.py
similarity index 98%
rename from api/core/model_runtime/model_providers/__base/large_language_model.py
rename to api/dify_graph/model_runtime/model_providers/__base/large_language_model.py
index c32ab0879e..bf864ca227 100644
--- a/api/core/model_runtime/model_providers/__base/large_language_model.py
+++ b/api/dify_graph/model_runtime/model_providers/__base/large_language_model.py
@@ -7,21 +7,21 @@ from typing import Union
from pydantic import ConfigDict
from configs import dify_config
-from core.model_runtime.callbacks.base_callback import Callback
-from core.model_runtime.callbacks.logging_callback import LoggingCallback
-from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMUsage
-from core.model_runtime.entities.message_entities import (
+from dify_graph.model_runtime.callbacks.base_callback import Callback
+from dify_graph.model_runtime.callbacks.logging_callback import LoggingCallback
+from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMUsage
+from dify_graph.model_runtime.entities.message_entities import (
AssistantPromptMessage,
PromptMessage,
PromptMessageContentUnionTypes,
PromptMessageTool,
TextPromptMessageContent,
)
-from core.model_runtime.entities.model_entities import (
+from dify_graph.model_runtime.entities.model_entities import (
ModelType,
PriceType,
)
-from core.model_runtime.model_providers.__base.ai_model import AIModel
+from dify_graph.model_runtime.model_providers.__base.ai_model import AIModel
logger = logging.getLogger(__name__)
diff --git a/api/core/model_runtime/model_providers/__base/moderation_model.py b/api/dify_graph/model_runtime/model_providers/__base/moderation_model.py
similarity index 89%
rename from api/core/model_runtime/model_providers/__base/moderation_model.py
rename to api/dify_graph/model_runtime/model_providers/__base/moderation_model.py
index 7aff0184f4..5fa3d1634b 100644
--- a/api/core/model_runtime/model_providers/__base/moderation_model.py
+++ b/api/dify_graph/model_runtime/model_providers/__base/moderation_model.py
@@ -2,8 +2,8 @@ import time
from pydantic import ConfigDict
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.model_providers.__base.ai_model import AIModel
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.model_providers.__base.ai_model import AIModel
class ModerationModel(AIModel):
diff --git a/api/core/model_runtime/model_providers/__base/rerank_model.py b/api/dify_graph/model_runtime/model_providers/__base/rerank_model.py
similarity index 92%
rename from api/core/model_runtime/model_providers/__base/rerank_model.py
rename to api/dify_graph/model_runtime/model_providers/__base/rerank_model.py
index 0a576b832a..5da2b84b95 100644
--- a/api/core/model_runtime/model_providers/__base/rerank_model.py
+++ b/api/dify_graph/model_runtime/model_providers/__base/rerank_model.py
@@ -1,6 +1,6 @@
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.entities.rerank_entities import RerankResult
-from core.model_runtime.model_providers.__base.ai_model import AIModel
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.rerank_entities import RerankResult
+from dify_graph.model_runtime.model_providers.__base.ai_model import AIModel
class RerankModel(AIModel):
diff --git a/api/core/model_runtime/model_providers/__base/speech2text_model.py b/api/dify_graph/model_runtime/model_providers/__base/speech2text_model.py
similarity index 88%
rename from api/core/model_runtime/model_providers/__base/speech2text_model.py
rename to api/dify_graph/model_runtime/model_providers/__base/speech2text_model.py
index 9d3bf13e79..e69069a85d 100644
--- a/api/core/model_runtime/model_providers/__base/speech2text_model.py
+++ b/api/dify_graph/model_runtime/model_providers/__base/speech2text_model.py
@@ -2,8 +2,8 @@ from typing import IO
from pydantic import ConfigDict
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.model_providers.__base.ai_model import AIModel
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.model_providers.__base.ai_model import AIModel
class Speech2TextModel(AIModel):
diff --git a/api/core/model_runtime/model_providers/__base/text_embedding_model.py b/api/dify_graph/model_runtime/model_providers/__base/text_embedding_model.py
similarity index 94%
rename from api/core/model_runtime/model_providers/__base/text_embedding_model.py
rename to api/dify_graph/model_runtime/model_providers/__base/text_embedding_model.py
index 4c902e2c11..3438da2ada 100644
--- a/api/core/model_runtime/model_providers/__base/text_embedding_model.py
+++ b/api/dify_graph/model_runtime/model_providers/__base/text_embedding_model.py
@@ -1,9 +1,9 @@
from pydantic import ConfigDict
from core.entities.embedding_type import EmbeddingInputType
-from core.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
-from core.model_runtime.entities.text_embedding_entities import EmbeddingResult
-from core.model_runtime.model_providers.__base.ai_model import AIModel
+from dify_graph.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
+from dify_graph.model_runtime.entities.text_embedding_entities import EmbeddingResult
+from dify_graph.model_runtime.model_providers.__base.ai_model import AIModel
class TextEmbeddingModel(AIModel):
diff --git a/api/core/model_runtime/model_providers/__base/tokenizers/gpt2_tokenizer.py b/api/dify_graph/model_runtime/model_providers/__base/tokenizers/gpt2_tokenizer.py
similarity index 100%
rename from api/core/model_runtime/model_providers/__base/tokenizers/gpt2_tokenizer.py
rename to api/dify_graph/model_runtime/model_providers/__base/tokenizers/gpt2_tokenizer.py
diff --git a/api/core/model_runtime/model_providers/__base/tts_model.py b/api/dify_graph/model_runtime/model_providers/__base/tts_model.py
similarity index 94%
rename from api/core/model_runtime/model_providers/__base/tts_model.py
rename to api/dify_graph/model_runtime/model_providers/__base/tts_model.py
index a83c8be37c..0656529f22 100644
--- a/api/core/model_runtime/model_providers/__base/tts_model.py
+++ b/api/dify_graph/model_runtime/model_providers/__base/tts_model.py
@@ -3,8 +3,8 @@ from collections.abc import Iterable
from pydantic import ConfigDict
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.model_providers.__base.ai_model import AIModel
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.model_providers.__base.ai_model import AIModel
logger = logging.getLogger(__name__)
diff --git a/api/core/model_runtime/model_providers/__init__.py b/api/dify_graph/model_runtime/model_providers/__init__.py
similarity index 100%
rename from api/core/model_runtime/model_providers/__init__.py
rename to api/dify_graph/model_runtime/model_providers/__init__.py
diff --git a/api/core/model_runtime/model_providers/_position.yaml b/api/dify_graph/model_runtime/model_providers/_position.yaml
similarity index 100%
rename from api/core/model_runtime/model_providers/_position.yaml
rename to api/dify_graph/model_runtime/model_providers/_position.yaml
diff --git a/api/core/model_runtime/model_providers/model_provider_factory.py b/api/dify_graph/model_runtime/model_providers/model_provider_factory.py
similarity index 93%
rename from api/core/model_runtime/model_providers/model_provider_factory.py
rename to api/dify_graph/model_runtime/model_providers/model_provider_factory.py
index 9cfc6889ac..e168fc11d1 100644
--- a/api/core/model_runtime/model_providers/model_provider_factory.py
+++ b/api/dify_graph/model_runtime/model_providers/model_provider_factory.py
@@ -10,18 +10,20 @@ from redis import RedisError
import contexts
from configs import dify_config
-from core.model_runtime.entities.model_entities import AIModelEntity, ModelType
-from core.model_runtime.entities.provider_entities import ProviderConfig, ProviderEntity, SimpleProviderEntity
-from core.model_runtime.model_providers.__base.ai_model import AIModel
-from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
-from core.model_runtime.model_providers.__base.moderation_model import ModerationModel
-from core.model_runtime.model_providers.__base.rerank_model import RerankModel
-from core.model_runtime.model_providers.__base.speech2text_model import Speech2TextModel
-from core.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel
-from core.model_runtime.model_providers.__base.tts_model import TTSModel
-from core.model_runtime.schema_validators.model_credential_schema_validator import ModelCredentialSchemaValidator
-from core.model_runtime.schema_validators.provider_credential_schema_validator import ProviderCredentialSchemaValidator
from core.plugin.entities.plugin_daemon import PluginModelProviderEntity
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity, ModelType
+from dify_graph.model_runtime.entities.provider_entities import ProviderConfig, ProviderEntity, SimpleProviderEntity
+from dify_graph.model_runtime.model_providers.__base.ai_model import AIModel
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
+from dify_graph.model_runtime.model_providers.__base.moderation_model import ModerationModel
+from dify_graph.model_runtime.model_providers.__base.rerank_model import RerankModel
+from dify_graph.model_runtime.model_providers.__base.speech2text_model import Speech2TextModel
+from dify_graph.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel
+from dify_graph.model_runtime.model_providers.__base.tts_model import TTSModel
+from dify_graph.model_runtime.schema_validators.model_credential_schema_validator import ModelCredentialSchemaValidator
+from dify_graph.model_runtime.schema_validators.provider_credential_schema_validator import (
+ ProviderCredentialSchemaValidator,
+)
from extensions.ext_redis import redis_client
from models.provider_ids import ModelProviderID
diff --git a/api/core/model_runtime/schema_validators/__init__.py b/api/dify_graph/model_runtime/schema_validators/__init__.py
similarity index 100%
rename from api/core/model_runtime/schema_validators/__init__.py
rename to api/dify_graph/model_runtime/schema_validators/__init__.py
diff --git a/api/core/model_runtime/schema_validators/common_validator.py b/api/dify_graph/model_runtime/schema_validators/common_validator.py
similarity index 97%
rename from api/core/model_runtime/schema_validators/common_validator.py
rename to api/dify_graph/model_runtime/schema_validators/common_validator.py
index 2caedeaf48..04cdb8e4f7 100644
--- a/api/core/model_runtime/schema_validators/common_validator.py
+++ b/api/dify_graph/model_runtime/schema_validators/common_validator.py
@@ -1,6 +1,6 @@
from typing import Union, cast
-from core.model_runtime.entities.provider_entities import CredentialFormSchema, FormType
+from dify_graph.model_runtime.entities.provider_entities import CredentialFormSchema, FormType
class CommonValidator:
diff --git a/api/core/model_runtime/schema_validators/model_credential_schema_validator.py b/api/dify_graph/model_runtime/schema_validators/model_credential_schema_validator.py
similarity index 78%
rename from api/core/model_runtime/schema_validators/model_credential_schema_validator.py
rename to api/dify_graph/model_runtime/schema_validators/model_credential_schema_validator.py
index 0ac935ca31..a97796e98f 100644
--- a/api/core/model_runtime/schema_validators/model_credential_schema_validator.py
+++ b/api/dify_graph/model_runtime/schema_validators/model_credential_schema_validator.py
@@ -1,6 +1,6 @@
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.entities.provider_entities import ModelCredentialSchema
-from core.model_runtime.schema_validators.common_validator import CommonValidator
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.provider_entities import ModelCredentialSchema
+from dify_graph.model_runtime.schema_validators.common_validator import CommonValidator
class ModelCredentialSchemaValidator(CommonValidator):
diff --git a/api/core/model_runtime/schema_validators/provider_credential_schema_validator.py b/api/dify_graph/model_runtime/schema_validators/provider_credential_schema_validator.py
similarity index 79%
rename from api/core/model_runtime/schema_validators/provider_credential_schema_validator.py
rename to api/dify_graph/model_runtime/schema_validators/provider_credential_schema_validator.py
index 06350f92a9..2fed75a76c 100644
--- a/api/core/model_runtime/schema_validators/provider_credential_schema_validator.py
+++ b/api/dify_graph/model_runtime/schema_validators/provider_credential_schema_validator.py
@@ -1,5 +1,5 @@
-from core.model_runtime.entities.provider_entities import ProviderCredentialSchema
-from core.model_runtime.schema_validators.common_validator import CommonValidator
+from dify_graph.model_runtime.entities.provider_entities import ProviderCredentialSchema
+from dify_graph.model_runtime.schema_validators.common_validator import CommonValidator
class ProviderCredentialSchemaValidator(CommonValidator):
diff --git a/api/core/model_runtime/utils/__init__.py b/api/dify_graph/model_runtime/utils/__init__.py
similarity index 100%
rename from api/core/model_runtime/utils/__init__.py
rename to api/dify_graph/model_runtime/utils/__init__.py
diff --git a/api/core/model_runtime/utils/encoders.py b/api/dify_graph/model_runtime/utils/encoders.py
similarity index 100%
rename from api/core/model_runtime/utils/encoders.py
rename to api/dify_graph/model_runtime/utils/encoders.py
diff --git a/api/dify_graph/node_events/base.py b/api/dify_graph/node_events/base.py
index f30c37f2cc..2f6259ae7d 100644
--- a/api/dify_graph/node_events/base.py
+++ b/api/dify_graph/node_events/base.py
@@ -3,8 +3,8 @@ from typing import Any
from pydantic import BaseModel, Field
-from core.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.enums import WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
class NodeEventBase(BaseModel):
diff --git a/api/dify_graph/node_events/node.py b/api/dify_graph/node_events/node.py
index 7f48539255..481e793267 100644
--- a/api/dify_graph/node_events/node.py
+++ b/api/dify_graph/node_events/node.py
@@ -3,10 +3,10 @@ from datetime import datetime
from pydantic import Field
-from core.model_runtime.entities.llm_entities import LLMUsage
from core.rag.entities.citation_metadata import RetrievalSourceMetadata
from dify_graph.entities.pause_reason import PauseReason
from dify_graph.file import File
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.node_events import NodeRunResult
from .base import NodeEventBase
diff --git a/api/dify_graph/nodes/agent/agent_node.py b/api/dify_graph/nodes/agent/agent_node.py
index 5d4c6526c4..f55871718f 100644
--- a/api/dify_graph/nodes/agent/agent_node.py
+++ b/api/dify_graph/nodes/agent/agent_node.py
@@ -13,9 +13,6 @@ from core.agent.entities import AgentToolEntity
from core.agent.plugin_entities import AgentStrategyParameter
from core.memory.token_buffer_memory import TokenBufferMemory
from core.model_manager import ModelInstance, ModelManager
-from core.model_runtime.entities.llm_entities import LLMUsage, LLMUsageMetadata
-from core.model_runtime.entities.model_entities import AIModelEntity, ModelType
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.provider_manager import ProviderManager
from core.tools.entities.tool_entities import (
ToolIdentity,
@@ -32,6 +29,9 @@ from dify_graph.enums import (
WorkflowNodeExecutionStatus,
)
from dify_graph.file import File, FileTransferMethod
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage, LLMUsageMetadata
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity, ModelType
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.node_events import (
AgentLogEvent,
NodeEventBase,
diff --git a/api/dify_graph/nodes/base/usage_tracking_mixin.py b/api/dify_graph/nodes/base/usage_tracking_mixin.py
index f1ba953af5..bd49419fd3 100644
--- a/api/dify_graph/nodes/base/usage_tracking_mixin.py
+++ b/api/dify_graph/nodes/base/usage_tracking_mixin.py
@@ -1,4 +1,4 @@
-from core.model_runtime.entities.llm_entities import LLMUsage
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.runtime import GraphRuntimeState
diff --git a/api/dify_graph/nodes/iteration/iteration_node.py b/api/dify_graph/nodes/iteration/iteration_node.py
index 5ac25b493d..03d57e3f04 100644
--- a/api/dify_graph/nodes/iteration/iteration_node.py
+++ b/api/dify_graph/nodes/iteration/iteration_node.py
@@ -6,7 +6,6 @@ from typing import TYPE_CHECKING, Any, NewType, cast
from typing_extensions import TypeIs
-from core.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.constants import CONVERSATION_VARIABLE_NODE_ID
from dify_graph.enums import (
NodeExecutionType,
@@ -20,6 +19,7 @@ from dify_graph.graph_events import (
GraphRunPartialSucceededEvent,
GraphRunSucceededEvent,
)
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.node_events import (
IterationFailedEvent,
IterationNextEvent,
diff --git a/api/dify_graph/nodes/knowledge_retrieval/knowledge_retrieval_node.py b/api/dify_graph/nodes/knowledge_retrieval/knowledge_retrieval_node.py
index 86e4a35901..97c013812e 100644
--- a/api/dify_graph/nodes/knowledge_retrieval/knowledge_retrieval_node.py
+++ b/api/dify_graph/nodes/knowledge_retrieval/knowledge_retrieval_node.py
@@ -3,14 +3,14 @@ from collections.abc import Mapping, Sequence
from typing import TYPE_CHECKING, Any, Literal
from core.app.app_config.entities import DatasetRetrieveConfigEntity
-from core.model_runtime.entities.llm_entities import LLMUsage
-from core.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.entities import GraphInitParams
from dify_graph.enums import (
NodeType,
WorkflowNodeExecutionMetadataKey,
WorkflowNodeExecutionStatus,
)
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.node_events import NodeRunResult
from dify_graph.nodes.base import LLMUsageTrackingMixin
from dify_graph.nodes.base.node import Node
diff --git a/api/dify_graph/nodes/llm/entities.py b/api/dify_graph/nodes/llm/entities.py
index 74e90fdc7d..707ed8ece0 100644
--- a/api/dify_graph/nodes/llm/entities.py
+++ b/api/dify_graph/nodes/llm/entities.py
@@ -3,8 +3,8 @@ from typing import Any, Literal
from pydantic import BaseModel, Field, field_validator
-from core.model_runtime.entities import ImagePromptMessageContent, LLMMode
from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate, MemoryConfig
+from dify_graph.model_runtime.entities import ImagePromptMessageContent, LLMMode
from dify_graph.nodes.base import BaseNodeData
from dify_graph.nodes.base.entities import VariableSelector
diff --git a/api/dify_graph/nodes/llm/llm_utils.py b/api/dify_graph/nodes/llm/llm_utils.py
index fb64630cd8..ca478a09f8 100644
--- a/api/dify_graph/nodes/llm/llm_utils.py
+++ b/api/dify_graph/nodes/llm/llm_utils.py
@@ -2,16 +2,16 @@ from collections.abc import Sequence
from typing import cast
from core.model_manager import ModelInstance
-from core.model_runtime.entities import PromptMessageRole
-from core.model_runtime.entities.message_entities import (
+from dify_graph.file.models import File
+from dify_graph.model_runtime.entities import PromptMessageRole
+from dify_graph.model_runtime.entities.message_entities import (
ImagePromptMessageContent,
PromptMessage,
TextPromptMessageContent,
)
-from core.model_runtime.entities.model_entities import AIModelEntity
-from core.model_runtime.memory import PromptMessageMemory
-from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
-from dify_graph.file.models import File
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity
+from dify_graph.model_runtime.memory import PromptMessageMemory
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from dify_graph.runtime import VariablePool
from dify_graph.variables.segments import ArrayAnySegment, ArrayFileSegment, FileSegment, NoneSegment
diff --git a/api/dify_graph/nodes/llm/node.py b/api/dify_graph/nodes/llm/node.py
index 0e243bfd3b..65b92b3bcc 100644
--- a/api/dify_graph/nodes/llm/node.py
+++ b/api/dify_graph/nodes/llm/node.py
@@ -15,30 +15,6 @@ from core.helper.code_executor import CodeExecutor, CodeLanguage
from core.llm_generator.output_parser.errors import OutputParserError
from core.llm_generator.output_parser.structured_output import invoke_llm_with_structured_output
from core.model_manager import ModelInstance
-from core.model_runtime.entities import (
- ImagePromptMessageContent,
- PromptMessage,
- PromptMessageContentType,
- TextPromptMessageContent,
-)
-from core.model_runtime.entities.llm_entities import (
- LLMResult,
- LLMResultChunk,
- LLMResultChunkWithStructuredOutput,
- LLMResultWithStructuredOutput,
- LLMStructuredOutput,
- LLMUsage,
-)
-from core.model_runtime.entities.message_entities import (
- AssistantPromptMessage,
- PromptMessageContentUnionTypes,
- PromptMessageRole,
- SystemPromptMessage,
- UserPromptMessage,
-)
-from core.model_runtime.entities.model_entities import ModelFeature, ModelPropertyKey
-from core.model_runtime.memory import PromptMessageMemory
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.prompt.entities.advanced_prompt_entities import CompletionModelPromptTemplate, MemoryConfig
from core.prompt.utils.prompt_message_util import PromptMessageUtil
from core.rag.entities.citation_metadata import RetrievalSourceMetadata
@@ -52,6 +28,30 @@ from dify_graph.enums import (
WorkflowNodeExecutionStatus,
)
from dify_graph.file import File, FileTransferMethod, FileType, file_manager
+from dify_graph.model_runtime.entities import (
+ ImagePromptMessageContent,
+ PromptMessage,
+ PromptMessageContentType,
+ TextPromptMessageContent,
+)
+from dify_graph.model_runtime.entities.llm_entities import (
+ LLMResult,
+ LLMResultChunk,
+ LLMResultChunkWithStructuredOutput,
+ LLMResultWithStructuredOutput,
+ LLMStructuredOutput,
+ LLMUsage,
+)
+from dify_graph.model_runtime.entities.message_entities import (
+ AssistantPromptMessage,
+ PromptMessageContentUnionTypes,
+ PromptMessageRole,
+ SystemPromptMessage,
+ UserPromptMessage,
+)
+from dify_graph.model_runtime.entities.model_entities import ModelFeature, ModelPropertyKey
+from dify_graph.model_runtime.memory import PromptMessageMemory
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.node_events import (
ModelInvokeCompletedEvent,
NodeEventBase,
diff --git a/api/dify_graph/nodes/loop/loop_node.py b/api/dify_graph/nodes/loop/loop_node.py
index 9bd79b7947..6ae3b5220d 100644
--- a/api/dify_graph/nodes/loop/loop_node.py
+++ b/api/dify_graph/nodes/loop/loop_node.py
@@ -5,7 +5,6 @@ from collections.abc import Callable, Generator, Mapping, Sequence
from datetime import datetime
from typing import TYPE_CHECKING, Any, Literal, cast
-from core.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.enums import (
NodeExecutionType,
NodeType,
@@ -17,6 +16,7 @@ from dify_graph.graph_events import (
GraphRunFailedEvent,
NodeRunSucceededEvent,
)
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.node_events import (
LoopFailedEvent,
LoopNextEvent,
diff --git a/api/dify_graph/nodes/parameter_extractor/parameter_extractor_node.py b/api/dify_graph/nodes/parameter_extractor/parameter_extractor_node.py
index 626f38fc9b..a9b21d83b1 100644
--- a/api/dify_graph/nodes/parameter_extractor/parameter_extractor_node.py
+++ b/api/dify_graph/nodes/parameter_extractor/parameter_extractor_node.py
@@ -6,20 +6,6 @@ from collections.abc import Mapping, Sequence
from typing import TYPE_CHECKING, Any, cast
from core.model_manager import ModelInstance
-from core.model_runtime.entities import ImagePromptMessageContent
-from core.model_runtime.entities.llm_entities import LLMUsage
-from core.model_runtime.entities.message_entities import (
- AssistantPromptMessage,
- PromptMessage,
- PromptMessageRole,
- PromptMessageTool,
- ToolPromptMessage,
- UserPromptMessage,
-)
-from core.model_runtime.entities.model_entities import ModelFeature, ModelPropertyKey
-from core.model_runtime.memory import PromptMessageMemory
-from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.prompt.advanced_prompt_transform import AdvancedPromptTransform
from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate
from core.prompt.simple_prompt_transform import ModelMode
@@ -30,6 +16,20 @@ from dify_graph.enums import (
WorkflowNodeExecutionStatus,
)
from dify_graph.file import File
+from dify_graph.model_runtime.entities import ImagePromptMessageContent
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
+from dify_graph.model_runtime.entities.message_entities import (
+ AssistantPromptMessage,
+ PromptMessage,
+ PromptMessageRole,
+ PromptMessageTool,
+ ToolPromptMessage,
+ UserPromptMessage,
+)
+from dify_graph.model_runtime.entities.model_entities import ModelFeature, ModelPropertyKey
+from dify_graph.model_runtime.memory import PromptMessageMemory
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.node_events import NodeRunResult
from dify_graph.nodes.base import variable_template_parser
from dify_graph.nodes.base.node import Node
diff --git a/api/dify_graph/nodes/question_classifier/question_classifier_node.py b/api/dify_graph/nodes/question_classifier/question_classifier_node.py
index 59b0a97496..03ddf9ab5f 100644
--- a/api/dify_graph/nodes/question_classifier/question_classifier_node.py
+++ b/api/dify_graph/nodes/question_classifier/question_classifier_node.py
@@ -4,9 +4,6 @@ from collections.abc import Mapping, Sequence
from typing import TYPE_CHECKING, Any
from core.model_manager import ModelInstance
-from core.model_runtime.entities import LLMUsage, ModelPropertyKey, PromptMessageRole
-from core.model_runtime.memory import PromptMessageMemory
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.prompt.simple_prompt_transform import ModelMode
from core.prompt.utils.prompt_message_util import PromptMessageUtil
from dify_graph.entities import GraphInitParams
@@ -16,6 +13,9 @@ from dify_graph.enums import (
WorkflowNodeExecutionMetadataKey,
WorkflowNodeExecutionStatus,
)
+from dify_graph.model_runtime.entities import LLMUsage, ModelPropertyKey, PromptMessageRole
+from dify_graph.model_runtime.memory import PromptMessageMemory
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.node_events import ModelInvokeCompletedEvent, NodeRunResult
from dify_graph.nodes.base.entities import VariableSelector
from dify_graph.nodes.base.node import Node
diff --git a/api/dify_graph/nodes/tool/tool_node.py b/api/dify_graph/nodes/tool/tool_node.py
index 3c072978e9..eee065c311 100644
--- a/api/dify_graph/nodes/tool/tool_node.py
+++ b/api/dify_graph/nodes/tool/tool_node.py
@@ -5,7 +5,6 @@ from sqlalchemy import select
from sqlalchemy.orm import Session
from core.callback_handler.workflow_tool_callback_handler import DifyWorkflowCallbackHandler
-from core.model_runtime.entities.llm_entities import LLMUsage
from core.tools.__base.tool import Tool
from core.tools.entities.tool_entities import ToolInvokeMessage, ToolParameter
from core.tools.errors import ToolInvokeError
@@ -18,6 +17,7 @@ from dify_graph.enums import (
WorkflowNodeExecutionStatus,
)
from dify_graph.file import File, FileTransferMethod
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.node_events import NodeEventBase, NodeRunResult, StreamChunkEvent, StreamCompletedEvent
from dify_graph.nodes.base.node import Node
from dify_graph.nodes.base.variable_template_parser import VariableTemplateParser
diff --git a/api/dify_graph/repositories/rag_retrieval_protocol.py b/api/dify_graph/repositories/rag_retrieval_protocol.py
index 023400cf32..5f3d38167e 100644
--- a/api/dify_graph/repositories/rag_retrieval_protocol.py
+++ b/api/dify_graph/repositories/rag_retrieval_protocol.py
@@ -2,7 +2,7 @@ from typing import Any, Literal, Protocol
from pydantic import BaseModel, Field
-from core.model_runtime.entities import LLMUsage
+from dify_graph.model_runtime.entities import LLMUsage
from dify_graph.nodes.knowledge_retrieval.entities import MetadataFilteringCondition
from dify_graph.nodes.llm.entities import ModelConfig
diff --git a/api/dify_graph/runtime/graph_runtime_state.py b/api/dify_graph/runtime/graph_runtime_state.py
index 541830c58b..6b88dd683c 100644
--- a/api/dify_graph/runtime/graph_runtime_state.py
+++ b/api/dify_graph/runtime/graph_runtime_state.py
@@ -10,8 +10,8 @@ from typing import TYPE_CHECKING, Any, ClassVar, Protocol
from pydantic import BaseModel, Field
from pydantic.json import pydantic_encoder
-from core.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.enums import NodeExecutionType, NodeState, NodeType
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.runtime.variable_pool import VariablePool
if TYPE_CHECKING:
diff --git a/api/dify_graph/runtime/graph_runtime_state_protocol.py b/api/dify_graph/runtime/graph_runtime_state_protocol.py
index 4590a4205c..7e55ece3f1 100644
--- a/api/dify_graph/runtime/graph_runtime_state_protocol.py
+++ b/api/dify_graph/runtime/graph_runtime_state_protocol.py
@@ -1,7 +1,7 @@
from collections.abc import Mapping, Sequence
from typing import Any, Protocol
-from core.model_runtime.entities.llm_entities import LLMUsage
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.system_variable import SystemVariableReadOnlyView
from dify_graph.variables.segments import Segment
diff --git a/api/dify_graph/runtime/read_only_wrappers.py b/api/dify_graph/runtime/read_only_wrappers.py
index 8e4a3ed832..ca06d88c3d 100644
--- a/api/dify_graph/runtime/read_only_wrappers.py
+++ b/api/dify_graph/runtime/read_only_wrappers.py
@@ -4,7 +4,7 @@ from collections.abc import Mapping, Sequence
from copy import deepcopy
from typing import Any
-from core.model_runtime.entities.llm_entities import LLMUsage
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.system_variable import SystemVariableReadOnlyView
from dify_graph.variables.segments import Segment
diff --git a/api/extensions/ext_sentry.py b/api/extensions/ext_sentry.py
index c3aa8edf80..9a34acb0c1 100644
--- a/api/extensions/ext_sentry.py
+++ b/api/extensions/ext_sentry.py
@@ -10,7 +10,7 @@ def init_app(app: DifyApp):
from sentry_sdk.integrations.flask import FlaskIntegration
from werkzeug.exceptions import HTTPException
- from core.model_runtime.errors.invoke import InvokeRateLimitError
+ from dify_graph.model_runtime.errors.invoke import InvokeRateLimitError
def before_send(event, hint):
if "exc_info" in hint:
diff --git a/api/extensions/logstore/repositories/logstore_workflow_node_execution_repository.py b/api/extensions/logstore/repositories/logstore_workflow_node_execution_repository.py
index b660a6c54a..bd1c08d96e 100644
--- a/api/extensions/logstore/repositories/logstore_workflow_node_execution_repository.py
+++ b/api/extensions/logstore/repositories/logstore_workflow_node_execution_repository.py
@@ -16,11 +16,11 @@ from typing import Any, Union
from sqlalchemy.engine import Engine
from sqlalchemy.orm import sessionmaker
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.repositories import SQLAlchemyWorkflowNodeExecutionRepository
from dify_graph.entities import WorkflowNodeExecution
from dify_graph.entities.workflow_node_execution import WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
from dify_graph.enums import NodeType
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.repositories.workflow_node_execution_repository import OrderConfig, WorkflowNodeExecutionRepository
from dify_graph.workflow_type_encoder import WorkflowRuntimeTypeConverter
from extensions.logstore.aliyun_logstore import AliyunLogStore
diff --git a/api/libs/helper.py b/api/libs/helper.py
index 39f1931299..6151eb0940 100644
--- a/api/libs/helper.py
+++ b/api/libs/helper.py
@@ -21,8 +21,8 @@ from pydantic.functional_validators import AfterValidator
from configs import dify_config
from core.app.features.rate_limiting.rate_limit import RateLimitGenerator
-from core.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.file import helpers as file_helpers
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from extensions.ext_redis import redis_client
if TYPE_CHECKING:
diff --git a/api/services/app_dsl_service.py b/api/services/app_dsl_service.py
index ad5a91e74b..5790c8b9ec 100644
--- a/api/services/app_dsl_service.py
+++ b/api/services/app_dsl_service.py
@@ -18,9 +18,9 @@ from sqlalchemy.orm import Session
from configs import dify_config
from core.helper import ssrf_proxy
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.plugin.entities.plugin import PluginDependency
from dify_graph.enums import NodeType
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.nodes.knowledge_retrieval.entities import KnowledgeRetrievalNodeData
from dify_graph.nodes.llm.entities import LLMNodeData
from dify_graph.nodes.parameter_extractor.entities import ParameterExtractorNodeData
diff --git a/api/services/app_service.py b/api/services/app_service.py
index e57253f8b6..ce6826ef5c 100644
--- a/api/services/app_service.py
+++ b/api/services/app_service.py
@@ -10,10 +10,10 @@ from constants.model_template import default_app_templates
from core.agent.entities import AgentToolEntity
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
-from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from core.tools.tool_manager import ToolManager
from core.tools.utils.configuration import ToolParameterConfigurationManager
+from dify_graph.model_runtime.entities.model_entities import ModelPropertyKey, ModelType
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from events.app_event import app_was_created
from extensions.ext_database import db
from libs.datetime_utils import naive_utc_now
diff --git a/api/services/audio_service.py b/api/services/audio_service.py
index a95361cebd..1b698fad17 100644
--- a/api/services/audio_service.py
+++ b/api/services/audio_service.py
@@ -8,7 +8,7 @@ from werkzeug.datastructures import FileStorage
from constants import AUDIO_EXTENSIONS
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 models.enums import MessageStatus
from models.model import App, AppMode, Message
diff --git a/api/services/clear_free_plan_tenant_expired_logs.py b/api/services/clear_free_plan_tenant_expired_logs.py
index aefc34fcae..0e0eab00ad 100644
--- a/api/services/clear_free_plan_tenant_expired_logs.py
+++ b/api/services/clear_free_plan_tenant_expired_logs.py
@@ -10,7 +10,7 @@ from sqlalchemy import select
from sqlalchemy.orm import Session, sessionmaker
from configs import dify_config
-from core.model_runtime.utils.encoders import jsonable_encoder
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from enums.cloud_plan import CloudPlan
from extensions.ext_database import db
from extensions.ext_storage import storage
diff --git a/api/services/dataset_service.py b/api/services/dataset_service.py
index 66a49226ba..3a7d483a9d 100644
--- a/api/services/dataset_service.py
+++ b/api/services/dataset_service.py
@@ -20,12 +20,12 @@ from core.db.session_factory import session_factory
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
from core.helper.name_generator import generate_incremental_name
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelFeature, ModelType
-from core.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel
from core.rag.index_processor.constant.built_in_field import BuiltInField
from core.rag.index_processor.constant.index_type import IndexStructureType
from core.rag.retrieval.retrieval_methods import RetrievalMethod
from dify_graph.file import helpers as file_helpers
+from dify_graph.model_runtime.entities.model_entities import ModelFeature, ModelType
+from dify_graph.model_runtime.model_providers.__base.text_embedding_model import TextEmbeddingModel
from enums.cloud_plan import CloudPlan
from events.dataset_event import dataset_was_deleted
from events.document_event import document_was_deleted
diff --git a/api/services/datasource_provider_service.py b/api/services/datasource_provider_service.py
index eeb14072bd..95a50f0512 100644
--- a/api/services/datasource_provider_service.py
+++ b/api/services/datasource_provider_service.py
@@ -10,11 +10,11 @@ from constants import HIDDEN_VALUE, UNKNOWN_VALUE
from core.helper import encrypter
from core.helper.name_generator import generate_incremental_name
from core.helper.provider_cache import NoOpProviderCredentialCache
-from core.model_runtime.entities.provider_entities import FormType
from core.plugin.entities.plugin_daemon import CredentialType
from core.plugin.impl.datasource import PluginDatasourceManager
from core.plugin.impl.oauth import OAuthHandler
from core.tools.utils.encryption import ProviderConfigCache, ProviderConfigEncrypter, create_provider_encrypter
+from dify_graph.model_runtime.entities.provider_entities import FormType
from extensions.ext_database import db
from extensions.ext_redis import redis_client
from models.oauth import DatasourceOauthParamConfig, DatasourceOauthTenantParamConfig, DatasourceProvider
diff --git a/api/services/entities/model_provider_entities.py b/api/services/entities/model_provider_entities.py
index a29d848ac5..9dd595f516 100644
--- a/api/services/entities/model_provider_entities.py
+++ b/api/services/entities/model_provider_entities.py
@@ -15,9 +15,9 @@ from core.entities.provider_entities import (
QuotaConfiguration,
UnaddedModelConfiguration,
)
-from core.model_runtime.entities.common_entities import I18nObject
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.entities.provider_entities import (
+from dify_graph.model_runtime.entities.common_entities import I18nObject
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.provider_entities import (
ConfigurateMethod,
ModelCredentialSchema,
ProviderCredentialSchema,
diff --git a/api/services/hit_testing_service.py b/api/services/hit_testing_service.py
index 8cbf3a25c3..c00c76a826 100644
--- a/api/services/hit_testing_service.py
+++ b/api/services/hit_testing_service.py
@@ -4,12 +4,12 @@ import time
from typing import Any
from core.app.app_config.entities import ModelConfig
-from core.model_runtime.entities import LLMMode
from core.rag.datasource.retrieval_service import RetrievalService
from core.rag.index_processor.constant.query_type import QueryType
from core.rag.models.document import Document
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
from core.rag.retrieval.retrieval_methods import RetrievalMethod
+from dify_graph.model_runtime.entities import LLMMode
from extensions.ext_database import db
from models import Account
from models.dataset import Dataset, DatasetQuery
diff --git a/api/services/message_service.py b/api/services/message_service.py
index ce699e79d4..789b6c2f8c 100644
--- a/api/services/message_service.py
+++ b/api/services/message_service.py
@@ -9,10 +9,10 @@ from core.app.entities.app_invoke_entities import InvokeFrom
from core.llm_generator.llm_generator import LLMGenerator
from core.memory.token_buffer_memory import TokenBufferMemory
from core.model_manager import ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.ops.entities.trace_entity import TraceTaskName
from core.ops.ops_trace_manager import TraceQueueManager, TraceTask
from core.ops.utils import measure_time
+from dify_graph.model_runtime.entities.model_entities import ModelType
from extensions.ext_database import db
from libs.infinite_scroll_pagination import InfiniteScrollPagination
from models import Account
diff --git a/api/services/model_load_balancing_service.py b/api/services/model_load_balancing_service.py
index 69da3bfb79..2133dc5b3a 100644
--- a/api/services/model_load_balancing_service.py
+++ b/api/services/model_load_balancing_service.py
@@ -10,13 +10,13 @@ from core.entities.provider_configuration import ProviderConfiguration
from core.helper import encrypter
from core.helper.model_provider_cache import ProviderCredentialsCache, ProviderCredentialsCacheType
from core.model_manager import LBModelManager
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.entities.provider_entities import (
+from core.provider_manager import ProviderManager
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.provider_entities import (
ModelCredentialSchema,
ProviderCredentialSchema,
)
-from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
-from core.provider_manager import ProviderManager
+from dify_graph.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
from extensions.ext_database import db
from libs.datetime_utils import naive_utc_now
from models.provider import LoadBalancingModelConfig, ProviderCredential, ProviderModelCredential
diff --git a/api/services/model_provider_service.py b/api/services/model_provider_service.py
index edd1004b82..0ddd6b9b1a 100644
--- a/api/services/model_provider_service.py
+++ b/api/services/model_provider_service.py
@@ -1,9 +1,9 @@
import logging
from core.entities.model_entities import ModelWithProviderEntity, ProviderModelWithStatusEntity
-from core.model_runtime.entities.model_entities import ModelType, ParameterRule
-from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
from core.provider_manager import ProviderManager
+from dify_graph.model_runtime.entities.model_entities import ModelType, ParameterRule
+from dify_graph.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
from models.provider import ProviderType
from services.entities.model_provider_entities import (
CustomConfigurationResponse,
diff --git a/api/services/rag_pipeline/rag_pipeline_dsl_service.py b/api/services/rag_pipeline/rag_pipeline_dsl_service.py
index 0a257a587d..58bb4b7c90 100644
--- a/api/services/rag_pipeline/rag_pipeline_dsl_service.py
+++ b/api/services/rag_pipeline/rag_pipeline_dsl_service.py
@@ -21,9 +21,9 @@ from sqlalchemy.orm import Session
from core.helper import ssrf_proxy
from core.helper.name_generator import generate_incremental_name
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.plugin.entities.plugin import PluginDependency
from dify_graph.enums import NodeType
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.nodes.datasource.entities import DatasourceNodeData
from dify_graph.nodes.knowledge_retrieval.entities import KnowledgeRetrievalNodeData
from dify_graph.nodes.llm.entities import LLMNodeData
diff --git a/api/services/summary_index_service.py b/api/services/summary_index_service.py
index 7c03ceed5b..eb78be8f88 100644
--- a/api/services/summary_index_service.py
+++ b/api/services/summary_index_service.py
@@ -10,11 +10,11 @@ from sqlalchemy.orm import Session
from core.db.session_factory import session_factory
from core.model_manager import ModelManager
-from core.model_runtime.entities.llm_entities import LLMUsage
-from core.model_runtime.entities.model_entities import ModelType
from core.rag.datasource.vdb.vector_factory import Vector
from core.rag.index_processor.constant.doc_type import DocType
from core.rag.models.document import Document
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
+from dify_graph.model_runtime.entities.model_entities import ModelType
from libs import helper
from models.dataset import Dataset, DocumentSegment, DocumentSegmentSummary
from models.dataset import Document as DatasetDocument
diff --git a/api/services/tools/api_tools_manage_service.py b/api/services/tools/api_tools_manage_service.py
index c32157919b..dc883f0daa 100644
--- a/api/services/tools/api_tools_manage_service.py
+++ b/api/services/tools/api_tools_manage_service.py
@@ -7,7 +7,6 @@ from httpx import get
from sqlalchemy import select
from core.entities.provider_entities import ProviderConfig
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.tools.__base.tool_runtime import ToolRuntime
from core.tools.custom_tool.provider import ApiToolProviderController
from core.tools.entities.api_entities import ToolApiEntity, ToolProviderApiEntity
@@ -21,6 +20,7 @@ from core.tools.tool_label_manager import ToolLabelManager
from core.tools.tool_manager import ToolManager
from core.tools.utils.encryption import create_tool_provider_encrypter
from core.tools.utils.parser import ApiBasedToolSchemaParser
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from extensions.ext_database import db
from models.tools import ApiToolProvider
from services.tools.tools_transform_service import ToolTransformService
diff --git a/api/services/tools/workflow_tools_manage_service.py b/api/services/tools/workflow_tools_manage_service.py
index ff0b276f77..101b2fe5a2 100644
--- a/api/services/tools/workflow_tools_manage_service.py
+++ b/api/services/tools/workflow_tools_manage_service.py
@@ -5,7 +5,6 @@ from datetime import datetime
from sqlalchemy import or_, select
from sqlalchemy.orm import Session
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.tools.__base.tool_provider import ToolProviderController
from core.tools.entities.api_entities import ToolApiEntity, ToolProviderApiEntity
from core.tools.entities.tool_entities import WorkflowToolParameterConfiguration
@@ -13,6 +12,7 @@ from core.tools.tool_label_manager import ToolLabelManager
from core.tools.utils.workflow_configuration_sync import WorkflowToolConfigurationUtils
from core.tools.workflow_as_tool.provider import WorkflowToolProviderController
from core.tools.workflow_as_tool.tool import WorkflowTool
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from extensions.ext_database import db
from models.model import App
from models.tools import WorkflowToolProvider
diff --git a/api/services/vector_service.py b/api/services/vector_service.py
index f1fa33cb75..73bb46b797 100644
--- a/api/services/vector_service.py
+++ b/api/services/vector_service.py
@@ -1,7 +1,6 @@
import logging
from core.model_manager import ModelInstance, ModelManager
-from core.model_runtime.entities.model_entities import ModelType
from core.rag.datasource.keyword.keyword_factory import Keyword
from core.rag.datasource.vdb.vector_factory import Vector
from core.rag.index_processor.constant.doc_type import DocType
@@ -9,6 +8,7 @@ from core.rag.index_processor.constant.index_type import IndexStructureType
from core.rag.index_processor.index_processor_base import BaseIndexProcessor
from core.rag.index_processor.index_processor_factory import IndexProcessorFactory
from core.rag.models.document import AttachmentDocument, Document
+from dify_graph.model_runtime.entities.model_entities import ModelType
from extensions.ext_database import db
from models import UploadFile
from models.dataset import ChildChunk, Dataset, DatasetProcessRule, DocumentSegment, SegmentAttachmentBinding
diff --git a/api/services/workflow/workflow_converter.py b/api/services/workflow/workflow_converter.py
index 8b4b3318e1..0153046acc 100644
--- a/api/services/workflow/workflow_converter.py
+++ b/api/services/workflow/workflow_converter.py
@@ -13,11 +13,11 @@ from core.app.apps.agent_chat.app_config_manager import AgentChatAppConfigManage
from core.app.apps.chat.app_config_manager import ChatAppConfigManager
from core.app.apps.completion.app_config_manager import CompletionAppConfigManager
from core.helper import encrypter
-from core.model_runtime.entities.llm_entities import LLMMode
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.prompt.simple_prompt_transform import SimplePromptTransform
from core.prompt.utils.prompt_template_parser import PromptTemplateParser
from dify_graph.file.models import FileUploadConfig
+from dify_graph.model_runtime.entities.llm_entities import LLMMode
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.nodes import NodeType
from dify_graph.variables.input_entities import VariableEntity
from events.app_event import app_was_created
diff --git a/api/services/workflow_service.py b/api/services/workflow_service.py
index 2bf291da54..a7f0b036c6 100644
--- a/api/services/workflow_service.py
+++ b/api/services/workflow_service.py
@@ -438,8 +438,8 @@ class WorkflowService:
"""
try:
from core.model_manager import ModelManager
- from core.model_runtime.entities.model_entities import ModelType
from core.provider_manager import ProviderManager
+ from dify_graph.model_runtime.entities.model_entities import ModelType
# Get model instance to validate provider+model combination
model_manager = ModelManager()
@@ -558,8 +558,8 @@ class WorkflowService:
:return: True if load balancing is enabled, False otherwise
"""
try:
- from core.model_runtime.entities.model_entities import ModelType
from core.provider_manager import ProviderManager
+ from dify_graph.model_runtime.entities.model_entities import ModelType
# Get provider configurations
provider_manager = ProviderManager()
diff --git a/api/tasks/batch_create_segment_to_index_task.py b/api/tasks/batch_create_segment_to_index_task.py
index f69f17b16d..49dee00919 100644
--- a/api/tasks/batch_create_segment_to_index_task.py
+++ b/api/tasks/batch_create_segment_to_index_task.py
@@ -11,7 +11,7 @@ from sqlalchemy import func
from core.db.session_factory import session_factory
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_redis import redis_client
from extensions.ext_storage import storage
from libs import helper
diff --git a/api/tests/integration_tests/model_runtime/__mock/plugin_model.py b/api/tests/integration_tests/model_runtime/__mock/plugin_model.py
index 5012defdad..4e184c93fd 100644
--- a/api/tests/integration_tests/model_runtime/__mock/plugin_model.py
+++ b/api/tests/integration_tests/model_runtime/__mock/plugin_model.py
@@ -4,20 +4,27 @@ from collections.abc import Generator, Sequence
from decimal import Decimal
from json import dumps
+from core.plugin.entities.plugin_daemon import PluginModelProviderEntity
+from core.plugin.impl.model import PluginModelClient
+
# import monkeypatch
-from core.model_runtime.entities.common_entities import I18nObject
-from core.model_runtime.entities.llm_entities import LLMMode, LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
-from core.model_runtime.entities.message_entities import AssistantPromptMessage, PromptMessage, PromptMessageTool
-from core.model_runtime.entities.model_entities import (
+from dify_graph.model_runtime.entities.common_entities import I18nObject
+from dify_graph.model_runtime.entities.llm_entities import (
+ LLMMode,
+ LLMResult,
+ LLMResultChunk,
+ LLMResultChunkDelta,
+ LLMUsage,
+)
+from dify_graph.model_runtime.entities.message_entities import AssistantPromptMessage, PromptMessage, PromptMessageTool
+from dify_graph.model_runtime.entities.model_entities import (
AIModelEntity,
FetchFrom,
ModelFeature,
ModelPropertyKey,
ModelType,
)
-from core.model_runtime.entities.provider_entities import ConfigurateMethod, ProviderEntity
-from core.plugin.entities.plugin_daemon import PluginModelProviderEntity
-from core.plugin.impl.model import PluginModelClient
+from dify_graph.model_runtime.entities.provider_entities import ConfigurateMethod, ProviderEntity
class MockModelClass(PluginModelClient):
diff --git a/api/tests/integration_tests/workflow/nodes/__mock/model.py b/api/tests/integration_tests/workflow/nodes/__mock/model.py
index cdecdf41d2..5b0f86fed1 100644
--- a/api/tests/integration_tests/workflow/nodes/__mock/model.py
+++ b/api/tests/integration_tests/workflow/nodes/__mock/model.py
@@ -4,8 +4,8 @@ from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEnti
from core.entities.provider_configuration import ProviderConfiguration, ProviderModelBundle
from core.entities.provider_entities import CustomConfiguration, CustomProviderConfiguration, SystemConfiguration
from core.model_manager import ModelInstance
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
from models.provider import ProviderType
diff --git a/api/tests/integration_tests/workflow/nodes/test_llm.py b/api/tests/integration_tests/workflow/nodes/test_llm.py
index 07783792d1..fda31d516b 100644
--- a/api/tests/integration_tests/workflow/nodes/test_llm.py
+++ b/api/tests/integration_tests/workflow/nodes/test_llm.py
@@ -113,8 +113,8 @@ def test_execute_llm():
from decimal import Decimal
from unittest.mock import MagicMock
- from core.model_runtime.entities.llm_entities import LLMResult, LLMUsage
- from core.model_runtime.entities.message_entities import AssistantPromptMessage
+ from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMUsage
+ from dify_graph.model_runtime.entities.message_entities import AssistantPromptMessage
# Create mock model instance
mock_model_instance = MagicMock(spec=ModelInstance)
@@ -158,7 +158,7 @@ def test_execute_llm():
# Mock fetch_prompt_messages to avoid database calls
def mock_fetch_prompt_messages_1(**_kwargs):
- from core.model_runtime.entities.message_entities import SystemPromptMessage, UserPromptMessage
+ from dify_graph.model_runtime.entities.message_entities import SystemPromptMessage, UserPromptMessage
return [
SystemPromptMessage(content="you are a helpful assistant. today's weather is sunny."),
@@ -229,8 +229,8 @@ def test_execute_llm_with_jinja2():
from decimal import Decimal
from unittest.mock import MagicMock
- from core.model_runtime.entities.llm_entities import LLMResult, LLMUsage
- from core.model_runtime.entities.message_entities import AssistantPromptMessage
+ from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMUsage
+ from dify_graph.model_runtime.entities.message_entities import AssistantPromptMessage
# Create mock model instance
mock_model_instance = MagicMock(spec=ModelInstance)
@@ -274,7 +274,7 @@ def test_execute_llm_with_jinja2():
# Mock fetch_prompt_messages to avoid database calls
def mock_fetch_prompt_messages_2(**_kwargs):
- from core.model_runtime.entities.message_entities import SystemPromptMessage, UserPromptMessage
+ from dify_graph.model_runtime.entities.message_entities import SystemPromptMessage, UserPromptMessage
return [
SystemPromptMessage(content="you are a helpful assistant. today's weather is sunny."),
diff --git a/api/tests/integration_tests/workflow/nodes/test_parameter_extractor.py b/api/tests/integration_tests/workflow/nodes/test_parameter_extractor.py
index 7a3f5bc58e..09e560578e 100644
--- a/api/tests/integration_tests/workflow/nodes/test_parameter_extractor.py
+++ b/api/tests/integration_tests/workflow/nodes/test_parameter_extractor.py
@@ -5,9 +5,9 @@ from unittest.mock import MagicMock
from core.app.entities.app_invoke_entities import InvokeFrom
from core.model_manager import ModelInstance
-from core.model_runtime.entities import AssistantPromptMessage, UserPromptMessage
from dify_graph.entities import GraphInitParams
from dify_graph.enums import WorkflowNodeExecutionStatus
+from dify_graph.model_runtime.entities import AssistantPromptMessage, UserPromptMessage
from dify_graph.nodes.llm.protocols import CredentialsProvider, ModelFactory
from dify_graph.nodes.parameter_extractor.parameter_extractor_node import ParameterExtractorNode
from dify_graph.runtime import GraphRuntimeState, VariablePool
diff --git a/api/tests/test_containers_integration_tests/core/app/layers/test_pause_state_persist_layer.py b/api/tests/test_containers_integration_tests/core/app/layers/test_pause_state_persist_layer.py
index 5d6fcf4775..96fb7ea293 100644
--- a/api/tests/test_containers_integration_tests/core/app/layers/test_pause_state_persist_layer.py
+++ b/api/tests/test_containers_integration_tests/core/app/layers/test_pause_state_persist_layer.py
@@ -31,12 +31,12 @@ from core.app.layers.pause_state_persist_layer import (
PauseStatePersistenceLayer,
WorkflowResumptionContext,
)
-from core.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.entities.pause_reason import SchedulingPause
from dify_graph.enums import WorkflowExecutionStatus
from dify_graph.graph_engine.entities.commands import GraphEngineCommand
from dify_graph.graph_engine.layers.base import GraphEngineLayerNotInitializedError
from dify_graph.graph_events.graph import GraphRunPausedEvent
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.runtime.graph_runtime_state import GraphRuntimeState
from dify_graph.runtime.graph_runtime_state_protocol import ReadOnlyGraphRuntimeState
from dify_graph.runtime.read_only_wrappers import ReadOnlyGraphRuntimeStateWrapper
diff --git a/api/tests/test_containers_integration_tests/services/test_dataset_service.py b/api/tests/test_containers_integration_tests/services/test_dataset_service.py
index f05c47913e..0ca649b36d 100644
--- a/api/tests/test_containers_integration_tests/services/test_dataset_service.py
+++ b/api/tests/test_containers_integration_tests/services/test_dataset_service.py
@@ -10,8 +10,8 @@ from uuid import uuid4
import pytest
-from core.model_runtime.entities.model_entities import ModelType
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 models.account import Account, Tenant, TenantAccountJoin, TenantAccountRole
from models.dataset import Dataset, DatasetPermissionEnum, Document, ExternalKnowledgeBindings
diff --git a/api/tests/test_containers_integration_tests/services/test_dataset_service_update_dataset.py b/api/tests/test_containers_integration_tests/services/test_dataset_service_update_dataset.py
index f6d9dfddae..7f9135bb81 100644
--- a/api/tests/test_containers_integration_tests/services/test_dataset_service_update_dataset.py
+++ b/api/tests/test_containers_integration_tests/services/test_dataset_service_update_dataset.py
@@ -3,7 +3,7 @@ from uuid import uuid4
import pytest
-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 models.account import Account, Tenant, TenantAccountJoin, TenantAccountRole
from models.dataset import Dataset, ExternalKnowledgeBindings
diff --git a/api/tests/test_containers_integration_tests/services/test_model_provider_service.py b/api/tests/test_containers_integration_tests/services/test_model_provider_service.py
index f7044f7d45..7a4662055c 100644
--- a/api/tests/test_containers_integration_tests/services/test_model_provider_service.py
+++ b/api/tests/test_containers_integration_tests/services/test_model_provider_service.py
@@ -4,7 +4,7 @@ import pytest
from faker import Faker
from core.entities.model_entities import ModelStatus
-from core.model_runtime.entities.model_entities import FetchFrom, ModelType
+from dify_graph.model_runtime.entities.model_entities import FetchFrom, ModelType
from models import Account, Tenant, TenantAccountJoin, TenantAccountRole
from models.provider import Provider, ProviderModel, ProviderModelSetting, ProviderType
from services.model_provider_service import ModelProviderService
@@ -407,8 +407,8 @@ class TestModelProviderService:
# Create mock models
from core.entities.model_entities import ModelWithProviderEntity, SimpleModelProviderEntity
- from core.model_runtime.entities.common_entities import I18nObject
- from core.model_runtime.entities.provider_entities import ProviderEntity
+ from dify_graph.model_runtime.entities.common_entities import I18nObject
+ from dify_graph.model_runtime.entities.provider_entities import ProviderEntity
# Create real model objects instead of mocks
provider_entity_1 = SimpleModelProviderEntity(
@@ -643,7 +643,7 @@ class TestModelProviderService:
# Create mock default model response
from core.entities.model_entities import DefaultModelEntity, DefaultModelProviderEntity
- from core.model_runtime.entities.common_entities import I18nObject
+ from dify_graph.model_runtime.entities.common_entities import I18nObject
mock_default_model = DefaultModelEntity(
model="gpt-3.5-turbo",
diff --git a/api/tests/test_containers_integration_tests/services/workflow/test_workflow_converter.py b/api/tests/test_containers_integration_tests/services/workflow/test_workflow_converter.py
index c2cf249d61..0c2ccaa051 100644
--- a/api/tests/test_containers_integration_tests/services/workflow/test_workflow_converter.py
+++ b/api/tests/test_containers_integration_tests/services/workflow/test_workflow_converter.py
@@ -11,8 +11,8 @@ from core.app.app_config.entities import (
ModelConfigEntity,
PromptTemplateEntity,
)
-from core.model_runtime.entities.llm_entities import LLMMode
from core.prompt.utils.prompt_template_parser import PromptTemplateParser
+from dify_graph.model_runtime.entities.llm_entities import LLMMode
from dify_graph.variables.input_entities import VariableEntity, VariableEntityType
from models import Account, Tenant
from models.api_based_extension import APIBasedExtension
diff --git a/api/tests/unit_tests/controllers/console/workspace/test_load_balancing_config.py b/api/tests/unit_tests/controllers/console/workspace/test_load_balancing_config.py
index 59b6614d5e..f2e57eb65f 100644
--- a/api/tests/unit_tests/controllers/console/workspace/test_load_balancing_config.py
+++ b/api/tests/unit_tests/controllers/console/workspace/test_load_balancing_config.py
@@ -13,8 +13,8 @@ from flask import Flask
from flask.views import MethodView
from werkzeug.exceptions import Forbidden
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.errors.validate import CredentialsValidateFailedError
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.errors.validate import CredentialsValidateFailedError
if not hasattr(builtins, "MethodView"):
builtins.MethodView = MethodView # type: ignore[attr-defined]
diff --git a/api/tests/unit_tests/controllers/service_api/app/test_audio.py b/api/tests/unit_tests/controllers/service_api/app/test_audio.py
index b70e70105c..1923ab7fa7 100644
--- a/api/tests/unit_tests/controllers/service_api/app/test_audio.py
+++ b/api/tests/unit_tests/controllers/service_api/app/test_audio.py
@@ -29,7 +29,7 @@ from controllers.service_api.app.error import (
UnsupportedAudioTypeError,
)
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.errors.app_model_config import AppModelConfigBrokenError
from services.errors.audio import (
diff --git a/api/tests/unit_tests/controllers/service_api/app/test_completion.py b/api/tests/unit_tests/controllers/service_api/app/test_completion.py
index c5b1cbc127..4e4482f704 100644
--- a/api/tests/unit_tests/controllers/service_api/app/test_completion.py
+++ b/api/tests/unit_tests/controllers/service_api/app/test_completion.py
@@ -34,7 +34,7 @@ from controllers.service_api.app.error import (
NotChatAppError,
)
from core.errors.error import QuotaExceededError
-from core.model_runtime.errors.invoke import InvokeError
+from dify_graph.model_runtime.errors.invoke import InvokeError
from models.model import App, AppMode, EndUser
from services.app_generate_service import AppGenerateService
from services.app_task_service import AppTaskService
diff --git a/api/tests/unit_tests/core/agent/output_parser/test_cot_output_parser.py b/api/tests/unit_tests/core/agent/output_parser/test_cot_output_parser.py
index 4a613e35b0..ba8c903f65 100644
--- a/api/tests/unit_tests/core/agent/output_parser/test_cot_output_parser.py
+++ b/api/tests/unit_tests/core/agent/output_parser/test_cot_output_parser.py
@@ -3,7 +3,7 @@ from collections.abc import Generator
from core.agent.entities import AgentScratchpadUnit
from core.agent.output_parser.cot_output_parser import CotAgentOutputParser
-from core.model_runtime.entities.llm_entities import AssistantPromptMessage, LLMResultChunk, LLMResultChunkDelta
+from dify_graph.model_runtime.entities.llm_entities import AssistantPromptMessage, LLMResultChunk, LLMResultChunkDelta
def mock_llm_response(text) -> Generator[LLMResultChunk, None, None]:
diff --git a/api/tests/unit_tests/core/app/app_config/features/file_upload/test_manager.py b/api/tests/unit_tests/core/app/app_config/features/file_upload/test_manager.py
index a20725c5b0..de99833aac 100644
--- a/api/tests/unit_tests/core/app/app_config/features/file_upload/test_manager.py
+++ b/api/tests/unit_tests/core/app/app_config/features/file_upload/test_manager.py
@@ -1,6 +1,6 @@
from core.app.app_config.features.file_upload.manager import FileUploadConfigManager
-from core.model_runtime.entities.message_entities import ImagePromptMessageContent
from dify_graph.file.models import FileTransferMethod, FileUploadConfig, ImageConfig
+from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent
def test_convert_with_vision():
diff --git a/api/tests/unit_tests/core/app/apps/chat/test_base_app_runner_multimodal.py b/api/tests/unit_tests/core/app/apps/chat/test_base_app_runner_multimodal.py
index e85e6e98d9..67b3777c40 100644
--- a/api/tests/unit_tests/core/app/apps/chat/test_base_app_runner_multimodal.py
+++ b/api/tests/unit_tests/core/app/apps/chat/test_base_app_runner_multimodal.py
@@ -9,8 +9,8 @@ from core.app.apps.base_app_queue_manager import PublishFrom
from core.app.apps.base_app_runner import AppRunner
from core.app.entities.app_invoke_entities import InvokeFrom
from core.app.entities.queue_entities import QueueMessageFileEvent
-from core.model_runtime.entities.message_entities import ImagePromptMessageContent
from dify_graph.file.enums import FileTransferMethod, FileType
+from dify_graph.model_runtime.entities.message_entities import ImagePromptMessageContent
from models.enums import CreatorUserRole
diff --git a/api/tests/unit_tests/core/app/task_pipeline/test_easy_ui_based_generate_task_pipeline.py b/api/tests/unit_tests/core/app/task_pipeline/test_easy_ui_based_generate_task_pipeline.py
index 40f58c9ddf..13fbca6e26 100644
--- a/api/tests/unit_tests/core/app/task_pipeline/test_easy_ui_based_generate_task_pipeline.py
+++ b/api/tests/unit_tests/core/app/task_pipeline/test_easy_ui_based_generate_task_pipeline.py
@@ -25,9 +25,9 @@ from core.app.entities.task_entities import (
)
from core.app.task_pipeline.easy_ui_based_generate_task_pipeline import EasyUIBasedGenerateTaskPipeline
from core.base.tts import AppGeneratorTTSPublisher
-from core.model_runtime.entities.llm_entities import LLMResult as RuntimeLLMResult
-from core.model_runtime.entities.message_entities import TextPromptMessageContent
from core.ops.ops_trace_manager import TraceQueueManager
+from dify_graph.model_runtime.entities.llm_entities import LLMResult as RuntimeLLMResult
+from dify_graph.model_runtime.entities.message_entities import TextPromptMessageContent
from models.model import AppMode
diff --git a/api/tests/unit_tests/core/model_runtime/__base/test_increase_tool_call.py b/api/tests/unit_tests/core/model_runtime/__base/test_increase_tool_call.py
index 5fbdabceed..d42b7ca0d9 100644
--- a/api/tests/unit_tests/core/model_runtime/__base/test_increase_tool_call.py
+++ b/api/tests/unit_tests/core/model_runtime/__base/test_increase_tool_call.py
@@ -2,8 +2,8 @@ from unittest.mock import MagicMock, patch
import pytest
-from core.model_runtime.entities.message_entities import AssistantPromptMessage
-from core.model_runtime.model_providers.__base.large_language_model import _increase_tool_call
+from dify_graph.model_runtime.entities.message_entities import AssistantPromptMessage
+from dify_graph.model_runtime.model_providers.__base.large_language_model import _increase_tool_call
ToolCall = AssistantPromptMessage.ToolCall
@@ -97,7 +97,9 @@ def test__increase_tool_call():
# case 4:
mock_id_generator = MagicMock()
mock_id_generator.side_effect = [_exp_case.id for _exp_case in EXPECTED_CASE_4]
- with patch("core.model_runtime.model_providers.__base.large_language_model._gen_tool_call_id", mock_id_generator):
+ with patch(
+ "dify_graph.model_runtime.model_providers.__base.large_language_model._gen_tool_call_id", mock_id_generator
+ ):
_run_case(INPUTS_CASE_4, EXPECTED_CASE_4)
@@ -107,6 +109,6 @@ def test__increase_tool_call__no_id_no_name_first_delta_should_raise():
ToolCall(id="", type="function", function=ToolCall.ToolCallFunction(name="func_foo", arguments='"value"}')),
]
actual: list[ToolCall] = []
- with patch("core.model_runtime.model_providers.__base.large_language_model._gen_tool_call_id", MagicMock()):
+ with patch("dify_graph.model_runtime.model_providers.__base.large_language_model._gen_tool_call_id", MagicMock()):
with pytest.raises(ValueError):
_increase_tool_call(inputs, actual)
diff --git a/api/tests/unit_tests/core/model_runtime/__base/test_large_language_model_non_stream_parsing.py b/api/tests/unit_tests/core/model_runtime/__base/test_large_language_model_non_stream_parsing.py
index 09d527cb12..8dcfd10ec6 100644
--- a/api/tests/unit_tests/core/model_runtime/__base/test_large_language_model_non_stream_parsing.py
+++ b/api/tests/unit_tests/core/model_runtime/__base/test_large_language_model_non_stream_parsing.py
@@ -1,10 +1,10 @@
-from core.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
-from core.model_runtime.entities.message_entities import (
+from dify_graph.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
+from dify_graph.model_runtime.entities.message_entities import (
AssistantPromptMessage,
TextPromptMessageContent,
UserPromptMessage,
)
-from core.model_runtime.model_providers.__base.large_language_model import _normalize_non_stream_plugin_result
+from dify_graph.model_runtime.model_providers.__base.large_language_model import _normalize_non_stream_plugin_result
def _make_chunk(
diff --git a/api/tests/unit_tests/core/model_runtime/entities/test_llm_entities.py b/api/tests/unit_tests/core/model_runtime/entities/test_llm_entities.py
index c10f7b89c3..4e435cb4c6 100644
--- a/api/tests/unit_tests/core/model_runtime/entities/test_llm_entities.py
+++ b/api/tests/unit_tests/core/model_runtime/entities/test_llm_entities.py
@@ -2,7 +2,7 @@
from decimal import Decimal
-from core.model_runtime.entities.llm_entities import LLMUsage, LLMUsageMetadata
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage, LLMUsageMetadata
class TestLLMUsage:
diff --git a/api/tests/unit_tests/core/plugin/test_plugin_runtime.py b/api/tests/unit_tests/core/plugin/test_plugin_runtime.py
index 9e871fcb74..4f038d4a5b 100644
--- a/api/tests/unit_tests/core/plugin/test_plugin_runtime.py
+++ b/api/tests/unit_tests/core/plugin/test_plugin_runtime.py
@@ -19,14 +19,6 @@ import httpx
import pytest
from pydantic import BaseModel
-from core.model_runtime.errors.invoke import (
- InvokeAuthorizationError,
- InvokeBadRequestError,
- InvokeConnectionError,
- InvokeRateLimitError,
- InvokeServerUnavailableError,
-)
-from core.model_runtime.errors.validate import CredentialsValidateFailedError
from core.plugin.entities.plugin_daemon import (
CredentialType,
PluginDaemonInnerError,
@@ -44,6 +36,14 @@ from core.plugin.impl.exc import (
)
from core.plugin.impl.plugin import PluginInstaller
from core.plugin.impl.tool import PluginToolManager
+from dify_graph.model_runtime.errors.invoke import (
+ InvokeAuthorizationError,
+ InvokeBadRequestError,
+ InvokeConnectionError,
+ InvokeRateLimitError,
+ InvokeServerUnavailableError,
+)
+from dify_graph.model_runtime.errors.validate import CredentialsValidateFailedError
class TestPluginRuntimeExecution:
diff --git a/api/tests/unit_tests/core/prompt/test_advanced_prompt_transform.py b/api/tests/unit_tests/core/prompt/test_advanced_prompt_transform.py
index 786264513c..3e184cbf21 100644
--- a/api/tests/unit_tests/core/prompt/test_advanced_prompt_transform.py
+++ b/api/tests/unit_tests/core/prompt/test_advanced_prompt_transform.py
@@ -5,16 +5,16 @@ import pytest
from configs import dify_config
from core.app.app_config.entities import ModelConfigEntity
from core.memory.token_buffer_memory import TokenBufferMemory
-from core.model_runtime.entities.message_entities import (
+from core.prompt.advanced_prompt_transform import AdvancedPromptTransform
+from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate, MemoryConfig
+from core.prompt.utils.prompt_template_parser import PromptTemplateParser
+from dify_graph.file import File, FileTransferMethod, FileType
+from dify_graph.model_runtime.entities.message_entities import (
AssistantPromptMessage,
ImagePromptMessageContent,
PromptMessageRole,
UserPromptMessage,
)
-from core.prompt.advanced_prompt_transform import AdvancedPromptTransform
-from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, CompletionModelPromptTemplate, MemoryConfig
-from core.prompt.utils.prompt_template_parser import PromptTemplateParser
-from dify_graph.file import File, FileTransferMethod, FileType
from models.model import Conversation
diff --git a/api/tests/unit_tests/core/prompt/test_agent_history_prompt_transform.py b/api/tests/unit_tests/core/prompt/test_agent_history_prompt_transform.py
index d157a41d2c..634703740c 100644
--- a/api/tests/unit_tests/core/prompt/test_agent_history_prompt_transform.py
+++ b/api/tests/unit_tests/core/prompt/test_agent_history_prompt_transform.py
@@ -5,14 +5,14 @@ from core.app.entities.app_invoke_entities import (
)
from core.entities.provider_configuration import ProviderModelBundle
from core.memory.token_buffer_memory import TokenBufferMemory
-from core.model_runtime.entities.message_entities import (
+from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransform
+from dify_graph.model_runtime.entities.message_entities import (
AssistantPromptMessage,
SystemPromptMessage,
ToolPromptMessage,
UserPromptMessage,
)
-from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
-from core.prompt.agent_history_prompt_transform import AgentHistoryPromptTransform
+from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from models.model import Conversation
diff --git a/api/tests/unit_tests/core/prompt/test_prompt_message.py b/api/tests/unit_tests/core/prompt/test_prompt_message.py
index e5da51d733..4136816562 100644
--- a/api/tests/unit_tests/core/prompt/test_prompt_message.py
+++ b/api/tests/unit_tests/core/prompt/test_prompt_message.py
@@ -1,4 +1,4 @@
-from core.model_runtime.entities.message_entities import (
+from dify_graph.model_runtime.entities.message_entities import (
ImagePromptMessageContent,
TextPromptMessageContent,
UserPromptMessage,
diff --git a/api/tests/unit_tests/core/prompt/test_prompt_transform.py b/api/tests/unit_tests/core/prompt/test_prompt_transform.py
index 16896a0c6c..7976120547 100644
--- a/api/tests/unit_tests/core/prompt/test_prompt_transform.py
+++ b/api/tests/unit_tests/core/prompt/test_prompt_transform.py
@@ -2,10 +2,10 @@
# from core.app.app_config.entities import ModelConfigEntity
# from core.entities.provider_configuration import ProviderConfiguration, ProviderModelBundle
-# from core.model_runtime.entities.message_entities import UserPromptMessage
-# from core.model_runtime.entities.model_entities import AIModelEntity, ModelPropertyKey, ParameterRule
-# from core.model_runtime.entities.provider_entities import ProviderEntity
-# from core.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
+# from dify_graph.model_runtime.entities.message_entities import UserPromptMessage
+# from dify_graph.model_runtime.entities.model_entities import AIModelEntity, ModelPropertyKey, ParameterRule
+# from dify_graph.model_runtime.entities.provider_entities import ProviderEntity
+# from dify_graph.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
# from core.prompt.prompt_transform import PromptTransform
diff --git a/api/tests/unit_tests/core/prompt/test_simple_prompt_transform.py b/api/tests/unit_tests/core/prompt/test_simple_prompt_transform.py
index c822ecbe78..2ef66e8a96 100644
--- a/api/tests/unit_tests/core/prompt/test_simple_prompt_transform.py
+++ b/api/tests/unit_tests/core/prompt/test_simple_prompt_transform.py
@@ -2,8 +2,8 @@ from unittest.mock import MagicMock
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
from core.memory.token_buffer_memory import TokenBufferMemory
-from core.model_runtime.entities.message_entities import AssistantPromptMessage, UserPromptMessage
from core.prompt.simple_prompt_transform import SimplePromptTransform
+from dify_graph.model_runtime.entities.message_entities import AssistantPromptMessage, UserPromptMessage
from models.model import AppMode, Conversation
diff --git a/api/tests/unit_tests/core/rag/embedding/test_embedding_service.py b/api/tests/unit_tests/core/rag/embedding/test_embedding_service.py
index 63596bc320..6e71f0c61f 100644
--- a/api/tests/unit_tests/core/rag/embedding/test_embedding_service.py
+++ b/api/tests/unit_tests/core/rag/embedding/test_embedding_service.py
@@ -52,14 +52,14 @@ import pytest
from sqlalchemy.exc import IntegrityError
from core.entities.embedding_type import EmbeddingInputType
-from core.model_runtime.entities.model_entities import ModelPropertyKey
-from core.model_runtime.entities.text_embedding_entities import EmbeddingResult, EmbeddingUsage
-from core.model_runtime.errors.invoke import (
+from core.rag.embedding.cached_embedding import CacheEmbedding
+from dify_graph.model_runtime.entities.model_entities import ModelPropertyKey
+from dify_graph.model_runtime.entities.text_embedding_entities import EmbeddingResult, EmbeddingUsage
+from dify_graph.model_runtime.errors.invoke import (
InvokeAuthorizationError,
InvokeConnectionError,
InvokeRateLimitError,
)
-from core.rag.embedding.cached_embedding import CacheEmbedding
from models.dataset import Embedding
diff --git a/api/tests/unit_tests/core/rag/indexing/test_indexing_runner.py b/api/tests/unit_tests/core/rag/indexing/test_indexing_runner.py
index c00fee8fe5..b011ade884 100644
--- a/api/tests/unit_tests/core/rag/indexing/test_indexing_runner.py
+++ b/api/tests/unit_tests/core/rag/indexing/test_indexing_runner.py
@@ -61,9 +61,9 @@ from core.indexing_runner import (
DocumentIsPausedError,
IndexingRunner,
)
-from core.model_runtime.entities.model_entities import ModelType
from core.rag.index_processor.constant.index_type import IndexStructureType
from core.rag.models.document import ChildDocument, Document
+from dify_graph.model_runtime.entities.model_entities import ModelType
from libs.datetime_utils import naive_utc_now
from models.dataset import Dataset, DatasetProcessRule
from models.dataset import Document as DatasetDocument
diff --git a/api/tests/unit_tests/core/rag/rerank/test_reranker.py b/api/tests/unit_tests/core/rag/rerank/test_reranker.py
index e4597e7f8c..0e53482c51 100644
--- a/api/tests/unit_tests/core/rag/rerank/test_reranker.py
+++ b/api/tests/unit_tests/core/rag/rerank/test_reranker.py
@@ -17,13 +17,13 @@ from unittest.mock import MagicMock, Mock, patch
import pytest
from core.model_manager import ModelInstance
-from core.model_runtime.entities.rerank_entities import RerankDocument, RerankResult
from core.rag.models.document import Document
from core.rag.rerank.entity.weight import KeywordSetting, VectorSetting, Weights
from core.rag.rerank.rerank_factory import RerankRunnerFactory
from core.rag.rerank.rerank_model import RerankModelRunner
from core.rag.rerank.rerank_type import RerankMode
from core.rag.rerank.weight_rerank import WeightRerankRunner
+from dify_graph.model_runtime.entities.rerank_entities import RerankDocument, RerankResult
def create_mock_model_instance():
diff --git a/api/tests/unit_tests/core/test_model_manager.py b/api/tests/unit_tests/core/test_model_manager.py
index 5a7547e85c..92e4b58473 100644
--- a/api/tests/unit_tests/core/test_model_manager.py
+++ b/api/tests/unit_tests/core/test_model_manager.py
@@ -6,7 +6,7 @@ from pytest_mock import MockerFixture
from core.entities.provider_entities import ModelLoadBalancingConfiguration
from core.model_manager import LBModelManager
-from core.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.model_entities import ModelType
from extensions.ext_redis import redis_client
diff --git a/api/tests/unit_tests/core/test_provider_configuration.py b/api/tests/unit_tests/core/test_provider_configuration.py
index 636fac7a40..90ed1647aa 100644
--- a/api/tests/unit_tests/core/test_provider_configuration.py
+++ b/api/tests/unit_tests/core/test_provider_configuration.py
@@ -12,9 +12,9 @@ from core.entities.provider_entities import (
RestrictModel,
SystemConfiguration,
)
-from core.model_runtime.entities.common_entities import I18nObject
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.entities.provider_entities import (
+from dify_graph.model_runtime.entities.common_entities import I18nObject
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.provider_entities import (
ConfigurateMethod,
CredentialFormSchema,
FormOption,
diff --git a/api/tests/unit_tests/core/test_provider_manager.py b/api/tests/unit_tests/core/test_provider_manager.py
index 3163d53b87..3abfb8c9f8 100644
--- a/api/tests/unit_tests/core/test_provider_manager.py
+++ b/api/tests/unit_tests/core/test_provider_manager.py
@@ -2,8 +2,8 @@ import pytest
from pytest_mock import MockerFixture
from core.entities.provider_entities import ModelSettings
-from core.model_runtime.entities.model_entities import ModelType
from core.provider_manager import ProviderManager
+from dify_graph.model_runtime.entities.model_entities import ModelType
from models.provider import LoadBalancingModelConfig, ProviderModelSetting
diff --git a/api/tests/unit_tests/core/workflow/entities/test_graph_runtime_state.py b/api/tests/unit_tests/core/workflow/entities/test_graph_runtime_state.py
index b472ffdf1f..0df4927697 100644
--- a/api/tests/unit_tests/core/workflow/entities/test_graph_runtime_state.py
+++ b/api/tests/unit_tests/core/workflow/entities/test_graph_runtime_state.py
@@ -4,7 +4,7 @@ from unittest.mock import MagicMock, patch
import pytest
-from core.model_runtime.entities.llm_entities import LLMUsage
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.runtime import GraphRuntimeState, ReadOnlyGraphRuntimeStateWrapper, VariablePool
diff --git a/api/tests/unit_tests/core/workflow/graph_engine/layers/test_llm_quota.py b/api/tests/unit_tests/core/workflow/graph_engine/layers/test_llm_quota.py
index 2b882512c9..352e270fe4 100644
--- a/api/tests/unit_tests/core/workflow/graph_engine/layers/test_llm_quota.py
+++ b/api/tests/unit_tests/core/workflow/graph_engine/layers/test_llm_quota.py
@@ -4,10 +4,10 @@ from unittest.mock import MagicMock, patch
from core.app.workflow.layers.llm_quota import LLMQuotaLayer
from core.errors.error import QuotaExceededError
-from core.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.enums import NodeType, WorkflowNodeExecutionStatus
from dify_graph.graph_engine.entities.commands import CommandType
from dify_graph.graph_events.node import NodeRunSucceededEvent
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.node_events import NodeRunResult
diff --git a/api/tests/unit_tests/core/workflow/graph_engine/test_graph_state_snapshot.py b/api/tests/unit_tests/core/workflow/graph_engine/test_graph_state_snapshot.py
index 0403e91461..84e033156d 100644
--- a/api/tests/unit_tests/core/workflow/graph_engine/test_graph_state_snapshot.py
+++ b/api/tests/unit_tests/core/workflow/graph_engine/test_graph_state_snapshot.py
@@ -1,13 +1,13 @@
import time
from collections.abc import Mapping
-from core.model_runtime.entities.llm_entities import LLMMode
-from core.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.entities import GraphInitParams
from dify_graph.enums import NodeState
from dify_graph.graph import Graph
from dify_graph.graph_engine.graph_state_manager import GraphStateManager
from dify_graph.graph_engine.ready_queue import InMemoryReadyQueue
+from dify_graph.model_runtime.entities.llm_entities import LLMMode
+from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.nodes.end.end_node import EndNode
from dify_graph.nodes.end.entities import EndNodeData
from dify_graph.nodes.llm.entities import (
diff --git a/api/tests/unit_tests/core/workflow/graph_engine/test_human_input_pause_multi_branch.py b/api/tests/unit_tests/core/workflow/graph_engine/test_human_input_pause_multi_branch.py
index 9c075c31f4..695e99c1cf 100644
--- a/api/tests/unit_tests/core/workflow/graph_engine/test_human_input_pause_multi_branch.py
+++ b/api/tests/unit_tests/core/workflow/graph_engine/test_human_input_pause_multi_branch.py
@@ -4,7 +4,6 @@ from collections.abc import Iterable
from unittest import mock
from unittest.mock import MagicMock
-from core.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.entities import GraphInitParams
from dify_graph.graph import Graph
from dify_graph.graph_events import (
@@ -17,6 +16,7 @@ from dify_graph.graph_events import (
NodeRunSucceededEvent,
)
from dify_graph.graph_events.node import NodeRunHumanInputFormFilledEvent
+from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.nodes.base.entities import OutputVariableEntity, OutputVariableType
from dify_graph.nodes.end.end_node import EndNode
from dify_graph.nodes.end.entities import EndNodeData
diff --git a/api/tests/unit_tests/core/workflow/graph_engine/test_human_input_pause_single_branch.py b/api/tests/unit_tests/core/workflow/graph_engine/test_human_input_pause_single_branch.py
index 4f458a41d9..0275062c41 100644
--- a/api/tests/unit_tests/core/workflow/graph_engine/test_human_input_pause_single_branch.py
+++ b/api/tests/unit_tests/core/workflow/graph_engine/test_human_input_pause_single_branch.py
@@ -3,7 +3,6 @@ import time
from unittest import mock
from unittest.mock import MagicMock
-from core.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.entities import GraphInitParams
from dify_graph.graph import Graph
from dify_graph.graph_events import (
@@ -16,6 +15,7 @@ from dify_graph.graph_events import (
NodeRunSucceededEvent,
)
from dify_graph.graph_events.node import NodeRunHumanInputFormFilledEvent
+from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.nodes.base.entities import OutputVariableEntity, OutputVariableType
from dify_graph.nodes.end.end_node import EndNode
from dify_graph.nodes.end.entities import EndNodeData
diff --git a/api/tests/unit_tests/core/workflow/graph_engine/test_if_else_streaming.py b/api/tests/unit_tests/core/workflow/graph_engine/test_if_else_streaming.py
index de5d87ddad..fbcb8d7155 100644
--- a/api/tests/unit_tests/core/workflow/graph_engine/test_if_else_streaming.py
+++ b/api/tests/unit_tests/core/workflow/graph_engine/test_if_else_streaming.py
@@ -1,8 +1,6 @@
import time
from unittest import mock
-from core.model_runtime.entities.llm_entities import LLMMode
-from core.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.entities import GraphInitParams
from dify_graph.graph import Graph
from dify_graph.graph_events import (
@@ -12,6 +10,8 @@ from dify_graph.graph_events import (
NodeRunStreamChunkEvent,
NodeRunSucceededEvent,
)
+from dify_graph.model_runtime.entities.llm_entities import LLMMode
+from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.nodes.base.entities import OutputVariableEntity, OutputVariableType
from dify_graph.nodes.end.end_node import EndNode
from dify_graph.nodes.end.entities import EndNodeData
diff --git a/api/tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py b/api/tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py
index 2c46cc53be..ad71227205 100644
--- a/api/tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py
+++ b/api/tests/unit_tests/core/workflow/graph_engine/test_mock_nodes.py
@@ -11,8 +11,8 @@ from typing import TYPE_CHECKING, Any, Optional
from unittest.mock import MagicMock
from core.model_manager import ModelInstance
-from core.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.enums import WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.node_events import NodeRunResult, StreamChunkEvent, StreamCompletedEvent
from dify_graph.nodes.agent import AgentNode
from dify_graph.nodes.code import CodeNode
diff --git a/api/tests/unit_tests/core/workflow/graph_engine/test_parallel_human_input_pause_missing_finish.py b/api/tests/unit_tests/core/workflow/graph_engine/test_parallel_human_input_pause_missing_finish.py
index 9d05dc5bd0..910292b52c 100644
--- a/api/tests/unit_tests/core/workflow/graph_engine/test_parallel_human_input_pause_missing_finish.py
+++ b/api/tests/unit_tests/core/workflow/graph_engine/test_parallel_human_input_pause_missing_finish.py
@@ -4,8 +4,6 @@ from dataclasses import dataclass
from datetime import datetime, timedelta
from typing import Any
-from core.model_runtime.entities.llm_entities import LLMMode
-from core.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.entities import GraphInitParams
from dify_graph.entities.workflow_start_reason import WorkflowStartReason
from dify_graph.graph import Graph
@@ -19,6 +17,8 @@ from dify_graph.graph_events import (
NodeRunStartedEvent,
NodeRunSucceededEvent,
)
+from dify_graph.model_runtime.entities.llm_entities import LLMMode
+from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.nodes.human_input.entities import HumanInputNodeData, UserAction
from dify_graph.nodes.human_input.enums import HumanInputFormStatus
from dify_graph.nodes.human_input.human_input_node import HumanInputNode
diff --git a/api/tests/unit_tests/core/workflow/graph_engine/test_pause_deferred_ready_nodes.py b/api/tests/unit_tests/core/workflow/graph_engine/test_pause_deferred_ready_nodes.py
index ab212a9403..e5a9a29a1f 100644
--- a/api/tests/unit_tests/core/workflow/graph_engine/test_pause_deferred_ready_nodes.py
+++ b/api/tests/unit_tests/core/workflow/graph_engine/test_pause_deferred_ready_nodes.py
@@ -4,8 +4,6 @@ from dataclasses import dataclass
from datetime import datetime, timedelta
from typing import Any
-from core.model_runtime.entities.llm_entities import LLMMode
-from core.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.entities import GraphInitParams
from dify_graph.entities.workflow_start_reason import WorkflowStartReason
from dify_graph.graph import Graph
@@ -18,6 +16,8 @@ from dify_graph.graph_events import (
NodeRunStartedEvent,
NodeRunSucceededEvent,
)
+from dify_graph.model_runtime.entities.llm_entities import LLMMode
+from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.nodes.end.end_node import EndNode
from dify_graph.nodes.end.entities import EndNodeData
from dify_graph.nodes.human_input.entities import HumanInputNodeData, UserAction
diff --git a/api/tests/unit_tests/core/workflow/nodes/knowledge_retrieval/test_knowledge_retrieval_node.py b/api/tests/unit_tests/core/workflow/nodes/knowledge_retrieval/test_knowledge_retrieval_node.py
index 5dcf36ed6a..98246ccb2f 100644
--- a/api/tests/unit_tests/core/workflow/nodes/knowledge_retrieval/test_knowledge_retrieval_node.py
+++ b/api/tests/unit_tests/core/workflow/nodes/knowledge_retrieval/test_knowledge_retrieval_node.py
@@ -5,9 +5,9 @@ from unittest.mock import Mock
import pytest
from core.app.entities.app_invoke_entities import InvokeFrom
-from core.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.entities import GraphInitParams
from dify_graph.enums import WorkflowNodeExecutionStatus
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.nodes.knowledge_retrieval.entities import (
KnowledgeRetrievalNodeData,
MultipleRetrievalConfig,
diff --git a/api/tests/unit_tests/core/workflow/nodes/llm/test_node.py b/api/tests/unit_tests/core/workflow/nodes/llm/test_node.py
index aac5c296d8..18ec3c0dc4 100644
--- a/api/tests/unit_tests/core/workflow/nodes/llm/test_node.py
+++ b/api/tests/unit_tests/core/workflow/nodes/llm/test_node.py
@@ -10,8 +10,11 @@ from core.app.llm.model_access import DifyCredentialsProvider, DifyModelFactory,
from core.entities.provider_configuration import ProviderConfiguration, ProviderModelBundle
from core.entities.provider_entities import CustomConfiguration, SystemConfiguration
from core.model_manager import ModelInstance
-from core.model_runtime.entities.common_entities import I18nObject
-from core.model_runtime.entities.message_entities import (
+from core.prompt.entities.advanced_prompt_entities import MemoryConfig
+from dify_graph.entities import GraphInitParams
+from dify_graph.file import File, FileTransferMethod, FileType
+from dify_graph.model_runtime.entities.common_entities import I18nObject
+from dify_graph.model_runtime.entities.message_entities import (
AssistantPromptMessage,
ImagePromptMessageContent,
PromptMessage,
@@ -19,11 +22,8 @@ from core.model_runtime.entities.message_entities import (
TextPromptMessageContent,
UserPromptMessage,
)
-from core.model_runtime.entities.model_entities import AIModelEntity, FetchFrom, ModelType
-from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
-from core.prompt.entities.advanced_prompt_entities import MemoryConfig
-from dify_graph.entities import GraphInitParams
-from dify_graph.file import File, FileTransferMethod, FileType
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity, FetchFrom, ModelType
+from dify_graph.model_runtime.model_providers.model_provider_factory import ModelProviderFactory
from dify_graph.nodes.llm import llm_utils
from dify_graph.nodes.llm.entities import (
ContextConfig,
diff --git a/api/tests/unit_tests/core/workflow/nodes/llm/test_scenarios.py b/api/tests/unit_tests/core/workflow/nodes/llm/test_scenarios.py
index 44dbabb116..e40d565ef5 100644
--- a/api/tests/unit_tests/core/workflow/nodes/llm/test_scenarios.py
+++ b/api/tests/unit_tests/core/workflow/nodes/llm/test_scenarios.py
@@ -2,9 +2,9 @@ from collections.abc import Mapping, Sequence
from pydantic import BaseModel, Field
-from core.model_runtime.entities.message_entities import PromptMessage
-from core.model_runtime.entities.model_entities import ModelFeature
from dify_graph.file import File
+from dify_graph.model_runtime.entities.message_entities import PromptMessage
+from dify_graph.model_runtime.entities.model_entities import ModelFeature
from dify_graph.nodes.llm.entities import LLMNodeChatModelMessage
diff --git a/api/tests/unit_tests/core/workflow/nodes/parameter_extractor/test_parameter_extractor_node.py b/api/tests/unit_tests/core/workflow/nodes/parameter_extractor/test_parameter_extractor_node.py
index 110fdeedfb..7eca531b62 100644
--- a/api/tests/unit_tests/core/workflow/nodes/parameter_extractor/test_parameter_extractor_node.py
+++ b/api/tests/unit_tests/core/workflow/nodes/parameter_extractor/test_parameter_extractor_node.py
@@ -7,7 +7,7 @@ from typing import Any
import pytest
-from core.model_runtime.entities import LLMMode
+from dify_graph.model_runtime.entities import LLMMode
from dify_graph.nodes.llm import ModelConfig, VisionConfig
from dify_graph.nodes.parameter_extractor.entities import ParameterConfig, ParameterExtractorNodeData
from dify_graph.nodes.parameter_extractor.exc import (
diff --git a/api/tests/unit_tests/core/workflow/nodes/test_question_classifier_node.py b/api/tests/unit_tests/core/workflow/nodes/test_question_classifier_node.py
index 1b72589cba..4dfec5ef60 100644
--- a/api/tests/unit_tests/core/workflow/nodes/test_question_classifier_node.py
+++ b/api/tests/unit_tests/core/workflow/nodes/test_question_classifier_node.py
@@ -1,4 +1,4 @@
-from core.model_runtime.entities import ImagePromptMessageContent
+from dify_graph.model_runtime.entities import ImagePromptMessageContent
from dify_graph.nodes.question_classifier import QuestionClassifierNodeData
diff --git a/api/tests/unit_tests/core/workflow/nodes/tool/test_tool_node.py b/api/tests/unit_tests/core/workflow/nodes/tool/test_tool_node.py
index c6e40bbd84..3d88baa272 100644
--- a/api/tests/unit_tests/core/workflow/nodes/tool/test_tool_node.py
+++ b/api/tests/unit_tests/core/workflow/nodes/tool/test_tool_node.py
@@ -8,11 +8,11 @@ from unittest.mock import MagicMock, patch
import pytest
-from core.model_runtime.entities.llm_entities import LLMUsage
from core.tools.entities.tool_entities import ToolInvokeMessage
from core.tools.utils.message_transformer import ToolFileMessageTransformer
from dify_graph.entities import GraphInitParams
from dify_graph.file import File, FileTransferMethod, FileType
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
from dify_graph.node_events import StreamChunkEvent, StreamCompletedEvent
from dify_graph.runtime import GraphRuntimeState, VariablePool
from dify_graph.system_variable import SystemVariable
diff --git a/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py b/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py
index 10a108d425..06703b8e38 100644
--- a/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py
+++ b/api/tests/unit_tests/repositories/workflow_node_execution/test_sqlalchemy_repository.py
@@ -12,7 +12,6 @@ import pytest
from pytest_mock import MockerFixture
from sqlalchemy.orm import Session, sessionmaker
-from core.model_runtime.utils.encoders import jsonable_encoder
from core.repositories import SQLAlchemyWorkflowNodeExecutionRepository
from dify_graph.entities import (
WorkflowNodeExecution,
@@ -22,6 +21,7 @@ from dify_graph.enums import (
WorkflowNodeExecutionMetadataKey,
WorkflowNodeExecutionStatus,
)
+from dify_graph.model_runtime.utils.encoders import jsonable_encoder
from dify_graph.repositories.workflow_node_execution_repository import OrderConfig
from models.account import Account, Tenant
from models.workflow import WorkflowNodeExecutionModel, WorkflowNodeExecutionTriggeredFrom
diff --git a/api/tests/unit_tests/services/document_service_validation.py b/api/tests/unit_tests/services/document_service_validation.py
index 4923e29d73..6829691507 100644
--- a/api/tests/unit_tests/services/document_service_validation.py
+++ b/api/tests/unit_tests/services/document_service_validation.py
@@ -111,7 +111,7 @@ from unittest.mock import Mock, patch
import pytest
from core.errors.error import LLMBadRequestError, ProviderTokenNotInitError
-from core.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.model_entities import ModelType
from models.dataset import Dataset, DatasetProcessRule, Document
from services.dataset_service import DatasetService, DocumentService
from services.entities.knowledge_entities.knowledge_entities import (
diff --git a/api/tests/unit_tests/services/test_dataset_service_create_dataset.py b/api/tests/unit_tests/services/test_dataset_service_create_dataset.py
index 7c7a70f962..87a0d6b678 100644
--- a/api/tests/unit_tests/services/test_dataset_service_create_dataset.py
+++ b/api/tests/unit_tests/services/test_dataset_service_create_dataset.py
@@ -13,7 +13,7 @@ from uuid import uuid4
import pytest
-from core.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.model_entities import ModelType
from models.account import Account
from models.dataset import Dataset, Pipeline
from services.dataset_service import DatasetService
diff --git a/api/tests/unit_tests/services/test_model_provider_service_sanitization.py b/api/tests/unit_tests/services/test_model_provider_service_sanitization.py
index e2360b116d..6a6b63f003 100644
--- a/api/tests/unit_tests/services/test_model_provider_service_sanitization.py
+++ b/api/tests/unit_tests/services/test_model_provider_service_sanitization.py
@@ -3,9 +3,9 @@ import types
import pytest
from core.entities.provider_entities import CredentialConfiguration, CustomModelConfiguration
-from core.model_runtime.entities.common_entities import I18nObject
-from core.model_runtime.entities.model_entities import ModelType
-from core.model_runtime.entities.provider_entities import ConfigurateMethod
+from dify_graph.model_runtime.entities.common_entities import I18nObject
+from dify_graph.model_runtime.entities.model_entities import ModelType
+from dify_graph.model_runtime.entities.provider_entities import ConfigurateMethod
from models.provider import ProviderType
from services.model_provider_service import ModelProviderService
diff --git a/api/tests/unit_tests/services/workflow/test_workflow_converter.py b/api/tests/unit_tests/services/workflow/test_workflow_converter.py
index fefd771546..a847c2b4d1 100644
--- a/api/tests/unit_tests/services/workflow/test_workflow_converter.py
+++ b/api/tests/unit_tests/services/workflow/test_workflow_converter.py
@@ -15,8 +15,8 @@ from core.app.app_config.entities import (
PromptTemplateEntity,
)
from core.helper import encrypter
-from core.model_runtime.entities.llm_entities import LLMMode
-from core.model_runtime.entities.message_entities import PromptMessageRole
+from dify_graph.model_runtime.entities.llm_entities import LLMMode
+from dify_graph.model_runtime.entities.message_entities import PromptMessageRole
from dify_graph.variables.input_entities import VariableEntity, VariableEntityType
from models.api_based_extension import APIBasedExtension, APIBasedExtensionPoint
from models.model import AppMode
diff --git a/api/tests/unit_tests/tools/test_mcp_tool.py b/api/tests/unit_tests/tools/test_mcp_tool.py
index 5930b63f58..fa9c6af287 100644
--- a/api/tests/unit_tests/tools/test_mcp_tool.py
+++ b/api/tests/unit_tests/tools/test_mcp_tool.py
@@ -13,11 +13,11 @@ from core.mcp.types import (
TextContent,
TextResourceContents,
)
-from core.model_runtime.entities.llm_entities import LLMUsage
from core.tools.__base.tool_runtime import ToolRuntime
from core.tools.entities.common_entities import I18nObject
from core.tools.entities.tool_entities import ToolEntity, ToolIdentity, ToolInvokeMessage
from core.tools.mcp_tool.tool import MCPTool
+from dify_graph.model_runtime.entities.llm_entities import LLMUsage
def _make_mcp_tool(output_schema: dict | None = None) -> MCPTool:
diff --git a/api/tests/unit_tests/utils/structured_output_parser/test_structured_output_parser.py b/api/tests/unit_tests/utils/structured_output_parser/test_structured_output_parser.py
index 9a0dbfa2d8..7ec1343f98 100644
--- a/api/tests/unit_tests/utils/structured_output_parser/test_structured_output_parser.py
+++ b/api/tests/unit_tests/utils/structured_output_parser/test_structured_output_parser.py
@@ -5,7 +5,7 @@ import pytest
from core.llm_generator.output_parser.errors import OutputParserError
from core.llm_generator.output_parser.structured_output import invoke_llm_with_structured_output
-from core.model_runtime.entities.llm_entities import (
+from dify_graph.model_runtime.entities.llm_entities import (
LLMResult,
LLMResultChunk,
LLMResultChunkDelta,
@@ -13,13 +13,13 @@ from core.model_runtime.entities.llm_entities import (
LLMResultWithStructuredOutput,
LLMUsage,
)
-from core.model_runtime.entities.message_entities import (
+from dify_graph.model_runtime.entities.message_entities import (
AssistantPromptMessage,
SystemPromptMessage,
TextPromptMessageContent,
UserPromptMessage,
)
-from core.model_runtime.entities.model_entities import AIModelEntity, ModelType
+from dify_graph.model_runtime.entities.model_entities import AIModelEntity, ModelType
def create_mock_usage(prompt_tokens: int = 10, completion_tokens: int = 5) -> LLMUsage:
diff --git a/web/app/components/devtools/react-scan/loader.tsx b/web/app/components/devtools/react-scan/loader.tsx
index ee702216f7..a5956d7825 100644
--- a/web/app/components/devtools/react-scan/loader.tsx
+++ b/web/app/components/devtools/react-scan/loader.tsx
@@ -1,21 +1,15 @@
-'use client'
-
-import { lazy, Suspense } from 'react'
+import Script from 'next/script'
import { IS_DEV } from '@/config'
-const ReactScan = lazy(() =>
- import('./scan').then(module => ({
- default: module.ReactScan,
- })),
-)
-
-export const ReactScanLoader = () => {
+export function ReactScanLoader() {
if (!IS_DEV)
return null
return (
-
-
-
+
)
}
diff --git a/web/app/components/devtools/react-scan/scan.tsx b/web/app/components/devtools/react-scan/scan.tsx
deleted file mode 100644
index f1d9f3de20..0000000000
--- a/web/app/components/devtools/react-scan/scan.tsx
+++ /dev/null
@@ -1,22 +0,0 @@
-'use client'
-
-import { useEffect } from 'react'
-import { scan } from 'react-scan'
-import { IS_DEV } from '@/config'
-
-export function ReactScan() {
- useEffect(() => {
- if (IS_DEV) {
- scan({
- enabled: true,
- // HACK: react-scan's getIsProduction() incorrectly detects Next.js dev as production
- // because Next.js devtools overlay uses production React build
- // Issue: https://github.com/aidenybai/react-scan/issues/402
- // TODO: remove this option after upstream fix
- dangerouslyForceRunInProduction: true,
- })
- }
- }, [])
-
- return null
-}
diff --git a/web/app/components/plugins/marketplace/hydration-server.tsx b/web/app/components/plugins/marketplace/hydration-server.tsx
index bf01f4d4ed..287bcbe8c0 100644
--- a/web/app/components/plugins/marketplace/hydration-server.tsx
+++ b/web/app/components/plugins/marketplace/hydration-server.tsx
@@ -37,6 +37,10 @@ export async function HydrateQueryClient({
children: React.ReactNode
}) {
const dehydratedState = await getDehydratedState(searchParams)
+ // TODO: vinext do not handle hydration boundary well for now.
+ if (!dehydratedState) {
+ return <>{children}>
+ }
return (
{children}
diff --git a/web/app/layout.tsx b/web/app/layout.tsx
index 367aa120b8..318cad3a6c 100644
--- a/web/app/layout.tsx
+++ b/web/app/layout.tsx
@@ -56,6 +56,8 @@ const LocaleLayout = async ({
+
+
-
///
///
diff --git a/web/package.json b/web/package.json
index 9f7c61f40e..5ea8aed0cc 100644
--- a/web/package.json
+++ b/web/package.json
@@ -238,7 +238,7 @@
"nock": "14.0.10",
"postcss": "8.5.6",
"postcss-js": "5.0.3",
- "react-scan": "0.4.3",
+ "react-scan": "0.5.3",
"react-server-dom-webpack": "19.2.4",
"sass": "1.93.2",
"serwist": "9.5.4",
@@ -247,7 +247,7 @@
"tsx": "4.21.0",
"typescript": "5.9.3",
"uglify-js": "3.19.3",
- "vinext": "https://pkg.pr.new/hyoban/vinext@e283197",
+ "vinext": "https://pkg.pr.new/hyoban/vinext@cfae669",
"vite": "7.3.1",
"vite-tsconfig-paths": "6.1.1",
"vitest": "4.0.18",
diff --git a/web/pnpm-lock.yaml b/web/pnpm-lock.yaml
index 4f72ba60c5..24d7dd5924 100644
--- a/web/pnpm-lock.yaml
+++ b/web/pnpm-lock.yaml
@@ -581,8 +581,8 @@ importers:
specifier: 5.0.3
version: 5.0.3(postcss@8.5.6)
react-scan:
- specifier: 0.4.3
- version: 0.4.3(@types/react@19.2.9)(next@16.1.5(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.93.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.56.0)
+ specifier: 0.5.3
+ version: 0.5.3(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.56.0)
react-server-dom-webpack:
specifier: 19.2.4
version: 19.2.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(webpack@5.104.1(esbuild@0.27.2)(uglify-js@3.19.3))
@@ -608,8 +608,8 @@ importers:
specifier: 3.19.3
version: 3.19.3
vinext:
- specifier: https://pkg.pr.new/hyoban/vinext@e283197
- version: https://pkg.pr.new/hyoban/vinext@e283197(next@16.1.5(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.93.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.12)(jiti@1.21.7)(sass@1.93.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(webpack@5.104.1(esbuild@0.27.2)(uglify-js@3.19.3))
+ specifier: https://pkg.pr.new/hyoban/vinext@cfae669
+ version: https://pkg.pr.new/hyoban/vinext@cfae669(next@16.1.5(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.93.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.12)(jiti@1.21.7)(sass@1.93.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(webpack@5.104.1(esbuild@0.27.2)(uglify-js@3.19.3))
vite:
specifier: 7.3.1
version: 7.3.1(@types/node@24.10.12)(jiti@1.21.7)(sass@1.93.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
@@ -2184,12 +2184,6 @@ packages:
resolution: {integrity: sha512-tmmZ3lQxAe/k/+rNnXQRawJ4NjxO2hqiOLTHvWchtGZULp4RyFeh6aU4XdOYBFe2KE1oShQTv4AblOs2iOrNnQ==}
engines: {node: '>= 10.0.0'}
- '@pivanov/utils@0.0.2':
- resolution: {integrity: sha512-q9CN0bFWxWgMY5hVVYyBgez1jGiLBa6I+LkG37ycylPhFvEGOOeaADGtUSu46CaZasPnlY8fCdVJZmrgKb1EPA==}
- peerDependencies:
- react: '>=18'
- react-dom: '>=18'
-
'@pkgjs/parseargs@0.11.0':
resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==}
engines: {node: '>=14'}
@@ -3912,8 +3906,8 @@ packages:
resolution: {integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==}
engines: {node: '>=8'}
- bippy@0.3.34:
- resolution: {integrity: sha512-vmptmU/20UdIWHHhq7qCSHhHzK7Ro3YJ1utU0fBG7ujUc58LEfTtilKxcF0IOgSjT5XLcm7CBzDjbv4lcKApGQ==}
+ bippy@0.5.30:
+ resolution: {integrity: sha512-8CFmJAHD3gmTLDOCDHuWhjm1nxHSFZdlGoWtak9r53Uxn36ynOjxBLyxXHh/7h/XiKLyPvfdXa0gXWcD9o9lLQ==}
peerDependencies:
react: '>=17.0.1'
@@ -4157,6 +4151,10 @@ packages:
resolution: {integrity: sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==}
engines: {node: '>=18'}
+ commander@14.0.3:
+ resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==}
+ engines: {node: '>=20'}
+
commander@2.20.3:
resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==}
@@ -5146,11 +5144,6 @@ packages:
fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
- fsevents@2.3.2:
- resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
- engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
- os: [darwin]
-
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
@@ -5673,8 +5666,8 @@ packages:
khroma@2.1.0:
resolution: {integrity: sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==}
- kleur@4.1.5:
- resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
+ kleur@3.0.3:
+ resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
knip@5.78.0:
@@ -6113,10 +6106,6 @@ packages:
moo-color@1.0.3:
resolution: {integrity: sha512-i/+ZKXMDf6aqYtBhuOcej71YSlbjT3wCO/4H1j8rPvxDJEifdwgg5MaFyu6iYAT8GBZJg2z0dkgK4YMzvURALQ==}
- mri@1.2.0:
- resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==}
- engines: {node: '>=4'}
-
ms@2.1.3:
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
@@ -6405,16 +6394,6 @@ packages:
pkg-types@2.3.0:
resolution: {integrity: sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==}
- playwright-core@1.58.0:
- resolution: {integrity: sha512-aaoB1RWrdNi3//rOeKuMiS65UCcgOVljU46At6eFcOFPFHWtd2weHRRow6z/n+Lec0Lvu0k9ZPKJSjPugikirw==}
- engines: {node: '>=18'}
- hasBin: true
-
- playwright@1.58.0:
- resolution: {integrity: sha512-2SVA0sbPktiIY/MCOPX8e86ehA/e+tDNq+e5Y8qjKYti2Z/JG7xnronT/TXTIkKbYGWlCbuucZ6dziEgkoEjQQ==}
- engines: {node: '>=18'}
- hasBin: true
-
pluralize@8.0.0:
resolution: {integrity: sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==}
engines: {node: '>=4'}
@@ -6522,6 +6501,10 @@ packages:
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
engines: {node: '>=6'}
+ prompts@2.4.2:
+ resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==}
+ engines: {node: '>= 6'}
+
prop-types@15.8.1:
resolution: {integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==}
@@ -6693,25 +6676,12 @@ packages:
react: '>=16.3.0'
react-dom: '>=16.3.0'
- react-scan@0.4.3:
- resolution: {integrity: sha512-jhAQuQ1nja6HUYrSpbmNFHqZPsRCXk8Yqu0lHoRIw9eb8N96uTfXCpVyQhTTnJ/nWqnwuvxbpKVG/oWZT8+iTQ==}
+ react-scan@0.5.3:
+ resolution: {integrity: sha512-qde9PupmUf0L3MU1H6bjmoukZNbCXdMyTEwP4Gh8RQ4rZPd2GGNBgEKWszwLm96E8k+sGtMpc0B9P0KyFDP6Bw==}
hasBin: true
peerDependencies:
- '@remix-run/react': '>=1.0.0'
- next: '>=13.0.0'
react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
- react-router: ^5.0.0 || ^6.0.0 || ^7.0.0
- react-router-dom: ^5.0.0 || ^6.0.0 || ^7.0.0
- peerDependenciesMeta:
- '@remix-run/react':
- optional: true
- next:
- optional: true
- react-router:
- optional: true
- react-router-dom:
- optional: true
react-server-dom-webpack@19.2.4:
resolution: {integrity: sha512-zEhkWv6RhXDctC2N7yEUHg3751nvFg81ydHj8LTTZuukF/IF1gcOKqqAL6Ds+kS5HtDVACYPik0IvzkgYXPhlQ==}
@@ -7591,8 +7561,8 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
- vinext@https://pkg.pr.new/hyoban/vinext@e283197:
- resolution: {tarball: https://pkg.pr.new/hyoban/vinext@e283197}
+ vinext@https://pkg.pr.new/hyoban/vinext@cfae669:
+ resolution: {integrity: sha512-4SRm/Dkou0Ib0UYexP8xg0G83jIM17XPUC32uXwLHt5lO47AisblMpDZXTh84fhN058FEHtPaAGtoFThaoZLIw==, tarball: https://pkg.pr.new/hyoban/vinext@cfae669}
version: 0.0.5
engines: {node: '>=22'}
hasBin: true
@@ -7601,6 +7571,12 @@ packages:
react-dom: '>=19.2.0'
vite: ^7.0.0
+ vite-plugin-commonjs@0.10.4:
+ resolution: {integrity: sha512-eWQuvQKCcx0QYB5e5xfxBNjQKyrjEWZIR9UOkOV6JAgxVhtbZvCOF+FNC2ZijBJ3U3Px04ZMMyyMyFBVWIJ5+g==}
+
+ vite-plugin-dynamic-import@1.6.0:
+ resolution: {integrity: sha512-TM0sz70wfzTIo9YCxVFwS8OA9lNREsh+0vMHGSkWDTZ7bgd1Yjs5RV8EgB634l/91IsXJReg0xtmuQqP0mf+rg==}
+
vite-plugin-storybook-nextjs@3.2.2:
resolution: {integrity: sha512-ZJXCrhi9mW4jEJTKhJ5sUtpBe84mylU40me2aMuLSgIJo4gE/Rc559hZvMYLFTWta1gX7Rm8Co5EEHakPct+wA==}
peerDependencies:
@@ -9726,11 +9702,6 @@ snapshots:
'@parcel/watcher-win32-x64': 2.5.6
optional: true
- '@pivanov/utils@0.0.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)':
- dependencies:
- react: 19.2.4
- react-dom: 19.2.4(react@19.2.4)
-
'@pkgjs/parseargs@0.11.0':
optional: true
@@ -11598,7 +11569,7 @@ snapshots:
binary-extensions@2.3.0: {}
- bippy@0.3.34(@types/react@19.2.9)(react@19.2.4):
+ bippy@0.5.30(@types/react@19.2.9)(react@19.2.4):
dependencies:
'@types/react-reconciler': 0.28.9(@types/react@19.2.9)
react: 19.2.4
@@ -11851,6 +11822,8 @@ snapshots:
commander@13.1.0: {}
+ commander@14.0.3: {}
+
commander@2.20.3: {}
commander@4.1.1: {}
@@ -13049,9 +13022,6 @@ snapshots:
fs-constants@1.0.0:
optional: true
- fsevents@2.3.2:
- optional: true
-
fsevents@2.3.3:
optional: true
@@ -13599,7 +13569,7 @@ snapshots:
khroma@2.1.0: {}
- kleur@4.1.5: {}
+ kleur@3.0.3: {}
knip@5.78.0(@types/node@24.10.12)(typescript@5.9.3):
dependencies:
@@ -14352,8 +14322,6 @@ snapshots:
dependencies:
color-name: 1.1.4
- mri@1.2.0: {}
-
ms@2.1.3: {}
mz@2.7.0:
@@ -14642,14 +14610,6 @@ snapshots:
exsolve: 1.0.8
pathe: 2.0.3
- playwright-core@1.58.0: {}
-
- playwright@1.58.0:
- dependencies:
- playwright-core: 1.58.0
- optionalDependencies:
- fsevents: 2.3.2
-
pluralize@8.0.0: {}
pnpm-workspace-yaml@1.6.0:
@@ -14759,6 +14719,11 @@ snapshots:
prismjs@1.30.0: {}
+ prompts@2.4.2:
+ dependencies:
+ kleur: 3.0.3
+ sisteransi: 1.0.5
+
prop-types@15.8.1:
dependencies:
loose-envify: 1.4.0
@@ -14945,29 +14910,24 @@ snapshots:
react-draggable: 4.4.6(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
tslib: 2.6.2
- react-scan@0.4.3(@types/react@19.2.9)(next@16.1.5(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.93.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.56.0):
+ react-scan@0.5.3(@types/react@19.2.9)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(rollup@4.56.0):
dependencies:
- '@babel/core': 7.28.6
- '@babel/generator': 7.28.6
- '@babel/types': 7.28.6
- '@clack/core': 0.3.5
- '@clack/prompts': 0.8.2
- '@pivanov/utils': 0.0.2(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
+ '@babel/core': 7.29.0
+ '@babel/generator': 7.29.1
+ '@babel/types': 7.29.0
'@preact/signals': 1.3.2(preact@10.28.2)
'@rollup/pluginutils': 5.3.0(rollup@4.56.0)
'@types/node': 20.19.30
- bippy: 0.3.34(@types/react@19.2.9)(react@19.2.4)
+ bippy: 0.5.30(@types/react@19.2.9)(react@19.2.4)
+ commander: 14.0.3
esbuild: 0.27.2
estree-walker: 3.0.3
- kleur: 4.1.5
- mri: 1.2.0
- playwright: 1.58.0
+ picocolors: 1.1.1
preact: 10.28.2
+ prompts: 2.4.2
react: 19.2.4
react-dom: 19.2.4(react@19.2.4)
- tsx: 4.21.0
optionalDependencies:
- next: 16.1.5(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.93.2)
unplugin: 2.1.0
transitivePeerDependencies:
- '@types/react'
@@ -15911,7 +15871,7 @@ snapshots:
unplugin@2.1.0:
dependencies:
- acorn: 8.15.0
+ acorn: 8.16.0
webpack-virtual-modules: 0.6.2
optional: true
@@ -16002,7 +15962,7 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
- vinext@https://pkg.pr.new/hyoban/vinext@e283197(next@16.1.5(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.93.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.12)(jiti@1.21.7)(sass@1.93.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(webpack@5.104.1(esbuild@0.27.2)(uglify-js@3.19.3)):
+ vinext@https://pkg.pr.new/hyoban/vinext@cfae669(next@16.1.5(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.93.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.12)(jiti@1.21.7)(sass@1.93.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))(webpack@5.104.1(esbuild@0.27.2)(uglify-js@3.19.3)):
dependencies:
'@unpic/react': 1.0.2(next@16.1.5(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.93.2))(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
'@vercel/og': 0.8.6
@@ -16013,6 +15973,7 @@ snapshots:
react-server-dom-webpack: 19.2.4(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(webpack@5.104.1(esbuild@0.27.2)(uglify-js@3.19.3))
rsc-html-stream: 0.0.7
vite: 7.3.1(@types/node@24.10.12)(jiti@1.21.7)(sass@1.93.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)
+ vite-plugin-commonjs: 0.10.4
vite-tsconfig-paths: 6.1.1(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.12)(jiti@1.21.7)(sass@1.93.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2))
transitivePeerDependencies:
- next
@@ -16020,6 +15981,19 @@ snapshots:
- typescript
- webpack
+ vite-plugin-commonjs@0.10.4:
+ dependencies:
+ acorn: 8.16.0
+ magic-string: 0.30.21
+ vite-plugin-dynamic-import: 1.6.0
+
+ vite-plugin-dynamic-import@1.6.0:
+ dependencies:
+ acorn: 8.16.0
+ es-module-lexer: 1.7.0
+ fast-glob: 3.3.3
+ magic-string: 0.30.21
+
vite-plugin-storybook-nextjs@3.2.2(next@16.1.5(@babel/core@7.29.0)(react-dom@19.2.4(react@19.2.4))(react@19.2.4)(sass@1.93.2))(storybook@10.2.13(@testing-library/dom@10.4.1)(react-dom@19.2.4(react@19.2.4))(react@19.2.4))(typescript@5.9.3)(vite@7.3.1(@types/node@24.10.12)(jiti@1.21.7)(sass@1.93.2)(terser@5.46.0)(tsx@4.21.0)(yaml@2.8.2)):
dependencies:
'@next/env': 16.0.0