Source code for labelbox.schema.tool_building.step_reasoning_tool

from dataclasses import dataclass, field
from enum import Enum

from labelbox.schema.tool_building.base_step_reasoning_tool import (
    _BaseStepReasoningTool,
    _Definition,
    _Variant,
)
from labelbox.schema.tool_building.tool_type import ToolType


[docs]class IncorrectStepActions(Enum): REGENERATE_STEPS = "regenerateSteps" GENERATE_AND_RATE_ALTERNATIVE_STEPS = "generateAndRateAlternativeSteps" REWRITE_STEP = "rewriteStep" JUSTIFICATION = "justification"
def build_step_reasoning_definition(): correct_step = _Variant(id=0, name="Correct", actions=[]) neutral_step = _Variant(id=1, name="Neutral", actions=[]) incorrect_step = _Variant( id=2, name="Incorrect", _available_actions={action.value for action in IncorrectStepActions}, actions=[action.value for action in IncorrectStepActions], ) variants = [correct_step, neutral_step, incorrect_step] return _Definition(variants=variants)
[docs]@dataclass class StepReasoningTool(_BaseStepReasoningTool): """ Use this class in OntologyBuilder to create a tool for step reasoning The definition field lists the possible options to evaulate a step NOTE: color attribute is for backward compatibility only and should not be set directly """ type: ToolType = field(default=ToolType.STEP_REASONING, init=False) definition: _Definition = field( default_factory=build_step_reasoning_definition ) def __post_init__(self): super().__post_init__() # Set available actions for variants 0, 1, 2 'out of band' since they are not passed in the definition self._set_variant_available_actions() def _set_variant_available_actions(self): for variant in self.definition.variants: if variant.id == 2: for action in IncorrectStepActions: variant._available_actions.add(action.value)