# Multi-Subagent Template # Copy this file to your AiAuthoringBundle directory and rename it to match # your agent's developer_name. Replace all placeholder values with real ones. # Add, remove, or rename subagents as needed. system: instructions: "You are a helpful assistant. Describe the agent's persona and purpose here." messages: welcome: "Hello! How can I help you today?" error: "Sorry, it looks like something has gone wrong." config: developer_name: "Agent_API_Name" agent_label: "Agent Display Name" description: "Description of the agent's purpose" # agent_type: "AgentforceServiceAgent" for customer-facing (requires default_agent_user) # "AgentforceEmployeeAgent" for internal (remove default_agent_user line) agent_type: "AgentforceServiceAgent" default_agent_user: "username@identifier.org" variables: collected_input: mutable string = "" description: "Replace with a description of what this variable tracks" language: default_locale: "en_US" additional_locales: "" all_additional_locales: False start_agent agent_router: description: "Welcome the user and determine the appropriate subagent based on user input" reasoning: actions: go_to_subagent_a: @utils.transition to @subagent.subagent_a go_to_subagent_b: @utils.transition to @subagent.subagent_b go_to_subagent_c: @utils.transition to @subagent.subagent_c go_to_escalation: @utils.transition to @subagent.escalation go_to_off_topic: @utils.transition to @subagent.off_topic subagent subagent_a: label: "Subagent A" description: "Describe what this subagent handles" reasoning: instructions: -> | Replace this with instructions for subagent A. actions: action_a: @actions.action_a with input_param = ... actions: action_a: description: "Describe what this action does" label: "Action A" target: "apex://ClassName" inputs: input_param: string description: "Describe this parameter" label: "Parameter Name" is_required: True outputs: output_field: string label: "Output Name" description: "Describe this output" is_displayable: True filter_from_agent: False subagent subagent_b: label: "Subagent B" description: "Describe what this subagent handles" reasoning: instructions: -> | Replace this with instructions for subagent B. This subagent demonstrates the gating pattern. actions: # Collect data into a variable first collect_data: @utils.setVariables description: "Collect user input into a variable" with collected_input = ... # Gate the main action behind the variable main_action: @actions.action_b description: "Describe what this gated action does" available when @variables.collected_input != "" with query_param = @variables.collected_input actions: action_b: description: "Describe what this action does" label: "Action B" target: "prompt://PromptTemplateName" inputs: query_param: string description: "Describe this parameter" label: "Parameter Name" is_required: True outputs: result_text: string description: "Describe this output" label: "Result" is_displayable: False subagent subagent_c: label: "Subagent C" description: "Describe what this subagent handles" reasoning: instructions: -> | Replace this with base instructions for subagent C. # Conditional instructions based on variable state if @variables.collected_input != "": | Additional instructions when the variable has been set. else: | Instructions when the variable has not been set yet. actions: action_c: @actions.action_c with input_param = ... # Bind an action output to an agent variable set @variables.collected_input = @outputs.result_value actions: action_c: description: "Describe what this action does" label: "Action C" target: "flow://FlowName" inputs: input_param: string description: "Describe this parameter" label: "Parameter Name" is_required: True outputs: result_value: string label: "Result Value" description: "Describe this output" is_displayable: True filter_from_agent: False subagent escalation: label: "Escalation" description: "Handles requests from users who want to transfer or escalate their conversation to a live human agent." reasoning: instructions: -> | If a user explicitly asks to transfer to a live agent, escalate the conversation. actions: escalate_to_human: @utils.escalate description: "Escalate to a human agent." subagent off_topic: label: "Off Topic" description: "Redirect conversation to relevant subagents when user request goes off-topic" reasoning: instructions: -> | The user request is off-topic. Do not answer general knowledge questions. Redirect the conversation by asking how you can help with the subagents this agent supports.