mirror of
https://github.com/langgenius/dify.git
synced 2026-04-29 04:26:30 +08:00
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,
|
NoneSegment,
|
||||||
ObjectSegment,
|
ObjectSegment,
|
||||||
Segment,
|
Segment,
|
||||||
StringSegment,
|
StringSegment, VersionedMemorySegment, VersionedMemoryValue,
|
||||||
)
|
)
|
||||||
from core.variables.types import SegmentType
|
from core.variables.types import SegmentType
|
||||||
from core.variables.variables import (
|
from core.variables.variables import (
|
||||||
@ -38,7 +38,7 @@ from core.variables.variables import (
|
|||||||
ObjectVariable,
|
ObjectVariable,
|
||||||
SecretVariable,
|
SecretVariable,
|
||||||
StringVariable,
|
StringVariable,
|
||||||
Variable,
|
Variable, VersionedMemoryVariable,
|
||||||
)
|
)
|
||||||
from core.workflow.constants import CONVERSATION_VARIABLE_NODE_ID, ENVIRONMENT_VARIABLE_NODE_ID
|
from core.workflow.constants import CONVERSATION_VARIABLE_NODE_ID, ENVIRONMENT_VARIABLE_NODE_ID
|
||||||
|
|
||||||
@ -66,6 +66,7 @@ SEGMENT_TO_VARIABLE_MAP = {
|
|||||||
NoneSegment: NoneVariable,
|
NoneSegment: NoneVariable,
|
||||||
ObjectSegment: ObjectVariable,
|
ObjectSegment: ObjectVariable,
|
||||||
StringSegment: StringVariable,
|
StringSegment: StringVariable,
|
||||||
|
VersionedMemorySegment: VersionedMemoryVariable
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -182,6 +183,7 @@ _segment_factory: Mapping[SegmentType, type[Segment]] = {
|
|||||||
SegmentType.FILE: FileSegment,
|
SegmentType.FILE: FileSegment,
|
||||||
SegmentType.BOOLEAN: BooleanSegment,
|
SegmentType.BOOLEAN: BooleanSegment,
|
||||||
SegmentType.OBJECT: ObjectSegment,
|
SegmentType.OBJECT: ObjectSegment,
|
||||||
|
SegmentType.VERSIONED_MEMORY: VersionedMemorySegment,
|
||||||
# Array types
|
# Array types
|
||||||
SegmentType.ARRAY_ANY: ArrayAnySegment,
|
SegmentType.ARRAY_ANY: ArrayAnySegment,
|
||||||
SegmentType.ARRAY_STRING: ArrayStringSegment,
|
SegmentType.ARRAY_STRING: ArrayStringSegment,
|
||||||
@ -248,6 +250,12 @@ def build_segment_with_type(segment_type: SegmentType, value: Any) -> Segment:
|
|||||||
else:
|
else:
|
||||||
raise TypeMismatchError(f"Type mismatch: expected {segment_type}, but got empty list")
|
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)
|
inferred_type = SegmentType.infer_segment_type(value)
|
||||||
# Type compatibility checking
|
# Type compatibility checking
|
||||||
if inferred_type is None:
|
if inferred_type is None:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user