Defining Profiles
Learn how to configure Profiles in kit.yaml to define interaction modes for your Kit.
Defining Profiles
Profiles are defined in your kit.yaml
file and act as the primary interfaces for users or other systems to interact with Modules created from your Kit. Each Profile configures a specific workflow or operational mode.
Purpose of Profiles
- Define Interaction Modes: Separate different ways of using the Kit's capabilities (e.g., setup vs. regular use vs. troubleshooting).
- Assign Responsibility: Link each interaction mode to a specific Agent (either built-in or custom).
- Control Capabilities: Specify exactly which Tools are available within the context of that Profile.
- Provide Context: Supply relevant Instructions to the Agent for guidance.
- Manage Conversations: Control whether multiple concurrent chat Sessions are permitted for the Profile.
Structure in kit.yaml
Profiles are defined under the top-level profiles:
key. This key holds a dictionary where each key is the unique name of a profile, and the value is an object defining its configuration.
Configuration Fields
For each profile defined under profiles:
:
profile_name
(Key): (Required, String)- The unique identifier for the profile (e.g.,
initialize
,maintain
,generate_report
). - This name is used by users/clients when initiating an interaction (e.g., selecting the profile tab in Studio).
- The unique identifier for the profile (e.g.,
agent
: (Required, String)- The name of the Agent responsible for handling this profile.
- Must match either a
name
defined in the top-levelagents:
section of yourkit.yaml
or the identifier of a built-in Genbase agent (liketasker
).
allow_multiple
: (Optional, Boolean)- Determines if users can have multiple simultaneous chat sessions for this specific profile within the same Module instance.
true
: Multiple sessions allowed.false
(Default): Only one session (the default session) is typically used.
instructions
: (Optional, List of Objects)- Provides contextual information (from files in the
instructions/
directory) to the assignedagent
. - Each object requires:
name
: (String) A reference name.path
: (String) Path to the instruction file relative to the Kit'sinstructions/
folder.description
: (Optional, String) Description of the instruction's content.
- The Agent receives this information (including file content) via the
profile_data
argument inprocess_request
.
- Provides contextual information (from files in the
tools
: (Optional, List of Objects)- Specifies which Kit Tools (defined in the
tools/
directory) are made available as tools to theagent
when operating under this specific profile. - Each object requires:
name
: (String) The identifier the Agent/LLM uses for the tool call.path
: (String) The locator for the Python function (filename:function_name
orfunction_name
).description
: (String) Crucial explanation for the LLM on what the tool does and when to use it.
- Specifies which Kit Tools (defined in the
Best Practices
- Choose Meaningful Names: Profile names should clearly indicate their purpose (e.g.,
create_user
,analyze_data
,configure_settings
). - Scope Tools Appropriately: Only include Tools relevant to the specific workflow of the Profile. Avoid exposing overly broad or potentially dangerous tools in profiles meant for general use.
- Use Instructions: Provide clear instructions to guide the Agent, especially for complex profiles or when specific information formats are expected from the user.
- Consider Session Needs: Use
allow_multiple: true
thoughtfully for profiles where parallel, independent conversations make sense (e.g., querying different datasets, working on separate analysis tasks). Usefalse
for stateful, sequential processes like initialization or configuration.
By carefully defining Profiles, you create structured, predictable, and capability-focused interfaces for your Kit's functionality.