perf: get_provider_model_bundle use single query instead of get_configurations

This commit is contained in:
fatelei 2026-04-01 11:28:55 +08:00
parent 42d7623cc6
commit fb56cd1e18
No known key found for this signature in database
GPG Key ID: 2F91DA05646F4EED
236 changed files with 749 additions and 574 deletions

View File

@ -2,9 +2,9 @@ from __future__ import annotations
from typing import Any, TypeAlias
from graphon.file import helpers as file_helpers
from pydantic import BaseModel, ConfigDict, computed_field
from graphon.file import helpers as file_helpers
from models.model import IconType
JSONValue: TypeAlias = str | int | float | bool | None | dict[str, Any] | list[Any]

View File

@ -6,7 +6,6 @@ from typing import Any, Literal, TypeAlias
from flask import request
from flask_restx import Resource
from graphon.enums import WorkflowExecutionStatus
from graphon.file import helpers as file_helpers
from pydantic import AliasChoices, BaseModel, ConfigDict, Field, computed_field, field_validator
from sqlalchemy import select
from sqlalchemy.orm import sessionmaker
@ -29,6 +28,7 @@ from core.ops.ops_trace_manager import OpsTraceManager
from core.rag.retrieval.retrieval_methods import RetrievalMethod
from core.trigger.constants import TRIGGER_NODE_TYPES
from extensions.ext_database import db
from graphon.file import helpers as file_helpers
from libs.login import current_account_with_tenant, login_required
from models import App, DatasetPermissionEnum, Workflow
from models.model import IconType

View File

@ -6,7 +6,6 @@ from typing import Any
from flask import abort, request
from flask_restx import Resource, fields, marshal_with
from graphon.enums import NodeType
from graphon.file import File
from graphon.graph_engine.manager import GraphEngineManager
from graphon.model_runtime.utils.encoders import jsonable_encoder
from pydantic import BaseModel, Field, field_validator
@ -39,6 +38,7 @@ from extensions.ext_redis import redis_client
from factories import file_factory, variable_factory
from fields.member_fields import simple_account_fields
from fields.workflow_fields import workflow_fields, workflow_pagination_fields
from graphon.file import File
from libs import helper
from libs.datetime_utils import naive_utc_now
from libs.helper import TimestampField, uuid_value

View File

@ -5,7 +5,6 @@ from typing import Any, NoReturn, ParamSpec, TypeVar
from flask import Response, request
from flask_restx import Resource, fields, marshal, marshal_with
from graphon.file import helpers as file_helpers
from graphon.variables.segment_group import SegmentGroup
from graphon.variables.segments import ArrayFileSegment, FileSegment, Segment
from graphon.variables.types import SegmentType
@ -24,6 +23,7 @@ from core.workflow.variable_prefixes import CONVERSATION_VARIABLE_NODE_ID, SYSTE
from extensions.ext_database import db
from factories.file_factory import build_from_mapping, build_from_mappings
from factories.variable_factory import build_segment_with_type
from graphon.file import helpers as file_helpers
from libs.login import current_user, login_required
from models import App, AppMode
from models.workflow import WorkflowDraftVariable

View File

@ -2,7 +2,6 @@ import urllib.parse
import httpx
from flask_restx import Resource
from graphon.file import helpers as file_helpers
from pydantic import BaseModel, Field
import services
@ -16,6 +15,7 @@ from controllers.console import console_ns
from core.helper import ssrf_proxy
from extensions.ext_database import db
from fields.file_fields import FileWithSignedUrl, RemoteFileInfo
from graphon.file import helpers as file_helpers
from libs.login import current_account_with_tenant, login_required
from services.file_service import FileService

View File

@ -1,7 +1,6 @@
import urllib.parse
import httpx
from graphon.file import helpers as file_helpers
from pydantic import BaseModel, Field, HttpUrl
import services
@ -14,6 +13,7 @@ from controllers.common.errors import (
from core.helper import ssrf_proxy
from extensions.ext_database import db
from fields.file_fields import FileWithSignedUrl, RemoteFileInfo
from graphon.file import helpers as file_helpers
from services.file_service import FileService
from ..common.schema import register_schema_models

View File

@ -4,17 +4,6 @@ import uuid
from decimal import Decimal
from typing import Union, cast
from graphon.file import file_manager
from graphon.model_runtime.entities import (
AssistantPromptMessage,
LLMUsage,
PromptMessage,
PromptMessageTool,
SystemPromptMessage,
TextPromptMessageContent,
ToolPromptMessage,
UserPromptMessage,
)
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
from graphon.model_runtime.entities.model_entities import ModelFeature
from graphon.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
@ -43,6 +32,17 @@ from core.tools.tool_manager import ToolManager
from core.tools.utils.dataset_retriever_tool import DatasetRetrieverTool
from extensions.ext_database import db
from factories import file_factory
from graphon.file import file_manager
from graphon.model_runtime.entities import (
AssistantPromptMessage,
LLMUsage,
PromptMessage,
PromptMessageTool,
SystemPromptMessage,
TextPromptMessageContent,
ToolPromptMessage,
UserPromptMessage,
)
from models.enums import CreatorUserRole
from models.model import Conversation, Message, MessageAgentThought, MessageFile

View File

@ -1,5 +1,9 @@
import json
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
from graphon.model_runtime.utils.encoders import jsonable_encoder
from core.agent.cot_agent_runner import CotAgentRunner
from graphon.file import file_manager
from graphon.model_runtime.entities import (
AssistantPromptMessage,
@ -8,10 +12,6 @@ from graphon.model_runtime.entities import (
TextPromptMessageContent,
UserPromptMessage,
)
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
from graphon.model_runtime.utils.encoders import jsonable_encoder
from core.agent.cot_agent_runner import CotAgentRunner
class CotChatAgentRunner(CotAgentRunner):

View File

@ -4,6 +4,15 @@ from collections.abc import Generator
from copy import deepcopy
from typing import Any, Union
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
from core.agent.base_agent_runner import BaseAgentRunner
from core.agent.errors import AgentMaxIterationError
from core.app.apps.base_app_queue_manager import PublishFrom
from core.app.entities.queue_entities import QueueAgentThoughtEvent, QueueMessageEndEvent, QueueMessageFileEvent
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 graphon.file import file_manager
from graphon.model_runtime.entities import (
AssistantPromptMessage,
@ -18,15 +27,6 @@ from graphon.model_runtime.entities import (
ToolPromptMessage,
UserPromptMessage,
)
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
from core.agent.base_agent_runner import BaseAgentRunner
from core.agent.errors import AgentMaxIterationError
from core.app.apps.base_app_queue_manager import PublishFrom
from core.app.entities.queue_entities import QueueAgentThoughtEvent, QueueMessageEndEvent, QueueMessageFileEvent
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 models.model import Message
logger = logging.getLogger(__name__)

View File

@ -2,13 +2,13 @@ from collections.abc import Sequence
from enum import StrEnum, auto
from typing import Any, Literal
from graphon.file import FileUploadConfig
from graphon.model_runtime.entities.llm_entities import LLMMode
from graphon.model_runtime.entities.message_entities import PromptMessageRole
from graphon.variables.input_entities import VariableEntity as WorkflowVariableEntity
from pydantic import BaseModel, Field
from core.rag.data_post_processor.data_post_processor import RerankingModelDict, WeightsDict
from graphon.file import FileUploadConfig
from models.model import AppMode

View File

@ -1,9 +1,8 @@
from collections.abc import Mapping
from typing import Any
from graphon.file import FileUploadConfig
from constants import DEFAULT_FILE_NUMBER_LIMITS
from graphon.file import FileUploadConfig
class FileUploadConfigManager:

View File

@ -18,9 +18,7 @@ from constants import UUID_NIL
if TYPE_CHECKING:
from controllers.console.app.workflow import LoopNodeRunPayload
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
from graphon.runtime import GraphRuntimeState
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
from core.app.app_config.features.file_upload.manager import FileUploadConfigManager
@ -48,6 +46,8 @@ from core.repositories import DifyCoreRepositoryFactory
from core.repositories.factory import WorkflowExecutionRepository, WorkflowNodeExecutionRepository
from extensions.ext_database import db
from factories import file_factory
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.runtime import GraphRuntimeState
from libs.flask_utils import preserve_flask_contexts
from models import Account, App, Conversation, EndUser, Message, Workflow, WorkflowNodeExecutionTriggeredFrom
from models.enums import WorkflowRunTriggeredFrom

View File

@ -4,9 +4,6 @@ from collections.abc import Mapping, Sequence
from typing import Any, cast
from graphon.enums import WorkflowType
from graphon.graph_engine.command_channels import RedisChannel
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.runtime import GraphRuntimeState, VariablePool
from graphon.variable_loader import VariableLoader
from graphon.variables.variables import Variable
from sqlalchemy import select
@ -43,6 +40,9 @@ from core.workflow.workflow_entry import WorkflowEntry
from extensions.ext_database import db
from extensions.ext_redis import redis_client
from extensions.otel import WorkflowAppRunnerHandler, trace_span
from graphon.graph_engine.command_channels import RedisChannel
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.runtime import GraphRuntimeState, VariablePool
from models import Workflow
from models.model import App, Conversation, Message, MessageAnnotation
from models.workflow import ConversationVariable

View File

@ -13,8 +13,6 @@ from graphon.entities.pause_reason import HumanInputRequired
from graphon.enums import WorkflowExecutionStatus
from graphon.model_runtime.entities.llm_entities import LLMUsage
from graphon.model_runtime.utils.encoders import jsonable_encoder
from graphon.nodes import BuiltinNodeTypes
from graphon.runtime import GraphRuntimeState
from sqlalchemy import select
from sqlalchemy.orm import Session
@ -77,6 +75,8 @@ from core.repositories.human_input_repository import HumanInputFormRepositoryImp
from core.workflow.file_reference import resolve_file_record_id
from core.workflow.system_variables import build_system_variables
from extensions.ext_database import db
from graphon.nodes import BuiltinNodeTypes
from graphon.runtime import GraphRuntimeState
from libs.datetime_utils import naive_utc_now
from models import Account, Conversation, EndUser, Message, MessageFile
from models.enums import CreatorUserRole, MessageFileBelongsTo, MessageStatus

View File

@ -3,7 +3,6 @@ from contextlib import AbstractContextManager, nullcontext
from typing import TYPE_CHECKING, Any, Union, final
from graphon.enums import NodeType
from graphon.file import File, FileUploadConfig
from graphon.variables.input_entities import VariableEntityType
from sqlalchemy.orm import Session
@ -16,6 +15,7 @@ from core.app.entities.app_invoke_entities import InvokeFrom, UserFrom
from core.app.file_access import DatabaseFileAccessController, FileAccessScope, bind_file_access_scope
from extensions.ext_database import db
from factories import file_factory
from graphon.file import File, FileUploadConfig
from libs.orjson import orjson_dumps
from models import Account, EndUser
from services.workflow_draft_variable_service import DraftVariableSaver as DraftVariableSaverImpl

View File

@ -7,7 +7,6 @@ from enum import IntEnum, auto
from typing import Any
from cachetools import TTLCache, cachedmethod
from graphon.runtime import GraphRuntimeState
from redis.exceptions import RedisError
from sqlalchemy.orm import DeclarativeMeta
@ -22,6 +21,7 @@ from core.app.entities.queue_entities import (
WorkflowQueueMessage,
)
from extensions.ext_redis import redis_client
from graphon.runtime import GraphRuntimeState
logger = logging.getLogger(__name__)

View File

@ -5,7 +5,6 @@ from collections.abc import Generator, Mapping, Sequence
from mimetypes import guess_extension
from typing import TYPE_CHECKING, Any, Union
from graphon.file import FileTransferMethod, FileType
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
from graphon.model_runtime.entities.message_entities import (
AssistantPromptMessage,
@ -41,6 +40,7 @@ from core.prompt.entities.advanced_prompt_entities import ChatModelMessage, Comp
from core.prompt.simple_prompt_transform import ModelMode, SimplePromptTransform
from core.tools.tool_file_manager import ToolFileManager
from extensions.ext_database import db
from graphon.file import FileTransferMethod, FileType
from models.enums import CreatorUserRole, MessageFileBelongsTo
from models.model import App, AppMode, Message, MessageAnnotation, MessageFile

View File

@ -1,7 +1,6 @@
import logging
from typing import cast
from graphon.file import File
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent
from sqlalchemy import select
@ -18,6 +17,7 @@ from core.model_manager import ModelInstance
from core.moderation.base import ModerationError
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
from extensions.ext_database import db
from graphon.file import File
from models.model import App, Conversation, Message
logger = logging.getLogger(__name__)

View File

@ -4,9 +4,8 @@ from __future__ import annotations
from typing import TYPE_CHECKING
from graphon.runtime import GraphRuntimeState
from core.workflow.system_variables import SystemVariableKey, get_system_text
from graphon.runtime import GraphRuntimeState
if TYPE_CHECKING:
from core.app.task_pipeline.based_generate_task_pipeline import BasedGenerateTaskPipeline

View File

@ -6,7 +6,6 @@ from dataclasses import dataclass
from datetime import datetime
from typing import Any, NewType, TypedDict, Union
from graphon.entities import WorkflowStartReason
from graphon.entities.pause_reason import HumanInputRequired
from graphon.enums import (
BuiltinNodeTypes,
@ -14,8 +13,6 @@ from graphon.enums import (
WorkflowNodeExecutionMetadataKey,
WorkflowNodeExecutionStatus,
)
from graphon.file import FILE_MODEL_IDENTITY, File
from graphon.runtime import GraphRuntimeState
from graphon.variables.segments import ArrayFileSegment, FileSegment, Segment
from graphon.variables.variables import Variable
from graphon.workflow_type_encoder import WorkflowRuntimeTypeConverter
@ -68,6 +65,9 @@ from core.workflow.human_input_forms import load_form_tokens_by_form_id
from core.workflow.system_variables import SystemVariableKey, system_variables_to_mapping
from core.workflow.workflow_entry import WorkflowEntry
from extensions.ext_database import db
from graphon.entities import WorkflowStartReason
from graphon.file import FILE_MODEL_IDENTITY, File
from graphon.runtime import GraphRuntimeState
from libs.datetime_utils import naive_utc_now
from models import Account, EndUser
from models.human_input import HumanInputForm

View File

@ -1,7 +1,6 @@
import logging
from typing import cast
from graphon.file import File
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent
from sqlalchemy import select
@ -16,6 +15,7 @@ from core.model_manager import ModelInstance
from core.moderation.base import ModerationError
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
from extensions.ext_database import db
from graphon.file import File
from models.model import App, Message
logger = logging.getLogger(__name__)

View File

@ -2,11 +2,7 @@ import logging
import time
from typing import cast
from graphon.entities import GraphInitParams
from graphon.enums import WorkflowType
from graphon.graph import Graph
from graphon.graph_events import GraphEngineEvent, GraphRunFailedEvent
from graphon.runtime import GraphRuntimeState, VariablePool
from graphon.variable_loader import VariableLoader
from graphon.variables.variables import RAGPipelineVariable, RAGPipelineVariableInput
from sqlalchemy import select
@ -27,6 +23,10 @@ from core.workflow.system_variables import build_bootstrap_variables, build_syst
from core.workflow.variable_pool_initializer import add_node_inputs_to_pool, add_variables_to_pool
from core.workflow.workflow_entry import WorkflowEntry
from extensions.ext_database import db
from graphon.entities import GraphInitParams
from graphon.graph import Graph
from graphon.graph_events import GraphEngineEvent, GraphRunFailedEvent
from graphon.runtime import GraphRuntimeState, VariablePool
from models.dataset import Document, Pipeline
from models.model import EndUser
from models.workflow import Workflow

View File

@ -8,9 +8,7 @@ from collections.abc import Generator, Mapping, Sequence
from typing import TYPE_CHECKING, Any, Literal, Union, overload
from flask import Flask, current_app
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.model_runtime.errors.invoke import InvokeAuthorizationError
from graphon.runtime import GraphRuntimeState
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader
from pydantic import ValidationError
from sqlalchemy import select
@ -38,6 +36,8 @@ from core.repositories import DifyCoreRepositoryFactory
from core.repositories.factory import WorkflowExecutionRepository, WorkflowNodeExecutionRepository
from extensions.ext_database import db
from factories import file_factory
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.runtime import GraphRuntimeState
from libs.flask_utils import preserve_flask_contexts
from models.account import Account
from models.enums import WorkflowRunTriggeredFrom

View File

@ -4,9 +4,6 @@ from collections.abc import Sequence
from typing import cast
from graphon.enums import WorkflowType
from graphon.graph_engine.command_channels import RedisChannel
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.runtime import GraphRuntimeState, VariablePool
from graphon.variable_loader import VariableLoader
from core.app.apps.base_app_queue_manager import AppQueueManager
@ -21,6 +18,9 @@ from core.workflow.variable_pool_initializer import add_node_inputs_to_pool, add
from core.workflow.workflow_entry import WorkflowEntry
from extensions.ext_redis import redis_client
from extensions.otel import WorkflowAppRunnerHandler, trace_span
from graphon.graph_engine.command_channels import RedisChannel
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.runtime import GraphRuntimeState, VariablePool
from libs.datetime_utils import naive_utc_now
from models.workflow import Workflow

View File

@ -4,9 +4,7 @@ from collections.abc import Callable, Generator
from contextlib import contextmanager
from typing import Union
from graphon.entities import WorkflowStartReason
from graphon.enums import WorkflowExecutionStatus
from graphon.runtime import GraphRuntimeState
from sqlalchemy.orm import Session
from constants.tts_auto_play_timeout import TTS_AUTO_PLAY_TIMEOUT, TTS_AUTO_PLAY_YIELD_CPU_TIME
@ -61,6 +59,8 @@ from core.base.tts import AppGeneratorTTSPublisher, AudioTrunk
from core.ops.ops_trace_manager import TraceQueueManager
from core.workflow.system_variables import build_system_variables
from extensions.ext_database import db
from graphon.entities import WorkflowStartReason
from graphon.runtime import GraphRuntimeState
from models import Account
from models.enums import CreatorUserRole
from models.model import EndUser

View File

@ -3,39 +3,8 @@ import time
from collections.abc import Mapping, Sequence
from typing import Any, cast
from graphon.entities import GraphInitParams
from graphon.entities.graph_config import NodeConfigDictAdapter
from graphon.entities.pause_reason import HumanInputRequired
from graphon.graph import Graph
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import (
GraphEngineEvent,
GraphRunAbortedEvent,
GraphRunFailedEvent,
GraphRunPartialSucceededEvent,
GraphRunPausedEvent,
GraphRunStartedEvent,
GraphRunSucceededEvent,
NodeRunAgentLogEvent,
NodeRunExceptionEvent,
NodeRunFailedEvent,
NodeRunHumanInputFormFilledEvent,
NodeRunHumanInputFormTimeoutEvent,
NodeRunIterationFailedEvent,
NodeRunIterationNextEvent,
NodeRunIterationStartedEvent,
NodeRunIterationSucceededEvent,
NodeRunLoopFailedEvent,
NodeRunLoopNextEvent,
NodeRunLoopStartedEvent,
NodeRunLoopSucceededEvent,
NodeRunRetrieverResourceEvent,
NodeRunRetryEvent,
NodeRunStartedEvent,
NodeRunStreamChunkEvent,
NodeRunSucceededEvent,
)
from graphon.runtime import GraphRuntimeState, VariablePool
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader, load_into_variable_pool
from pydantic import ValidationError
@ -78,6 +47,37 @@ from core.workflow.system_variables import (
from core.workflow.variable_pool_initializer import add_variables_to_pool
from core.workflow.workflow_entry import WorkflowEntry
from core.workflow.workflow_run_outputs import project_node_outputs_for_workflow_run
from graphon.entities import GraphInitParams
from graphon.graph import Graph
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import (
GraphEngineEvent,
GraphRunAbortedEvent,
GraphRunFailedEvent,
GraphRunPartialSucceededEvent,
GraphRunPausedEvent,
GraphRunStartedEvent,
GraphRunSucceededEvent,
NodeRunAgentLogEvent,
NodeRunExceptionEvent,
NodeRunFailedEvent,
NodeRunHumanInputFormFilledEvent,
NodeRunHumanInputFormTimeoutEvent,
NodeRunIterationFailedEvent,
NodeRunIterationNextEvent,
NodeRunIterationStartedEvent,
NodeRunIterationSucceededEvent,
NodeRunLoopFailedEvent,
NodeRunLoopNextEvent,
NodeRunLoopStartedEvent,
NodeRunLoopSucceededEvent,
NodeRunRetrieverResourceEvent,
NodeRunRetryEvent,
NodeRunStartedEvent,
NodeRunStreamChunkEvent,
NodeRunSucceededEvent,
)
from graphon.runtime import GraphRuntimeState, VariablePool
from models.workflow import Workflow
from tasks.mail_human_input_delivery_task import dispatch_human_input_email_task

View File

@ -2,13 +2,13 @@ from collections.abc import Mapping, Sequence
from enum import StrEnum
from typing import TYPE_CHECKING, Any, Optional
from graphon.file import File, FileUploadConfig
from graphon.model_runtime.entities.model_entities import AIModelEntity
from pydantic import BaseModel, ConfigDict, Field, ValidationInfo, field_validator
from constants import UUID_NIL
from core.app.app_config.entities import EasyUIBasedAppConfig, WorkflowUIBasedAppConfig
from core.entities.provider_configuration import ProviderModelBundle
from graphon.file import File, FileUploadConfig
if TYPE_CHECKING:
from core.ops.ops_trace_manager import TraceQueueManager

View File

@ -3,7 +3,6 @@ from datetime import datetime
from enum import StrEnum, auto
from typing import Any
from graphon.entities import WorkflowStartReason
from graphon.entities.pause_reason import PauseReason
from graphon.enums import NodeType, WorkflowNodeExecutionMetadataKey
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk
@ -11,6 +10,7 @@ from pydantic import BaseModel, ConfigDict, Field
from core.app.entities.agent_strategy import AgentStrategyInfo
from core.rag.entities.citation_metadata import RetrievalSourceMetadata
from graphon.entities import WorkflowStartReason
class QueueEvent(StrEnum):

View File

@ -2,7 +2,6 @@ from collections.abc import Mapping, Sequence
from enum import StrEnum
from typing import Any
from graphon.entities import WorkflowStartReason
from graphon.enums import WorkflowExecutionStatus, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMUsage
from graphon.nodes.human_input.entities import FormInput, UserAction
@ -10,6 +9,7 @@ from pydantic import BaseModel, ConfigDict, Field
from core.app.entities.agent_strategy import AgentStrategyInfo
from core.rag.entities.citation_metadata import RetrievalSourceMetadata
from graphon.entities import WorkflowStartReason
class AnnotationReplyAccount(BaseModel):

View File

@ -9,11 +9,10 @@ scope updates that matter to chat applications.
import logging
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphEngineEvent, NodeRunVariableUpdatedEvent
from core.workflow.system_variables import SystemVariableKey, get_system_text
from core.workflow.variable_prefixes import CONVERSATION_VARIABLE_NODE_ID
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphEngineEvent, NodeRunVariableUpdatedEvent
from services.conversation_variable_updater import ConversationVariableUpdater
logger = logging.getLogger(__name__)

View File

@ -1,14 +1,14 @@
from dataclasses import dataclass
from typing import Annotated, Literal, Self, TypeAlias
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphEngineEvent, GraphRunPausedEvent
from pydantic import BaseModel, Field
from sqlalchemy import Engine
from sqlalchemy.orm import Session, sessionmaker
from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity
from core.workflow.system_variables import SystemVariableKey, get_system_text
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphEngineEvent, GraphRunPausedEvent
from models.model import AppMode
from repositories.api_workflow_run_repository import APIWorkflowRunRepository
from repositories.factory import DifyAPIRepositoryFactory

View File

@ -4,9 +4,9 @@ from typing import ClassVar
from apscheduler.schedulers.background import BackgroundScheduler # type: ignore
from graphon.graph_engine.entities.commands import CommandType, GraphEngineCommand
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphEngineEvent
from services.workflow.entities import WorkflowScheduleCFSPlanEntity
from services.workflow.scheduler import CFSPlanScheduler, SchedulerCommand

View File

@ -2,12 +2,12 @@ import logging
from datetime import UTC, datetime
from typing import Any, ClassVar
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphEngineEvent, GraphRunFailedEvent, GraphRunPausedEvent, GraphRunSucceededEvent
from pydantic import TypeAdapter
from core.db.session_factory import session_factory
from core.workflow.system_variables import SystemVariableKey, get_system_text
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphEngineEvent, GraphRunFailedEvent, GraphRunPausedEvent, GraphRunSucceededEvent
from models.enums import WorkflowTriggerStatus
from repositories.sqlalchemy_workflow_trigger_log_repository import SQLAlchemyWorkflowTriggerLogRepository
from tasks.workflow_cfs_scheduler.cfs_scheduler import AsyncWorkflowCFSPlanEntity

View File

@ -4,7 +4,6 @@ from collections.abc import Generator
from threading import Thread
from typing import Any, Union, cast
from graphon.file import FileTransferMethod
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMResultChunk, LLMResultChunkDelta, LLMUsage
from graphon.model_runtime.entities.message_entities import (
AssistantPromptMessage,
@ -60,6 +59,7 @@ from core.prompt.utils.prompt_message_util import PromptMessageUtil
from core.prompt.utils.prompt_template_parser import PromptTemplateParser
from events.message_event import message_was_created
from extensions.ext_database import db
from graphon.file import FileTransferMethod
from libs.datetime_utils import naive_utc_now
from models.model import AppMode, Conversation, Message, MessageAgentThought, MessageFile, UploadFile

View File

@ -1,9 +1,8 @@
from typing import TypedDict
from core.tools.signature import sign_tool_file
from graphon.file import FileTransferMethod
from graphon.file import helpers as file_helpers
from core.tools.signature import sign_tool_file
from models.model import MessageFile, UploadFile
MAX_TOOL_FILE_EXTENSION_LENGTH = 10

View File

@ -9,7 +9,6 @@ import urllib.parse
from collections.abc import Generator
from typing import TYPE_CHECKING, Literal
from graphon.file import FileTransferMethod
from graphon.file.protocols import HttpResponseProtocol, WorkflowFileRuntimeProtocol
from graphon.file.runtime import set_workflow_file_runtime
@ -20,6 +19,7 @@ from core.helper.ssrf_proxy import ssrf_proxy
from core.tools.signature import sign_tool_file
from core.workflow.file_reference import parse_file_reference
from extensions.ext_storage import storage
from graphon.file import FileTransferMethod
if TYPE_CHECKING:
from graphon.file import File

View File

@ -9,8 +9,6 @@ from typing import TYPE_CHECKING, cast, final
from graphon.enums import BuiltinNodeTypes
from graphon.graph_engine.entities.commands import AbortCommand, CommandType
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphEngineEvent, GraphNodeEventBase, NodeRunSucceededEvent
from graphon.nodes.base.node import Node
from typing_extensions import override
@ -18,6 +16,8 @@ from core.app.entities.app_invoke_entities import DIFY_RUN_CONTEXT_KEY, DifyRunC
from core.app.llm import deduct_llm_quota, ensure_llm_quota_available
from core.errors.error import QuotaExceededError
from core.model_manager import ModelInstance
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphEngineEvent, GraphNodeEventBase, NodeRunSucceededEvent
if TYPE_CHECKING:
from graphon.nodes.llm.node import LLMNode

View File

@ -13,8 +13,6 @@ from dataclasses import dataclass
from typing import cast, final
from graphon.enums import BuiltinNodeTypes, NodeType
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphNodeEventBase
from graphon.nodes.base.node import Node
from opentelemetry import context as context_api
from opentelemetry.trace import Span, SpanKind, Tracer, get_tracer, set_span_in_context
@ -29,6 +27,8 @@ from extensions.otel.parser import (
ToolNodeOTelParser,
)
from extensions.otel.runtime import is_instrument_flag_enabled
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import GraphNodeEventBase
logger = logging.getLogger(__name__)

View File

@ -14,13 +14,21 @@ from dataclasses import dataclass
from datetime import datetime
from typing import Any, Union
from graphon.entities import WorkflowExecution, WorkflowNodeExecution
from graphon.enums import (
WorkflowExecutionStatus,
WorkflowNodeExecutionMetadataKey,
WorkflowNodeExecutionStatus,
WorkflowType,
)
from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity
from core.ops.entities.trace_entity import TraceTaskName
from core.ops.ops_trace_manager import TraceQueueManager, TraceTask
from core.repositories.factory import WorkflowExecutionRepository, WorkflowNodeExecutionRepository
from core.workflow.system_variables import SystemVariableKey
from core.workflow.variable_prefixes import SYSTEM_VARIABLE_NODE_ID
from core.workflow.workflow_run_outputs import project_node_outputs_for_workflow_run
from graphon.entities import WorkflowExecution, WorkflowNodeExecution
from graphon.graph_engine.layers import GraphEngineLayer
from graphon.graph_events import (
GraphEngineEvent,
@ -38,14 +46,6 @@ from graphon.graph_events import (
NodeRunSucceededEvent,
)
from graphon.node_events import NodeRunResult
from core.app.entities.app_invoke_entities import AdvancedChatAppGenerateEntity, WorkflowAppGenerateEntity
from core.ops.entities.trace_entity import TraceTaskName
from core.ops.ops_trace_manager import TraceQueueManager, TraceTask
from core.repositories.factory import WorkflowExecutionRepository, WorkflowNodeExecutionRepository
from core.workflow.system_variables import SystemVariableKey
from core.workflow.variable_prefixes import SYSTEM_VARIABLE_NODE_ID
from core.workflow.workflow_run_outputs import project_node_outputs_for_workflow_run
from libs.datetime_utils import naive_utc_now

View File

@ -4,8 +4,6 @@ from threading import Lock
from typing import Any, cast
from graphon.enums import WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
from graphon.file import File, FileTransferMethod, FileType, get_file_type_by_mime_type
from graphon.node_events import NodeRunResult, StreamChunkEvent, StreamCompletedEvent
from sqlalchemy import select
import contexts
@ -31,6 +29,8 @@ from core.plugin.impl.datasource import PluginDatasourceManager
from core.workflow.file_reference import build_file_reference
from core.workflow.nodes.datasource.entities import DatasourceParameter, OnlineDriveDownloadFileParam
from factories import file_factory
from graphon.file import File, FileTransferMethod, FileType, get_file_type_by_mime_type
from graphon.node_events import NodeRunResult, StreamChunkEvent, StreamCompletedEvent
from models.model import UploadFile
from models.tools import ToolFile
from services.datasource_provider_service import DatasourceProviderService

View File

@ -2,11 +2,10 @@ import logging
from collections.abc import Generator
from mimetypes import guess_extension, guess_type
from graphon.file import File, FileTransferMethod, FileType
from core.datasource.entities.datasource_entities import DatasourceMessage
from core.tools.tool_file_manager import ToolFileManager
from core.workflow.file_reference import parse_file_reference
from graphon.file import File, FileTransferMethod, FileType
from models.tools import ToolFile
logger = logging.getLogger(__name__)

View File

@ -6,7 +6,6 @@ from enum import StrEnum
from typing import TYPE_CHECKING, Any
from urllib.parse import urlparse
from graphon.file import helpers as file_helpers
from pydantic import BaseModel
from configs import dify_config
@ -16,6 +15,7 @@ from core.helper.provider_cache import NoOpProviderCredentialCache
from core.mcp.types import OAuthClientInformation, OAuthClientMetadata, OAuthTokens
from core.tools.entities.common_entities import I18nObject
from core.tools.entities.tool_entities import ToolProviderType
from graphon.file import helpers as file_helpers
if TYPE_CHECKING:
from models.tools import MCPToolProvider

View File

@ -1,14 +1,5 @@
from collections.abc import Sequence
from graphon.file import file_manager
from graphon.model_runtime.entities import (
AssistantPromptMessage,
ImagePromptMessageContent,
PromptMessage,
PromptMessageRole,
TextPromptMessageContent,
UserPromptMessage,
)
from graphon.model_runtime.entities.message_entities import PromptMessageContentUnionTypes
from sqlalchemy import select
from sqlalchemy.orm import sessionmaker
@ -19,6 +10,15 @@ from core.model_manager import ModelInstance
from core.prompt.utils.extract_thread_messages import extract_thread_messages
from extensions.ext_database import db
from factories import file_factory
from graphon.file import file_manager
from graphon.model_runtime.entities import (
AssistantPromptMessage,
ImagePromptMessageContent,
PromptMessage,
PromptMessageRole,
TextPromptMessageContent,
UserPromptMessage,
)
from models.model import AppMode, Conversation, Message, MessageFile
from models.workflow import Workflow
from repositories.api_workflow_run_repository import APIWorkflowRunRepository

View File

@ -1,7 +1,6 @@
import logging
from collections.abc import Sequence
from graphon.entities import WorkflowNodeExecution
from graphon.enums import BuiltinNodeTypes, WorkflowNodeExecutionMetadataKey
from opentelemetry.trace import SpanKind
from sqlalchemy.orm import sessionmaker
@ -60,6 +59,7 @@ from core.ops.entities.trace_entity import (
)
from core.repositories import DifyCoreRepositoryFactory
from extensions.ext_database import db
from graphon.entities import WorkflowNodeExecution
from models import WorkflowNodeExecutionTriggeredFrom
logger = logging.getLogger(__name__)

View File

@ -2,7 +2,6 @@ import json
from collections.abc import Mapping
from typing import Any
from graphon.entities import WorkflowNodeExecution
from graphon.enums import WorkflowNodeExecutionStatus
from opentelemetry.trace import Link, Status, StatusCode
@ -17,6 +16,7 @@ from core.ops.aliyun_trace.entities.semconv import (
)
from core.rag.models.document import Document
from extensions.ext_database import db
from graphon.entities import WorkflowNodeExecution
from models import EndUser
# Constants

View File

@ -6,7 +6,6 @@ import json
import logging
from datetime import datetime
from graphon.entities import WorkflowNodeExecution
from graphon.enums import WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
from opentelemetry.trace import Status, StatusCode
@ -43,6 +42,7 @@ from core.ops.tencent_trace.entities.semconv import (
from core.ops.tencent_trace.entities.tencent_trace_entity import SpanData
from core.ops.tencent_trace.utils import TencentTraceUtils
from core.rag.models.document import Document
from graphon.entities import WorkflowNodeExecution
logger = logging.getLogger(__name__)

View File

@ -7,7 +7,6 @@ import logging
from graphon.entities.workflow_node_execution import (
WorkflowNodeExecution,
)
from graphon.nodes import BuiltinNodeTypes
from sqlalchemy import select
from sqlalchemy.orm import Session, sessionmaker
@ -29,6 +28,7 @@ from core.ops.tencent_trace.span_builder import TencentSpanBuilder
from core.ops.tencent_trace.utils import TencentTraceUtils
from core.repositories import SQLAlchemyWorkflowNodeExecutionRepository
from extensions.ext_database import db
from graphon.nodes import BuiltinNodeTypes
from models import Account, App, TenantAccountJoin, WorkflowNodeExecutionTriggeredFrom
logger = logging.getLogger(__name__)

View File

@ -1,8 +1,7 @@
from typing import Any
from graphon.file import File
from core.tools.entities.tool_entities import ToolSelector
from graphon.file import File
def convert_parameters_to_plugin_format(parameters: dict[str, Any]) -> dict[str, Any]:

View File

@ -1,6 +1,15 @@
from collections.abc import Mapping, Sequence
from typing import cast
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
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.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 graphon.file import File, file_manager
from graphon.model_runtime.entities import (
AssistantPromptMessage,
@ -10,17 +19,8 @@ from graphon.model_runtime.entities import (
TextPromptMessageContent,
UserPromptMessage,
)
from graphon.model_runtime.entities.message_entities import ImagePromptMessageContent, PromptMessageContentUnionTypes
from graphon.runtime import VariablePool
from core.app.entities.app_invoke_entities import ModelConfigWithCredentialsEntity
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.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
class AdvancedPromptTransform(PromptTransform):
"""

View File

@ -4,7 +4,6 @@ from collections.abc import Mapping, Sequence
from enum import StrEnum, auto
from typing import TYPE_CHECKING, Any, cast
from graphon.file import file_manager
from graphon.model_runtime.entities.message_entities import (
ImagePromptMessageContent,
PromptMessage,
@ -20,6 +19,7 @@ from core.memory.token_buffer_memory import TokenBufferMemory
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 graphon.file import file_manager
from models.model import AppMode
if TYPE_CHECKING:

View File

@ -1,6 +1,7 @@
from collections.abc import Sequence
from typing import Any, cast
from core.prompt.simple_prompt_transform import ModelMode
from graphon.model_runtime.entities import (
AssistantPromptMessage,
AudioPromptMessageContent,
@ -11,8 +12,6 @@ from graphon.model_runtime.entities import (
TextPromptMessageContent,
)
from core.prompt.simple_prompt_transform import ModelMode
class PromptMessageUtil:
@staticmethod

View File

@ -274,6 +274,196 @@ class ProviderManager:
# Return the encapsulated object
return provider_configurations
def get_single_provider_configuration(self, tenant_id: str, provider_name: str) -> ProviderConfiguration | None:
"""
Get single provider configuration efficiently.
Only queries data for the specified provider instead of all providers.
:param tenant_id: workspace id
:param provider_name: provider name
:return: ProviderConfiguration or None if provider not found
"""
# Get provider entity from factory
model_provider_factory = ModelProviderFactory(model_runtime=self._model_runtime)
provider_entity = None
for entity in model_provider_factory.get_providers():
if entity.provider == provider_name:
provider_entity = entity
break
if not provider_entity:
return None
# Handle include, exclude filtering
if is_filtered(
include_set=dify_config.POSITION_PROVIDER_INCLUDES_SET,
exclude_set=dify_config.POSITION_PROVIDER_EXCLUDES_SET,
data=provider_entity,
name_func=lambda x: x.provider,
):
return None
# Query only records for this specific provider
provider_records = self._get_provider_records(tenant_id, provider_name)
provider_model_records = self._get_provider_model_records(tenant_id, provider_name)
provider_model_credentials = self._get_provider_model_credentials_single(tenant_id, provider_name)
provider_model_settings = self._get_provider_model_settings_single(tenant_id, provider_name)
provider_load_balancing_configs = self._get_provider_load_balancing_configs_single(tenant_id, provider_name)
preferred_provider_type_record = self._get_preferred_model_provider(tenant_id, provider_name)
provider_id_entity = ModelProviderID(provider_name)
if provider_id_entity.is_langgenius():
alt_provider_name = provider_id_entity.provider_name
if alt_provider_name != provider_name:
provider_model_records.extend(self._get_provider_model_records(tenant_id, alt_provider_name))
provider_model_credentials.extend(
self._get_provider_model_credentials_single(tenant_id, alt_provider_name)
)
if provider_model_settings is not None:
provider_model_settings.extend(
self._get_provider_model_settings_single(tenant_id, alt_provider_name) or []
)
if provider_load_balancing_configs is not None:
provider_load_balancing_configs.extend(
self._get_provider_load_balancing_configs_single(tenant_id, alt_provider_name) or []
)
# Convert to custom configuration
custom_configuration = self._to_custom_configuration(
tenant_id, provider_entity, provider_records, provider_model_records, provider_model_credentials
)
# Convert to system configuration
system_configuration = self._to_system_configuration(tenant_id, provider_entity, provider_records)
# Get preferred provider type
if preferred_provider_type_record:
preferred_provider_type = preferred_provider_type_record.preferred_provider_type
elif dify_config.EDITION == "CLOUD" and system_configuration.enabled:
preferred_provider_type = ProviderType.SYSTEM
elif custom_configuration.provider or custom_configuration.models:
preferred_provider_type = ProviderType.CUSTOM
elif system_configuration.enabled:
preferred_provider_type = ProviderType.SYSTEM
else:
preferred_provider_type = ProviderType.CUSTOM
using_provider_type = preferred_provider_type
has_valid_quota = any(quota_conf.is_valid for quota_conf in system_configuration.quota_configurations)
if preferred_provider_type == ProviderType.SYSTEM:
if not system_configuration.enabled or not has_valid_quota:
using_provider_type = ProviderType.CUSTOM
else:
if not custom_configuration.provider and not custom_configuration.models:
if system_configuration.enabled and has_valid_quota:
using_provider_type = ProviderType.SYSTEM
# Convert to model settings
model_settings = self._to_model_settings(
provider_entity=provider_entity,
provider_model_settings=provider_model_settings,
load_balancing_model_configs=provider_load_balancing_configs,
)
provider_configuration = ProviderConfiguration(
tenant_id=tenant_id,
provider=provider_entity,
preferred_provider_type=preferred_provider_type,
using_provider_type=using_provider_type,
system_configuration=system_configuration,
custom_configuration=custom_configuration,
model_settings=model_settings,
)
provider_configuration.bind_model_runtime(self._model_runtime)
return provider_configuration
@staticmethod
def _get_provider_records(tenant_id: str, provider_name: str) -> list[Provider]:
"""Get provider records for a specific provider name."""
provider_names = ProviderManager._get_provider_names(provider_name)
with Session(db.engine, expire_on_commit=False) as session:
stmt = select(Provider).where(
Provider.tenant_id == tenant_id,
Provider.provider_name.in_(provider_names),
Provider.is_valid == True,
)
return list(session.scalars(stmt))
@staticmethod
def _get_provider_model_records(tenant_id: str, provider_name: str) -> list[ProviderModel]:
"""Get provider model records for a specific provider name."""
provider_names = ProviderManager._get_provider_names(provider_name)
with Session(db.engine, expire_on_commit=False) as session:
stmt = select(ProviderModel).where(
ProviderModel.tenant_id == tenant_id,
ProviderModel.provider_name.in_(provider_names),
ProviderModel.is_valid == True,
)
return list(session.scalars(stmt))
@staticmethod
def _get_provider_model_credentials_single(tenant_id: str, provider_name: str) -> list[ProviderModelCredential]:
"""Get provider model credentials for a specific provider name."""
provider_names = ProviderManager._get_provider_names(provider_name)
with Session(db.engine, expire_on_commit=False) as session:
stmt = select(ProviderModelCredential).where(
ProviderModelCredential.tenant_id == tenant_id,
ProviderModelCredential.provider_name.in_(provider_names),
)
return list(session.scalars(stmt))
@staticmethod
def _get_provider_model_settings_single(tenant_id: str, provider_name: str) -> list[ProviderModelSetting] | None:
"""Get provider model settings for a specific provider name."""
provider_names = ProviderManager._get_provider_names(provider_name)
with Session(db.engine, expire_on_commit=False) as session:
stmt = select(ProviderModelSetting).where(
ProviderModelSetting.tenant_id == tenant_id,
ProviderModelSetting.provider_name.in_(provider_names),
)
results = list(session.scalars(stmt))
return results or None
@staticmethod
def _get_provider_load_balancing_configs_single(
tenant_id: str, provider_name: str
) -> list[LoadBalancingModelConfig] | None:
"""Get provider load balancing configs for a specific provider name."""
cache_key = f"tenant:{tenant_id}:model_load_balancing_enabled"
cache_result = redis_client.get(cache_key)
if cache_result is None:
model_load_balancing_enabled = FeatureService.get_features(tenant_id).model_load_balancing_enabled
redis_client.setex(cache_key, 120, str(model_load_balancing_enabled))
else:
cache_result = cache_result.decode("utf-8")
model_load_balancing_enabled = cache_result == "True"
if not model_load_balancing_enabled:
return None
provider_names = ProviderManager._get_provider_names(provider_name)
with Session(db.engine, expire_on_commit=False) as session:
stmt = select(LoadBalancingModelConfig).where(
LoadBalancingModelConfig.tenant_id == tenant_id,
LoadBalancingModelConfig.provider_name.in_(provider_names),
)
return list(session.scalars(stmt))
@staticmethod
def _get_preferred_model_provider(tenant_id: str, provider_name: str) -> TenantPreferredModelProvider | None:
"""Get preferred provider type for a specific provider."""
provider_names = ProviderManager._get_provider_names(provider_name)
with Session(db.engine, expire_on_commit=False) as session:
stmt = select(TenantPreferredModelProvider).where(
TenantPreferredModelProvider.tenant_id == tenant_id,
TenantPreferredModelProvider.provider_name.in_(provider_names),
)
# Return first match since provider_names may have multiple forms
results = list(session.scalars(stmt))
return results[0] if results else None
def get_provider_model_bundle(self, tenant_id: str, provider: str, model_type: ModelType) -> ProviderModelBundle:
"""
Get provider model bundle.
@ -282,10 +472,7 @@ class ProviderManager:
:param model_type: model type
:return:
"""
provider_configurations = self.get_configurations(tenant_id)
# get provider instance
provider_configuration = provider_configurations.get(provider)
provider_configuration = self.get_single_provider_configuration(tenant_id, provider)
if not provider_configuration:
raise ValueError(f"Provider {provider} does not exist.")

View File

@ -8,7 +8,6 @@ from typing import Any, cast
logger = logging.getLogger(__name__)
from graphon.file import File, FileTransferMethod, FileType, file_manager
from graphon.model_runtime.entities.llm_entities import LLMResult, LLMUsage
from graphon.model_runtime.entities.message_entities import (
ImagePromptMessageContent,
@ -43,6 +42,7 @@ from core.tools.utils.text_processing_utils import remove_leading_symbols
from core.workflow.file_reference import build_file_reference
from extensions.ext_database import db
from factories.file_factory import build_from_mapping
from graphon.file import File, FileTransferMethod, FileType, file_manager
from libs import helper
from models import UploadFile
from models.account import Account

View File

@ -2,9 +2,10 @@ from abc import ABC, abstractmethod
from collections.abc import Sequence
from typing import Any
from graphon.file import File
from pydantic import BaseModel, Field
from graphon.file import File
class ChildDocument(BaseModel):
"""Class for storing a piece of text and associated metadata."""

View File

@ -9,7 +9,6 @@ from collections.abc import Generator, Mapping
from typing import Any, Union, cast
from flask import Flask, current_app
from graphon.file import File, FileTransferMethod, FileType
from graphon.model_runtime.entities.llm_entities import LLMMode, LLMResult, LLMUsage
from graphon.model_runtime.entities.message_entities import PromptMessage, PromptMessageRole, PromptMessageTool
from graphon.model_runtime.entities.model_entities import ModelFeature, ModelType
@ -71,6 +70,7 @@ from core.workflow.nodes.knowledge_retrieval.retrieval import (
)
from extensions.ext_database import db
from extensions.ext_redis import redis_client
from graphon.file import File, FileTransferMethod, FileType
from libs.helper import parse_uuid_str_or_none
from libs.json_in_md_parser import parse_and_check_json_markdown
from models import UploadFile

View File

@ -8,11 +8,11 @@ providing improved performance by offloading database operations to background w
import logging
from typing import Union
from graphon.entities import WorkflowExecution
from sqlalchemy.engine import Engine
from sqlalchemy.orm import sessionmaker
from core.repositories.factory import WorkflowExecutionRepository
from graphon.entities import WorkflowExecution
from libs.helper import extract_tenant_id
from models import Account, CreatorUserRole, EndUser
from models.enums import WorkflowRunTriggeredFrom

View File

@ -9,7 +9,6 @@ import logging
from collections.abc import Sequence
from typing import Union
from graphon.entities import WorkflowNodeExecution
from sqlalchemy.engine import Engine
from sqlalchemy.orm import sessionmaker
@ -17,6 +16,7 @@ from core.repositories.factory import (
OrderConfig,
WorkflowNodeExecutionRepository,
)
from graphon.entities import WorkflowNodeExecution
from libs.helper import extract_tenant_id
from models import Account, CreatorUserRole, EndUser
from models.workflow import WorkflowNodeExecutionTriggeredFrom

View File

@ -9,11 +9,11 @@ from collections.abc import Sequence
from dataclasses import dataclass
from typing import Literal, Protocol, Union
from graphon.entities import WorkflowExecution, WorkflowNodeExecution
from sqlalchemy.engine import Engine
from sqlalchemy.orm import sessionmaker
from configs import dify_config
from graphon.entities import WorkflowExecution, WorkflowNodeExecution
from libs.module_loading import import_string
from models import Account, EndUser
from models.enums import WorkflowRunTriggeredFrom

View File

@ -6,13 +6,13 @@ import json
import logging
from typing import Union
from graphon.entities import WorkflowExecution
from graphon.enums import WorkflowExecutionStatus, WorkflowType
from graphon.workflow_type_encoder import WorkflowRuntimeTypeConverter
from sqlalchemy.engine import Engine
from sqlalchemy.orm import sessionmaker
from core.repositories.factory import WorkflowExecutionRepository
from graphon.entities import WorkflowExecution
from libs.helper import extract_tenant_id
from models import (
Account,

View File

@ -10,7 +10,6 @@ from concurrent.futures import ThreadPoolExecutor
from typing import Any, TypeVar, Union
import psycopg2.errors
from graphon.entities import WorkflowNodeExecution
from graphon.enums import WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
from graphon.model_runtime.utils.encoders import jsonable_encoder
from graphon.workflow_type_encoder import WorkflowRuntimeTypeConverter
@ -23,6 +22,7 @@ from tenacity import before_sleep_log, retry, retry_if_exception, stop_after_att
from configs import dify_config
from core.repositories.factory import OrderConfig, WorkflowNodeExecutionRepository
from extensions.ext_storage import storage
from graphon.entities import WorkflowNodeExecution
from libs.helper import extract_tenant_id
from libs.uuid_utils import uuidv7
from models import (

View File

@ -2,7 +2,6 @@ import io
from collections.abc import Generator
from typing import Any
from graphon.file import FileType
from graphon.file.file_manager import download
from graphon.model_runtime.entities.model_entities import ModelType
@ -11,6 +10,7 @@ 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 graphon.file import FileType
from services.model_provider_service import ModelProviderService

View File

@ -7,7 +7,6 @@ from datetime import UTC, datetime
from mimetypes import guess_type
from typing import Any, Union, cast
from graphon.file import FileTransferMethod, FileType
from yarl import URL
from core.app.entities.app_invoke_entities import InvokeFrom
@ -33,6 +32,7 @@ from core.tools.errors import (
from core.tools.utils.message_transformer import ToolFileMessageTransformer, safe_json_value
from core.tools.workflow_as_tool.tool import WorkflowTool
from extensions.ext_database import db
from graphon.file import FileTransferMethod, FileType
from models.enums import CreatorUserRole, MessageFileBelongsTo
from models.model import Message, MessageFile

View File

@ -10,13 +10,13 @@ from typing import Union
from uuid import uuid4
import httpx
from graphon.file import File, FileTransferMethod, get_file_type_by_mime_type
from configs import dify_config
from core.db.session_factory import session_factory
from core.helper import ssrf_proxy
from core.workflow.file_reference import build_file_reference
from extensions.ext_storage import storage
from graphon.file import File, FileTransferMethod, get_file_type_by_mime_type
from models.model import MessageFile
from models.tools import ToolFile

View File

@ -8,7 +8,6 @@ from threading import Lock
from typing import TYPE_CHECKING, Any, Literal, Optional, Protocol, TypedDict, Union, cast
import sqlalchemy as sa
from graphon.runtime import VariablePool
from sqlalchemy import select
from sqlalchemy.orm import Session
from yarl import URL
@ -26,6 +25,7 @@ from core.tools.plugin_tool.tool import PluginTool
from core.tools.utils.uuid_utils import is_valid_uuid
from core.tools.workflow_as_tool.provider import WorkflowToolProviderController
from extensions.ext_database import db
from graphon.runtime import VariablePool
from models.provider_ids import ToolProviderID
from services.enterprise.plugin_manager_service import PluginCredentialType
from services.tools.mcp_tools_manage_service import MCPToolManageService

View File

@ -8,11 +8,11 @@ from uuid import UUID
import numpy as np
import pytz
from graphon.file import File, FileTransferMethod, FileType
from core.tools.entities.tool_entities import ToolInvokeMessage
from core.tools.tool_file_manager import ToolFileManager
from core.workflow.file_reference import parse_file_reference
from graphon.file import File, FileTransferMethod, FileType
from libs.login import current_user
from models import Account

View File

@ -5,7 +5,6 @@ import logging
from collections.abc import Generator, Mapping, Sequence
from typing import Any, cast
from graphon.file import FILE_MODEL_IDENTITY, File, FileTransferMethod
from graphon.model_runtime.entities.llm_entities import LLMUsage, LLMUsageMetadata
from sqlalchemy import select
@ -22,6 +21,7 @@ from core.tools.entities.tool_entities import (
from core.tools.errors import ToolInvokeError
from core.workflow.file_reference import resolve_file_record_id
from factories.file_factory import build_from_mapping
from graphon.file import FILE_MODEL_IDENTITY, File, FileTransferMethod
from models import Account, Tenant
from models.model import App, EndUser
from models.utils.file_input_compat import build_file_from_stored_mapping

View File

@ -16,11 +16,12 @@ import bleach
import markdown
from graphon.enums import BuiltinNodeTypes
from graphon.nodes.base.variable_template_parser import VariableTemplateParser
from graphon.runtime import VariablePool
from graphon.variables.consts import SELECTORS_LENGTH
from markdown.extensions.tables import TableExtension
from pydantic import AliasChoices, BaseModel, ConfigDict, Field, TypeAdapter
from graphon.runtime import VariablePool
class DeliveryMethodType(enum.StrEnum):
WEBAPP = enum.auto()

View File

@ -9,14 +9,11 @@ from graphon.entities.graph_config import NodeConfigDict, NodeConfigDictAdapter
from graphon.enums import BuiltinNodeTypes, NodeType
from graphon.file.file_manager import file_manager
from graphon.graph.graph import NodeFactory
from graphon.model_runtime.memory import PromptMessageMemory
from graphon.model_runtime.model_providers.__base.large_language_model import LargeLanguageModel
from graphon.nodes.base.node import Node
from graphon.nodes.code.code_node import WorkflowCodeExecutor
from graphon.nodes.code.entities import CodeLanguage
from graphon.nodes.code.limits import CodeNodeLimits
from graphon.nodes.document_extractor import UnstructuredApiConfig
from graphon.nodes.http_request import build_http_request_config
from graphon.nodes.llm.entities import LLMNodeData
from graphon.nodes.parameter_extractor.entities import ParameterExtractorNodeData
from graphon.nodes.question_classifier.entities import QuestionClassifierNodeData
@ -56,6 +53,9 @@ from core.workflow.nodes.agent.runtime_support import AgentRuntimeSupport
from core.workflow.system_variables import SystemVariableKey, get_system_text, system_variable_selector
from core.workflow.template_rendering import CodeExecutorJinja2TemplateRenderer
from extensions.ext_database import db
from graphon.model_runtime.memory import PromptMessageMemory
from graphon.nodes.document_extractor import UnstructuredApiConfig
from graphon.nodes.http_request import build_http_request_config
from models.model import Conversation
if TYPE_CHECKING:

View File

@ -4,8 +4,6 @@ from collections.abc import Callable, Generator, Mapping, Sequence
from dataclasses import dataclass
from typing import TYPE_CHECKING, Any, cast
from graphon.file import FileTransferMethod, FileType
from graphon.model_runtime.entities import LLMMode
from graphon.model_runtime.entities.llm_entities import (
LLMResult,
LLMResultChunk,
@ -60,6 +58,8 @@ from core.tools.utils.message_transformer import ToolFileMessageTransformer
from core.workflow.file_reference import build_file_reference
from extensions.ext_database import db
from factories import file_factory
from graphon.file import FileTransferMethod, FileType
from graphon.model_runtime.entities import LLMMode
from models.dataset import SegmentAttachmentBinding
from models.model import UploadFile
from services.tools.builtin_tools_manage_service import BuiltinToolManageService
@ -76,12 +76,12 @@ from .human_input_compat import (
from .system_variables import SystemVariableKey, get_system_text
if TYPE_CHECKING:
from graphon.file import File
from graphon.nodes.llm.file_saver import LLMFileSaver
from graphon.nodes.tool.entities import ToolNodeData
from core.tools.__base.tool import Tool
from core.tools.entities.tool_entities import ToolInvokeMessage as CoreToolInvokeMessage
from graphon.file import File
_file_access_controller = DatabaseFileAccessController()

View File

@ -5,12 +5,12 @@ from typing import TYPE_CHECKING, Any
from graphon.entities.graph_config import NodeConfigDict
from graphon.enums import BuiltinNodeTypes, WorkflowNodeExecutionStatus
from graphon.node_events import NodeEventBase, NodeRunResult, StreamCompletedEvent
from graphon.nodes.base.node import Node
from graphon.nodes.base.variable_template_parser import VariableTemplateParser
from core.app.entities.app_invoke_entities import DIFY_RUN_CONTEXT_KEY, DifyRunContext
from core.workflow.system_variables import SystemVariableKey, get_system_text
from graphon.node_events import NodeEventBase, NodeRunResult, StreamCompletedEvent
from .entities import AgentNodeData
from .exceptions import (

View File

@ -4,16 +4,8 @@ from collections.abc import Generator, Mapping
from typing import Any, cast
from graphon.enums import BuiltinNodeTypes, NodeType, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
from graphon.file import File, FileTransferMethod, get_file_type_by_mime_type
from graphon.model_runtime.entities.llm_entities import LLMUsage, LLMUsageMetadata
from graphon.model_runtime.utils.encoders import jsonable_encoder
from graphon.node_events import (
AgentLogEvent,
NodeEventBase,
NodeRunResult,
StreamChunkEvent,
StreamCompletedEvent,
)
from graphon.variables.segments import ArrayFileSegment
from sqlalchemy import select
from sqlalchemy.orm import Session
@ -23,6 +15,14 @@ from core.tools.entities.tool_entities import ToolInvokeMessage
from core.tools.utils.message_transformer import ToolFileMessageTransformer
from extensions.ext_database import db
from factories import file_factory
from graphon.file import File, FileTransferMethod, get_file_type_by_mime_type
from graphon.node_events import (
AgentLogEvent,
NodeEventBase,
NodeRunResult,
StreamChunkEvent,
StreamCompletedEvent,
)
from models import ToolFile
from services.tools.builtin_tools_manage_service import BuiltinToolManageService

View File

@ -5,7 +5,6 @@ from collections.abc import Sequence
from typing import Any, cast
from graphon.model_runtime.entities.model_entities import AIModelEntity, ModelType
from graphon.runtime import VariablePool
from packaging.version import Version
from pydantic import ValidationError
from sqlalchemy import select
@ -21,6 +20,7 @@ from core.tools.entities.tool_entities import ToolIdentity, ToolParameter, ToolP
from core.tools.tool_manager import ToolManager
from core.workflow.system_variables import SystemVariableKey, get_system_text
from extensions.ext_database import db
from graphon.runtime import VariablePool
from models.model import Conversation
from .entities import AgentNodeData, AgentOldVersionModelFeatures, ParamsAutoGenerated

View File

@ -8,7 +8,6 @@ from graphon.enums import (
WorkflowNodeExecutionMetadataKey,
WorkflowNodeExecutionStatus,
)
from graphon.node_events import NodeRunResult, StreamCompletedEvent
from graphon.nodes.base.node import Node
from graphon.nodes.base.variable_template_parser import VariableTemplateParser
@ -18,6 +17,7 @@ from core.datasource.entities.datasource_entities import DatasourceProviderType
from core.plugin.impl.exc import PluginDaemonClientSideError
from core.workflow.file_reference import resolve_file_record_id
from core.workflow.system_variables import SystemVariableKey, get_system_segment
from graphon.node_events import NodeRunResult, StreamCompletedEvent
from .entities import DatasourceNodeData, DatasourceParameter, OnlineDriveDownloadFileParam
from .exc import DatasourceNodeError

View File

@ -4,7 +4,6 @@ from typing import TYPE_CHECKING, Any
from graphon.entities.graph_config import NodeConfigDict
from graphon.enums import NodeExecutionType, WorkflowNodeExecutionStatus
from graphon.node_events import NodeRunResult
from graphon.nodes.base.node import Node
from graphon.nodes.base.template import Template
@ -13,6 +12,7 @@ from core.rag.index_processor.index_processor_base import SummaryIndexSettingDic
from core.rag.summary_index.summary_index import SummaryIndex
from core.workflow.nodes.knowledge_index import KNOWLEDGE_INDEX_NODE_TYPE
from core.workflow.system_variables import SystemVariableKey, get_system_segment, get_system_text
from graphon.node_events import NodeRunResult
from .entities import KnowledgeIndexNodeData
from .exc import (

View File

@ -8,7 +8,6 @@ import logging
from collections.abc import Mapping, Sequence
from typing import TYPE_CHECKING, Any, Literal
from graphon.entities import GraphInitParams
from graphon.entities.graph_config import NodeConfigDict
from graphon.enums import (
BuiltinNodeTypes,
@ -17,14 +16,7 @@ from graphon.enums import (
)
from graphon.model_runtime.entities.llm_entities import LLMUsage
from graphon.model_runtime.utils.encoders import jsonable_encoder
from graphon.node_events import NodeRunResult
from graphon.nodes.base import LLMUsageTrackingMixin
from graphon.nodes.base.node import Node
from graphon.variables import (
ArrayFileSegment,
FileSegment,
StringSegment,
)
from graphon.variables.segments import ArrayObjectSegment
from core.app.app_config.entities import DatasetRetrieveConfigEntity
@ -32,6 +24,14 @@ from core.app.entities.app_invoke_entities import DIFY_RUN_CONTEXT_KEY, DifyRunC
from core.rag.data_post_processor.data_post_processor import RerankingModelDict, WeightsDict
from core.rag.retrieval.dataset_retrieval import DatasetRetrieval
from core.workflow.file_reference import parse_file_reference
from graphon.entities import GraphInitParams
from graphon.node_events import NodeRunResult
from graphon.nodes.base import LLMUsageTrackingMixin
from graphon.variables import (
ArrayFileSegment,
FileSegment,
StringSegment,
)
from .entities import (
Condition,

View File

@ -1,10 +1,10 @@
from typing import Any, Literal, Protocol
from graphon.model_runtime.entities import LLMUsage
from graphon.nodes.llm.entities import ModelConfig
from pydantic import BaseModel, Field
from core.rag.data_post_processor.data_post_processor import RerankingModelDict, WeightsDict
from graphon.model_runtime.entities import LLMUsage
from .entities import MetadataFilteringCondition

View File

@ -2,11 +2,11 @@ from collections.abc import Mapping
from typing import Any
from graphon.enums import NodeExecutionType, WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
from graphon.node_events import NodeRunResult
from graphon.nodes.base.node import Node
from core.trigger.constants import TRIGGER_PLUGIN_NODE_TYPE
from core.workflow.variable_prefixes import SYSTEM_VARIABLE_NODE_ID
from graphon.node_events import NodeRunResult
from .entities import TriggerEventNodeData

View File

@ -1,11 +1,11 @@
from collections.abc import Mapping
from graphon.enums import NodeExecutionType, WorkflowNodeExecutionStatus
from graphon.node_events import NodeRunResult
from graphon.nodes.base.node import Node
from core.trigger.constants import TRIGGER_SCHEDULE_NODE_TYPE
from core.workflow.variable_prefixes import SYSTEM_VARIABLE_NODE_ID
from graphon.node_events import NodeRunResult
from .entities import TriggerScheduleNodeData

View File

@ -3,8 +3,6 @@ from collections.abc import Mapping
from typing import Any
from graphon.enums import NodeExecutionType, WorkflowNodeExecutionStatus
from graphon.file import FileTransferMethod
from graphon.node_events import NodeRunResult
from graphon.nodes.base.node import Node
from graphon.nodes.protocols import FileReferenceFactoryProtocol
from graphon.variables.types import SegmentType
@ -14,6 +12,8 @@ from core.trigger.constants import TRIGGER_WEBHOOK_NODE_TYPE
from core.workflow.file_reference import resolve_file_record_id
from core.workflow.variable_prefixes import SYSTEM_VARIABLE_NODE_ID
from factories.variable_factory import build_segment_with_type
from graphon.file import FileTransferMethod
from graphon.node_events import NodeRunResult
from .entities import ContentType, WebhookData

View File

@ -7,10 +7,11 @@ from typing import Any, Protocol, cast
from uuid import uuid4
from graphon.enums import BuiltinNodeTypes
from graphon.variables import build_segment, segment_to_variable
from graphon.variables.segments import Segment
from graphon.variables.variables import RAGPipelineVariableInput, Variable
from graphon.variables import build_segment, segment_to_variable
from .variable_prefixes import (
CONVERSATION_VARIABLE_NODE_ID,
ENVIRONMENT_VARIABLE_NODE_ID,

View File

@ -1,9 +1,10 @@
from collections.abc import Mapping, Sequence
from typing import Any
from graphon.runtime import VariablePool
from graphon.variables.variables import Variable
from graphon.runtime import VariablePool
def add_variables_to_pool(variable_pool: VariablePool, variables: Sequence[Variable]) -> None:
for variable in variables:

View File

@ -3,18 +3,9 @@ import time
from collections.abc import Generator, Mapping, Sequence
from typing import Any
from graphon.entities import GraphInitParams
from graphon.entities.graph_config import NodeConfigDictAdapter
from graphon.errors import WorkflowNodeRunFailedError
from graphon.file import File
from graphon.graph import Graph
from graphon.graph_engine import GraphEngine, GraphEngineConfig
from graphon.graph_engine.command_channels import CommandChannel, InMemoryChannel
from graphon.graph_engine.layers import DebugLoggingLayer, ExecutionLimitsLayer
from graphon.graph_events import GraphEngineEvent, GraphNodeEventBase, GraphRunFailedEvent
from graphon.nodes import BuiltinNodeTypes
from graphon.nodes.base.node import Node
from graphon.runtime import ChildGraphNotFoundError, GraphRuntimeState, VariablePool
from graphon.variable_loader import DUMMY_VARIABLE_LOADER, VariableLoader, load_into_variable_pool
from configs import dify_config
@ -35,6 +26,15 @@ from core.workflow.variable_pool_initializer import add_node_inputs_to_pool, add
from core.workflow.variable_prefixes import ENVIRONMENT_VARIABLE_NODE_ID
from extensions.otel.runtime import is_instrument_flag_enabled
from factories import file_factory
from graphon.entities import GraphInitParams
from graphon.file import File
from graphon.graph import Graph
from graphon.graph_engine import GraphEngine, GraphEngineConfig
from graphon.graph_engine.command_channels import CommandChannel, InMemoryChannel
from graphon.graph_engine.layers import DebugLoggingLayer, ExecutionLimitsLayer
from graphon.graph_events import GraphEngineEvent, GraphNodeEventBase, GraphRunFailedEvent
from graphon.nodes import BuiltinNodeTypes
from graphon.runtime import ChildGraphNotFoundError, GraphRuntimeState, VariablePool
from models.workflow import Workflow
logger = logging.getLogger(__name__)

View File

@ -1,12 +1,12 @@
import logging
from graphon.nodes import BuiltinNodeTypes
from graphon.nodes.tool.entities import ToolEntity
from core.tools.entities.tool_entities import ToolProviderType
from core.tools.tool_manager import ToolManager
from core.tools.utils.configuration import ToolParameterConfigurationManager
from events.app_event import app_draft_workflow_was_synced
from graphon.nodes import BuiltinNodeTypes
logger = logging.getLogger(__name__)

View File

@ -1,11 +1,11 @@
from typing import cast
from graphon.nodes import BuiltinNodeTypes
from sqlalchemy import delete, select
from core.workflow.nodes.knowledge_retrieval.entities import KnowledgeRetrievalNodeData
from events.app_event import app_published_workflow_was_updated
from extensions.ext_database import db
from graphon.nodes import BuiltinNodeTypes
from models.dataset import AppDatasetJoin
from models.workflow import Workflow

View File

@ -4,7 +4,6 @@ import os
import time
from typing import Union
from graphon.entities import WorkflowExecution
from graphon.workflow_type_encoder import WorkflowRuntimeTypeConverter
from sqlalchemy.engine import Engine
from sqlalchemy.orm import sessionmaker
@ -12,6 +11,7 @@ from sqlalchemy.orm import sessionmaker
from core.repositories.factory import WorkflowExecutionRepository
from core.repositories.sqlalchemy_workflow_execution_repository import SQLAlchemyWorkflowExecutionRepository
from extensions.logstore.aliyun_logstore import AliyunLogStore
from graphon.entities import WorkflowExecution
from libs.helper import extract_tenant_id
from models import (
Account,

View File

@ -13,7 +13,6 @@ from collections.abc import Sequence
from datetime import datetime
from typing import Any, Union
from graphon.entities import WorkflowNodeExecution
from graphon.enums import WorkflowNodeExecutionMetadataKey, WorkflowNodeExecutionStatus
from graphon.model_runtime.utils.encoders import jsonable_encoder
from graphon.workflow_type_encoder import WorkflowRuntimeTypeConverter
@ -25,6 +24,7 @@ from core.repositories.factory import OrderConfig, WorkflowNodeExecutionReposito
from extensions.logstore.aliyun_logstore import AliyunLogStore
from extensions.logstore.repositories import safe_float, safe_int
from extensions.logstore.sql_escape import escape_identifier
from graphon.entities import WorkflowNodeExecution
from libs.helper import extract_tenant_id
from models import (
Account,

View File

@ -11,16 +11,16 @@ import json
from typing import Any, Protocol
from graphon.enums import BuiltinNodeTypes
from graphon.file import File
from graphon.graph_events import GraphNodeEventBase
from graphon.nodes.base.node import Node
from graphon.variables import Segment
from opentelemetry.trace import Span
from opentelemetry.trace.status import Status, StatusCode
from pydantic import BaseModel
from configs import dify_config
from extensions.otel.semconv.gen_ai import ChainAttributes, GenAIAttributes
from graphon.file import File
from graphon.graph_events import GraphNodeEventBase
from graphon.variables import Segment
def should_include_content() -> bool:

View File

@ -6,12 +6,12 @@ import logging
from collections.abc import Mapping
from typing import Any
from graphon.graph_events import GraphNodeEventBase
from graphon.nodes.base.node import Node
from opentelemetry.trace import Span
from extensions.otel.parser.base import DefaultNodeOTelParser, safe_json_dumps
from extensions.otel.semconv.gen_ai import LLMAttributes
from graphon.graph_events import GraphNodeEventBase
logger = logging.getLogger(__name__)

View File

@ -6,13 +6,13 @@ import logging
from collections.abc import Sequence
from typing import Any
from graphon.graph_events import GraphNodeEventBase
from graphon.nodes.base.node import Node
from graphon.variables import Segment
from opentelemetry.trace import Span
from extensions.otel.parser.base import DefaultNodeOTelParser, safe_json_dumps
from extensions.otel.semconv.gen_ai import RetrieverAttributes
from graphon.graph_events import GraphNodeEventBase
from graphon.variables import Segment
logger = logging.getLogger(__name__)

View File

@ -3,13 +3,13 @@ Parser for tool nodes that captures tool-specific metadata.
"""
from graphon.enums import WorkflowNodeExecutionMetadataKey
from graphon.graph_events import GraphNodeEventBase
from graphon.nodes.base.node import Node
from graphon.nodes.tool.entities import ToolNodeData
from opentelemetry.trace import Span
from extensions.otel.parser.base import DefaultNodeOTelParser, safe_json_dumps
from extensions.otel.semconv.gen_ai import ToolAttributes
from graphon.graph_events import GraphNodeEventBase
class ToolNodeOTelParser:

View File

@ -7,12 +7,12 @@ import uuid
from collections.abc import Mapping, Sequence
from typing import Any
from graphon.file import File, FileTransferMethod, FileType, FileUploadConfig, helpers, standardize_file_type
from sqlalchemy import select
from core.app.file_access import FileAccessControllerProtocol
from core.workflow.file_reference import build_file_reference
from extensions.ext_database import db
from graphon.file import File, FileTransferMethod, FileType, FileUploadConfig, helpers, standardize_file_type
from models import ToolFile, UploadFile
from .common import resolve_mapping_file_id

View File

@ -4,9 +4,8 @@ from __future__ import annotations
from collections.abc import Sequence
from graphon.file import File, FileBelongsTo, FileTransferMethod, FileUploadConfig
from core.app.file_access import FileAccessControllerProtocol
from graphon.file import File, FileBelongsTo, FileTransferMethod, FileUploadConfig
from models import MessageFile
from .builders import build_from_mapping

View File

@ -5,12 +5,12 @@ from __future__ import annotations
import uuid
from collections.abc import Mapping, Sequence
from graphon.file import File, FileTransferMethod
from sqlalchemy import select
from sqlalchemy.orm import Session
from core.app.file_access import FileAccessControllerProtocol
from core.workflow.file_reference import build_file_reference, parse_file_reference
from graphon.file import File, FileTransferMethod
from models import ToolFile, UploadFile

View File

@ -3,9 +3,10 @@ from __future__ import annotations
from datetime import datetime
from typing import Any, TypeAlias
from graphon.file import File
from pydantic import BaseModel, ConfigDict, Field, field_validator, model_validator
from graphon.file import File
JSONValue: TypeAlias = Any

View File

@ -3,9 +3,10 @@ from __future__ import annotations
from datetime import datetime
from flask_restx import fields
from graphon.file import helpers as file_helpers
from pydantic import BaseModel, ConfigDict, computed_field, field_validator
from graphon.file import helpers as file_helpers
simple_account_fields = {
"id": fields.String,
"name": fields.String,

View File

@ -4,11 +4,11 @@ from datetime import datetime
from typing import TypeAlias
from uuid import uuid4
from graphon.file import File
from pydantic import BaseModel, ConfigDict, Field, field_validator
from core.entities.execution_extra_content import ExecutionExtraContentDomainModel
from fields.conversation_fields import AgentThought, JSONValue, MessageFile
from graphon.file import File
JSONValueType: TypeAlias = JSONValue

View File

@ -1,4 +1,5 @@
from flask_restx import fields
from graphon.file import File

View File

@ -1,8 +1,8 @@
from flask_restx import fields
from graphon.variables import SecretVariable, SegmentType, VariableBase
from core.helper import encrypter
from fields.member_fields import simple_account_fields
from graphon.variables import SecretVariable, SegmentType, VariableBase
from libs.helper import TimestampField
from ._value_type_serializer import serialize_value_type

View File

@ -16,7 +16,6 @@ from zoneinfo import available_timezones
from flask import Response, stream_with_context
from flask_restx import fields
from graphon.file import helpers as file_helpers
from graphon.model_runtime.utils.encoders import jsonable_encoder
from pydantic import BaseModel
from pydantic.functional_validators import AfterValidator
@ -24,6 +23,7 @@ from pydantic.functional_validators import AfterValidator
from configs import dify_config
from core.app.features.rate_limiting.rate_limit import RateLimitGenerator
from extensions.ext_redis import redis_client
from graphon.file import helpers as file_helpers
if TYPE_CHECKING:
from models import Account

View File

@ -15,8 +15,6 @@ import sqlalchemy as sa
from flask import request
from flask_login import UserMixin # type: ignore[import-untyped]
from graphon.enums import WorkflowExecutionStatus
from graphon.file import FILE_MODEL_IDENTITY, File, FileTransferMethod, FileType
from graphon.file import helpers as file_helpers
from sqlalchemy import BigInteger, Float, Index, PrimaryKeyConstraint, String, exists, func, select, text
from sqlalchemy.orm import Mapped, Session, mapped_column
from typing_extensions import TypedDict
@ -25,6 +23,8 @@ from configs import dify_config
from constants import DEFAULT_FILE_NUMBER_LIMITS
from core.tools.signature import sign_tool_file
from extensions.storage.storage_type import StorageType
from graphon.file import FILE_MODEL_IDENTITY, File, FileTransferMethod, FileType
from graphon.file import helpers as file_helpers
from libs.helper import generate_string # type: ignore[import-not-found]
from libs.uuid_utils import uuidv7
from models.utils.file_input_compat import build_file_from_input_mapping

Some files were not shown because too many files have changed in this diff Show More