pub struct SystemPromptSlots {
pub style: Option<AgentStyle>,
pub role: Option<String>,
pub guidelines: Option<String>,
pub response_style: Option<String>,
pub extra: Option<String>,
}Expand description
Slot-based system prompt customization with intent-based style selection.
Users can customize specific parts of the system prompt without overriding the core agentic capabilities (tool usage, autonomous behavior, completion criteria). The default agentic core is ALWAYS included.
§Assembly Order
[role] ← Custom identity/role (e.g. "You are a Python expert")
[CORE] ← Always present: Core Behaviour + Tool Usage Strategy + Completion Criteria
[guidelines] ← Custom coding rules / constraints
[response_style] ← Custom response format (replaces default Response Format section)
[extra] ← Freeform additional instructions§Intent-Based Selection
When style is left as AgentStyle::GeneralPurpose (the default), the
system will attempt to detect the user’s intent from their first message and
automatically select an appropriate style. To override this behavior, explicitly
set the style field.
Fields§
§style: Option<AgentStyle>Agent style — determines which base prompt template is used.
When None (default), the style is auto-detected from the user’s message.
Explicitly set this to force a particular style regardless of message content.
role: Option<String>Custom role/identity prepended before the core prompt.
Example: “You are a senior Python developer specializing in FastAPI.” When set, replaces the default “You are A3S Code, an expert AI coding agent” line.
guidelines: Option<String>Custom coding guidelines appended after the core prompt sections.
Example: “Always use type hints. Follow PEP 8. Prefer dataclasses over dicts.”
response_style: Option<String>Custom response style that replaces the default “Response Format” section.
When None, the default response format is used.
extra: Option<String>Freeform extra instructions appended at the very end.
This is the backward-compatible slot: setting system_prompt in the old API
maps to this field.
Implementations§
Source§impl SystemPromptSlots
impl SystemPromptSlots
Sourcepub fn build(&self) -> String
pub fn build(&self) -> String
Build the final system prompt by assembling slots around the core prompt.
The core agentic behavior (Core Behaviour, Tool Usage Strategy, Completion Criteria) is always preserved. Users can only customize the edges.
Note: This uses AgentStyle::GeneralPurpose as the base. Use
build_with_message() to enable automatic intent-based style detection.
Sourcepub fn build_with_message(&self, initial_message: &str) -> String
pub fn build_with_message(&self, initial_message: &str) -> String
Build the final system prompt, auto-detecting style from the initial message.
If self.style is explicitly set, that style is used regardless of message content.
Otherwise, the style is detected from initial_message using keyword analysis.
Sourcepub fn from_legacy(prompt: String) -> Self
pub fn from_legacy(prompt: String) -> Self
Create slots from a legacy full system prompt string.
For backward compatibility: the entire string is placed in the extra slot,
and the default core prompt is still prepended.
Sourcepub fn with_style(self, style: AgentStyle) -> Self
pub fn with_style(self, style: AgentStyle) -> Self
Set the agent style explicitly.
Sourcepub fn with_guidelines(self, guidelines: impl Into<String>) -> Self
pub fn with_guidelines(self, guidelines: impl Into<String>) -> Self
Set custom guidelines.
Sourcepub fn with_response_style(self, style: impl Into<String>) -> Self
pub fn with_response_style(self, style: impl Into<String>) -> Self
Set custom response style.
Sourcepub fn with_extra(self, extra: impl Into<String>) -> Self
pub fn with_extra(self, extra: impl Into<String>) -> Self
Set extra instructions (backward-compatible with old system_prompt).
Trait Implementations§
Source§impl Clone for SystemPromptSlots
impl Clone for SystemPromptSlots
Source§fn clone(&self) -> SystemPromptSlots
fn clone(&self) -> SystemPromptSlots
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more