mirror of https://github.com/langgenius/dify.git
feat: add inference for VersionedMemory type when deserializing
This commit is contained in:
parent
2c765ccfae
commit
8563ae5511
|
|
@ -20,7 +20,7 @@ from core.variables.segments import (
|
|||
NoneSegment,
|
||||
ObjectSegment,
|
||||
Segment,
|
||||
StringSegment,
|
||||
StringSegment, VersionedMemorySegment, VersionedMemoryValue,
|
||||
)
|
||||
from core.variables.types import SegmentType
|
||||
from core.variables.variables import (
|
||||
|
|
@ -38,7 +38,7 @@ from core.variables.variables import (
|
|||
ObjectVariable,
|
||||
SecretVariable,
|
||||
StringVariable,
|
||||
Variable,
|
||||
Variable, VersionedMemoryVariable,
|
||||
)
|
||||
from core.workflow.constants import CONVERSATION_VARIABLE_NODE_ID, ENVIRONMENT_VARIABLE_NODE_ID
|
||||
|
||||
|
|
@ -66,6 +66,7 @@ SEGMENT_TO_VARIABLE_MAP = {
|
|||
NoneSegment: NoneVariable,
|
||||
ObjectSegment: ObjectVariable,
|
||||
StringSegment: StringVariable,
|
||||
VersionedMemorySegment: VersionedMemoryVariable
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -182,6 +183,7 @@ _segment_factory: Mapping[SegmentType, type[Segment]] = {
|
|||
SegmentType.FILE: FileSegment,
|
||||
SegmentType.BOOLEAN: BooleanSegment,
|
||||
SegmentType.OBJECT: ObjectSegment,
|
||||
SegmentType.VERSIONED_MEMORY: VersionedMemorySegment,
|
||||
# Array types
|
||||
SegmentType.ARRAY_ANY: ArrayAnySegment,
|
||||
SegmentType.ARRAY_STRING: ArrayStringSegment,
|
||||
|
|
@ -248,6 +250,12 @@ def build_segment_with_type(segment_type: SegmentType, value: Any) -> Segment:
|
|||
else:
|
||||
raise TypeMismatchError(f"Type mismatch: expected {segment_type}, but got empty list")
|
||||
|
||||
if segment_type == SegmentType.VERSIONED_MEMORY:
|
||||
return VersionedMemorySegment(
|
||||
value_type=segment_type,
|
||||
value=VersionedMemoryValue.model_validate(value)
|
||||
)
|
||||
|
||||
inferred_type = SegmentType.infer_segment_type(value)
|
||||
# Type compatibility checking
|
||||
if inferred_type is None:
|
||||
|
|
|
|||
Loading…
Reference in New Issue