node_entities.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. from collections.abc import Mapping
  2. from enum import StrEnum
  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(StrEnum):
  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. PARALLEL_MODE_RUN_ID = "parallel_mode_run_id"
  22. ITERATION_DURATION_MAP = "iteration_duration_map" # single iteration duration if iteration node runs
  23. class NodeRunResult(BaseModel):
  24. """
  25. Node Run Result.
  26. """
  27. status: WorkflowNodeExecutionStatus = WorkflowNodeExecutionStatus.RUNNING
  28. inputs: Optional[Mapping[str, Any]] = None # node inputs
  29. process_data: Optional[dict[str, Any]] = None # process data
  30. outputs: Optional[Mapping[str, Any]] = None # node outputs
  31. metadata: Optional[dict[NodeRunMetadataKey, Any]] = None # node metadata
  32. llm_usage: Optional[LLMUsage] = None # llm usage
  33. edge_source_handle: Optional[str] = None # source handle id of node with multiple branches
  34. error: Optional[str] = None # error message if status is failed