# Prompt Flow → MAF Node Mapping | Prompt Flow Concept | MAF Equivalent | Sample | |---|---|---| | Flow (YAML / visual graph) | `Workflow` built with `WorkflowBuilder` | All samples | | Node (any step) | `Executor` class with a `@handler` method | All samples | | LLM node | `Agent(client=FoundryChatClient(...), instructions=...)` inside an `Executor` | `01_linear_flow.py` | | Python node | Plain Python logic inside an `Executor @handler` | `02_python_node.py` | | Prompt node | String formatting inside an `Executor @handler` | `02_python_node.py` | | Embed Text + Vector Lookup nodes | `AzureAISearchContextProvider` via `context_providers=[...]` | `05_rag_flow.py` | | If / conditional node | `.add_edge(source, target, condition=fn)` | `03_conditional_flow.py` | | Parallel nodes (no dependencies) | `.add_fan_out_edges(source, [targetA, targetB])` | `04_parallel_flow.py` | | Merge / aggregate node | `.add_fan_in_edges([sourceA, sourceB], target)` | `04_parallel_flow.py` | | Flow Inputs | Type annotation on the start `Executor`'s `@handler` parameter | All samples | | Flow Outputs | `await ctx.yield_output(value)` in the terminal `Executor` | All samples | | Connections (credentials) | Identity-based auth, workspace connections, env vars, or Key Vault | [`connections-alternatives.md`](../connections-alternatives.md) | | Evaluation flow | `SimilarityEvaluator` from Azure AI Evaluation SDK | `phase-3-validate/` | | Multi-step specialist routing | `HandoffBuilder` from `agent-framework-orchestrations` | `07_multi_agent.py` | | Managed Online Endpoint | AML managed online endpoint via `score.py` init()/run() pattern | `phase-4-migrate-ops/4b-deployment/` | --- ## WorkflowContext type parameters | Annotation | Behaviour | |---|---| | `WorkflowContext` | Side effects only — no output sent | | `WorkflowContext[str]` | Sends a `str` downstream via `ctx.send_message()` | | `WorkflowContext[Never, str]` | Yields a `str` as the final workflow output via `ctx.yield_output()` | | `WorkflowContext[str, str]` | Both sends a message downstream AND yields a workflow output | `Never` is imported from `typing_extensions`.