1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- from enum import Enum
- from typing import Any, Optional
- from pydantic import BaseModel
- from models.workflow import WorkflowNodeExecutionStatus
- class NodeType(Enum):
- """
- Node Types.
- """
- START = 'start'
- END = 'end'
- ANSWER = 'answer'
- LLM = 'llm'
- KNOWLEDGE_RETRIEVAL = 'knowledge-retrieval'
- IF_ELSE = 'if-else'
- CODE = 'code'
- TEMPLATE_TRANSFORM = 'template-transform'
- QUESTION_CLASSIFIER = 'question-classifier'
- HTTP_REQUEST = 'http-request'
- TOOL = 'tool'
- VARIABLE_AGGREGATOR = 'variable-aggregator'
- VARIABLE_ASSIGNER = 'variable-assigner'
- LOOP = 'loop'
- ITERATION = 'iteration'
- PARAMETER_EXTRACTOR = 'parameter-extractor'
- @classmethod
- def value_of(cls, value: str) -> 'NodeType':
- """
- Get value of given node type.
- :param value: node type value
- :return: node type
- """
- for node_type in cls:
- if node_type.value == value:
- return node_type
- raise ValueError(f'invalid node type value {value}')
- class SystemVariable(Enum):
- """
- System Variables.
- """
- QUERY = 'query'
- FILES = 'files'
- CONVERSATION_ID = 'conversation_id'
- USER_ID = 'user_id'
- @classmethod
- def value_of(cls, value: str) -> 'SystemVariable':
- """
- Get value of given system variable.
- :param value: system variable value
- :return: system variable
- """
- for system_variable in cls:
- if system_variable.value == value:
- return system_variable
- raise ValueError(f'invalid system variable value {value}')
- class NodeRunMetadataKey(Enum):
- """
- Node Run Metadata Key.
- """
- TOTAL_TOKENS = 'total_tokens'
- TOTAL_PRICE = 'total_price'
- CURRENCY = 'currency'
- TOOL_INFO = 'tool_info'
- ITERATION_ID = 'iteration_id'
- ITERATION_INDEX = 'iteration_index'
- class NodeRunResult(BaseModel):
- """
- Node Run Result.
- """
- status: WorkflowNodeExecutionStatus = WorkflowNodeExecutionStatus.RUNNING
- inputs: Optional[dict] = None # node inputs
- process_data: Optional[dict] = None # process data
- outputs: Optional[dict] = None # node outputs
- metadata: Optional[dict[NodeRunMetadataKey, Any]] = None # node metadata
- edge_source_handle: Optional[str] = None # source handle id of node with multiple branches
- error: Optional[str] = None # error message if status is failed
|