mirror of
https://github.com/langgenius/dify.git
synced 2026-01-19 11:45:05 +08:00
feat: add prompt variable message
This commit is contained in:
@ -17,7 +17,7 @@ from controllers.console.wraps import account_initialization_required, edit_perm
|
|||||||
from controllers.web.error import InvalidArgumentError, NotFoundError
|
from controllers.web.error import InvalidArgumentError, NotFoundError
|
||||||
from core.file import helpers as file_helpers
|
from core.file import helpers as file_helpers
|
||||||
from core.variables.segment_group import SegmentGroup
|
from core.variables.segment_group import SegmentGroup
|
||||||
from core.variables.segments import ArrayFileSegment, FileSegment, Segment
|
from core.variables.segments import ArrayFileSegment, ArrayPromptMessageSegment, FileSegment, Segment
|
||||||
from core.variables.types import SegmentType
|
from core.variables.types import SegmentType
|
||||||
from core.workflow.constants import CONVERSATION_VARIABLE_NODE_ID, SYSTEM_VARIABLE_NODE_ID
|
from core.workflow.constants import CONVERSATION_VARIABLE_NODE_ID, SYSTEM_VARIABLE_NODE_ID
|
||||||
from extensions.ext_database import db
|
from extensions.ext_database import db
|
||||||
@ -58,6 +58,8 @@ def _convert_values_to_json_serializable_object(value: Segment):
|
|||||||
return value.value.model_dump()
|
return value.value.model_dump()
|
||||||
elif isinstance(value, ArrayFileSegment):
|
elif isinstance(value, ArrayFileSegment):
|
||||||
return [i.model_dump() for i in value.value]
|
return [i.model_dump() for i in value.value]
|
||||||
|
elif isinstance(value, ArrayPromptMessageSegment):
|
||||||
|
return value.to_object()
|
||||||
elif isinstance(value, SegmentGroup):
|
elif isinstance(value, SegmentGroup):
|
||||||
return [_convert_values_to_json_serializable_object(i) for i in value.value]
|
return [_convert_values_to_json_serializable_object(i) for i in value.value]
|
||||||
else:
|
else:
|
||||||
|
|||||||
@ -285,6 +285,10 @@ def build_segment_with_type(segment_type: SegmentType, value: Any) -> Segment:
|
|||||||
):
|
):
|
||||||
segment_class = _segment_factory[inferred_type]
|
segment_class = _segment_factory[inferred_type]
|
||||||
return segment_class(value_type=inferred_type, value=value)
|
return segment_class(value_type=inferred_type, value=value)
|
||||||
|
elif segment_type == SegmentType.ARRAY_PROMPT_MESSAGE and inferred_type == SegmentType.ARRAY_OBJECT:
|
||||||
|
# PromptMessage serializes to dict, so ARRAY_OBJECT is compatible with ARRAY_PROMPT_MESSAGE
|
||||||
|
segment_class = _segment_factory[segment_type]
|
||||||
|
return segment_class(value_type=segment_type, value=value)
|
||||||
else:
|
else:
|
||||||
raise TypeMismatchError(f"Type mismatch: expected {segment_type}, but got {inferred_type}, value={value}")
|
raise TypeMismatchError(f"Type mismatch: expected {segment_type}, but got {inferred_type}, value={value}")
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user