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
| Field | Description |
|---|---|
inputs | Input types for the conditional node |
outputs | Output types for the conditional node |
variable | The input variable to evaluate conditions against |
branches | List of condition/executable pairs |
Condition Operators
| Operator | Description |
|---|---|
== | Equality |
!= | Inequality |
>= | Greater than or equal |
<= | Less than or equal |
> | Greater than |
< | Less than |
Branch Fields
| Field | Description |
|---|---|
condition | Boolean predicate (right-hand side only, e.g., ">= 0.8") |
executable | Subgraph name or node type to execute |
input_mapping | Maps conditional node inputs to branch inputs |
output_mapping | Maps 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