node_entities.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. from collections.abc import Mapping
  2. from enum import Enum
  3. from typing import Any, Optional
  4. from pydantic import BaseModel
  5. from core.model_runtime.entities.llm_entities import LLMUsage
  6. from models.workflow import WorkflowNodeExecutionStatus
  7. class NodeRunMetadataKey(str, Enum):
  8. """
  9. Node Run Metadata Key.
  10. """
  11. TOTAL_TOKENS = "total_tokens"
  12. TOTAL_PRICE = "total_price"
  13. CURRENCY = "currency"
  14. TOOL_INFO = "tool_info"
  15. ITERATION_ID = "iteration_id"
  16. ITERATION_INDEX = "iteration_index"
  17. PARALLEL_ID = "parallel_id"
  18. PARALLEL_START_NODE_ID = "parallel_start_node_id"
  19. PARENT_PARALLEL_ID = "parent_parallel_id"
  20. PARENT_PARALLEL_START_NODE_ID = "parent_parallel_start_node_id"
  21. class NodeRunResult(BaseModel):
  22. """
  23. Node Run Result.
  24. """
  25. status: WorkflowNodeExecutionStatus = WorkflowNodeExecutionStatus.RUNNING
  26. inputs: Optional[Mapping[str, Any]] = None # node inputs
  27. process_data: Optional[dict[str, Any]] = None # process data
  28. outputs: Optional[dict[str, Any]] = None # node outputs
  29. metadata: Optional[dict[NodeRunMetadataKey, Any]] = None # node metadata
  30. llm_usage: Optional[LLMUsage] = None # llm usage
  31. edge_source_handle: Optional[str] = None # source handle id of node with multiple branches
  32. error: Optional[str] = None # error message if status is failed