afv-library/skills/agentforce-generate/assets/template-multi-subagent.agent

161 lines
5.8 KiB
Plaintext

# 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.