Skip to main content

Description

Conditional nodes execute one of multiple subgraphs based on a runtime condition. This enables workflows that adapt their behavior based on intermediate results.

Syntax

conditional_node:
  type: ConditionalStep
  config:
    inputs:
      quality_score: float
      documents: List[str]
    outputs:
      result: str
    variable: quality_score
    branches:
      - condition: ">= 0.8"
        executable: HighQualityProcessor
        input_mapping:
          documents: __inputs__#documents
        output_mapping:
          __outputs__#result: processed_documents
      - condition: "< 0.8"
        executable: LowQualityProcessor
        input_mapping:
          documents: __inputs__#documents
        output_mapping:
          __outputs__#result: processed_documents
  input_mapping:
    quality_score: quality_checker#score
    documents: retriever#documents

Config Fields

FieldDescription
inputsInput types for the conditional node
outputsOutput types for the conditional node
variableThe input variable to evaluate conditions against
branchesList of condition/executable pairs

Condition Operators

OperatorDescription
==Equality
!=Inequality
>=Greater than or equal
<=Less than or equal
>Greater than
<Less than

Branch Fields

FieldDescription
conditionBoolean predicate (right-hand side only, e.g., ">= 0.8")
executableSubgraph name or node type to execute
input_mappingMaps conditional node inputs to branch inputs
output_mappingMaps branch outputs to conditional node outputs

Example: Route by Query Type

# Subgraphs for different query types
factual_handler:
  inputs:
    query: str
  outputs:
    response: str
  nodes:
    search:
      type: SearchUnstructuredDataStep
      config:
        temperature: 0.1
      input_mapping:
        query: __inputs__#query
    # ... generate response

creative_handler:
  inputs:
    query: str
  outputs:
    response: str
  nodes:
    generate:
      type: GenerationStep
      config:
        temperature: 0.8
      input_mapping:
        query: __inputs__#query
    # ... generate response

# Main workflow
inputs:
  query: str

nodes:
  classify:
    type: LanguageModelStep
    config:
      prompt_template: |
        Classify this query as 'factual' or 'creative'.
        Query: {query}
        Return only: factual or creative
      model_id: "vertex_ai/gemini-2.0-flash"
    input_mapping:
      query: __inputs__#query

  route:
    type: ConditionalStep
    config:
      inputs:
        query: str
        query_type: str
      outputs:
        response: str
      variable: query_type
      branches:
        - condition: "== factual"
          executable: factual_handler
          input_mapping:
            query: __inputs__#query
          output_mapping:
            __outputs__#response: response
        - condition: "== creative"
          executable: creative_handler
          input_mapping:
            query: __inputs__#query
          output_mapping:
            __outputs__#response: response
    input_mapping:
      query: __inputs__#query
      query_type: classify#response