Workflow Copilot: clarify loop_over_parameter_key (#4592)
This commit is contained in:
committed by
GitHub
parent
ee5cd014f3
commit
e96358c10b
@@ -241,8 +241,8 @@ Structure:
|
|||||||
block_type: for_loop
|
block_type: for_loop
|
||||||
label: <unique_label>
|
label: <unique_label>
|
||||||
loop_blocks: [] # Required: Blocks to run for each iteration
|
loop_blocks: [] # Required: Blocks to run for each iteration
|
||||||
loop_over_parameter_key: <param_key> # Optional: Parameter key that resolves to a list
|
loop_over_parameter_key: <param_key> # Optional: Use ONLY for workflow parameters defined in parameters section
|
||||||
loop_variable_reference: <jinja|path> # Optional: Jinja2 or output path to resolve a list
|
loop_variable_reference: <block_label> # Optional: Use to reference output from a previous block
|
||||||
complete_if_empty: false # Optional: Complete successfully when list is empty
|
complete_if_empty: false # Optional: Complete successfully when list is empty
|
||||||
|
|
||||||
Important Notes:
|
Important Notes:
|
||||||
@@ -250,7 +250,19 @@ Important Notes:
|
|||||||
- Loop blocks must use next_block_label to chain within the loop
|
- Loop blocks must use next_block_label to chain within the loop
|
||||||
- Each iteration exposes {{ current_value }}, {{ current_item }}, and {{ current_index }}
|
- Each iteration exposes {{ current_value }}, {{ current_item }}, and {{ current_index }}
|
||||||
|
|
||||||
Example:
|
CRITICAL DISTINCTION:
|
||||||
|
* loop_over_parameter_key: ONLY for workflow parameters defined in the parameters section
|
||||||
|
- Use when looping over a static list or user-provided input
|
||||||
|
- Must reference a key from the workflow parameters list
|
||||||
|
- Example: loop_over_parameter_key: urls (where "urls" is in parameters)
|
||||||
|
|
||||||
|
* loop_variable_reference: For referencing output from a PREVIOUS BLOCK
|
||||||
|
- Use when looping over data extracted or generated by a previous block
|
||||||
|
- Reference the block's label directly (e.g., "extract_rows")
|
||||||
|
- System automatically tries: block_label.extracted_information, block_label.results, etc.
|
||||||
|
- Example: loop_variable_reference: extract_rows (where "extract_rows" is a previous extraction block)
|
||||||
|
|
||||||
|
Example 1 - Loop over workflow parameter:
|
||||||
parameters:
|
parameters:
|
||||||
- parameter_type: workflow
|
- parameter_type: workflow
|
||||||
key: urls
|
key: urls
|
||||||
@@ -262,13 +274,36 @@ blocks:
|
|||||||
- block_type: for_loop
|
- block_type: for_loop
|
||||||
label: visit_urls
|
label: visit_urls
|
||||||
next_block_label: null
|
next_block_label: null
|
||||||
loop_over_parameter_key: urls
|
loop_over_parameter_key: urls # References the workflow parameter "urls"
|
||||||
loop_blocks:
|
loop_blocks:
|
||||||
- block_type: goto_url
|
- block_type: goto_url
|
||||||
label: open_url
|
label: open_url
|
||||||
next_block_label: null
|
next_block_label: null
|
||||||
url: "{{ current_value }}"
|
url: "{{ current_value }}"
|
||||||
|
|
||||||
|
Example 2 - Loop over extraction block output:
|
||||||
|
blocks:
|
||||||
|
- block_type: extraction
|
||||||
|
label: extract_products
|
||||||
|
next_block_label: process_each_product
|
||||||
|
data_extraction_goal: "Extract all products from the table"
|
||||||
|
data_schema:
|
||||||
|
type: array
|
||||||
|
items:
|
||||||
|
type: object
|
||||||
|
properties:
|
||||||
|
name: {type: string}
|
||||||
|
price: {type: number}
|
||||||
|
- block_type: for_loop
|
||||||
|
label: process_each_product
|
||||||
|
next_block_label: null
|
||||||
|
loop_variable_reference: extract_products # References the extraction block's output
|
||||||
|
loop_blocks:
|
||||||
|
- block_type: navigation
|
||||||
|
label: add_to_cart
|
||||||
|
next_block_label: null
|
||||||
|
navigation_goal: "Add {{ current_value.name }} to cart"
|
||||||
|
|
||||||
** CONDITIONAL BLOCK (conditional) **
|
** CONDITIONAL BLOCK (conditional) **
|
||||||
|
|
||||||
Purpose: Branch to different blocks based on ordered conditions.
|
Purpose: Branch to different blocks based on ordered conditions.
|
||||||
|
|||||||
Reference in New Issue
Block a user