Skip to content

Orchestrator

The Orchestrator is a general-purpose component that routes users' requests i.e., queries to the appropriate agents. It ensures that tasks are assigned to the correct agents based on their capabilities and the nature of the request.

Beyond simple routing, the Orchestrator supports optional Responsible AI (RAI) compliance checks, optional task decomposition, and customizable prompt and context injection, making it a flexible backbone for complex multi-agent workflows.

Workflow Overview

  • RAI Check (Optional) – Every query first passes through a Responsible-AI compliance check; unsafe queries are rejected.
  • Task Plan Generation – If enabled, the query is broken down into subtasks with relevant context; otherwise it is routed directly.
  • Task Execution – The Orchestrator assigns tasks to the appropriate agents and executes them.

Usage

The Orchestrator can be readily integrated into a project by adding the required configuration in the project's YAML file. Developers can define which agents it coordinates and customize its routing, decomposition, and prompt behaviors.

Quickstart

To quickly set up a minimal Orchestrator configuration, you can define it as follows:

orchestrator:
  agent_list:                                    # Required. List of agents orchestrator can route tasks to
    - agent_name: "Planner Agent"                # Must match a utility agent name below
    - agent_name: "Search Agent"                 # Multiple agents can be listed

utility_agents:
  - agent_class: PlanningAgent                   # Define Planner Agent
    agent_name: "Planner Agent"                  # Name used by orchestrator
    agent_description: "Turns constraints and facts into a concrete, time-ordered plan with rationale and trade-offs."

  - agent_class: SearchAgent                     # Define Search Agent
    agent_name: "Search Agent"                   # Name used by orchestrator
    agent_description: "Search for reliable facts (hours, prices, locations, travel times)."

Template YAML Configuration for Orchestrator

Below is a complete template showing all available configuration options for the Orchestrator. Detailed usage and examples of Orchestrator customization are provided in the tutorial section.

orchestrator:
  agent_list:
  # Required. All names listed here must be the names of the utility agents you listed in the `utility_agents` section.
    - agent_name: "<Name that you chose for Agent 1>" # Required
    - agent_name: "<Name that you chose for Agent 2>" # Required
  enable_routing: <true or false>  # Optional routing toggle (default true). When false, all queries go to the first agent in agent_list.
  decompose: <true or false> # Optional task decomposition toggle (default true). When false, tasks are not decomposed.
  rai_config: null # Optional RAI-engine override
  system_prompt_suffix: null  # Optional extra instructions to guide orchestrator behavior
  contexts:                   # Optional contexts available to the orchestrator
    - "date"                  # Inserts today's date
    - "env_variable"          # Includes key–value pairs for agent context, which can be static or updated at runtime.
    - "chat_history"          # Includes recent conversation turns
    - "relevant_chat_history" # Includes the most relevant chat history