symfonic.agent.prompts.system_prompt¶
system_prompt ¶
HMSSystemPromptSection -- HMS-aware system prompt for SymfonicAgent.
Renders the bundled hms_system.txt template by substituting all
{{VARIABLE}} placeholders from a context dict. Conforms to the
PromptSection protocol defined in symfonic.core.prompt.
HMSSystemPromptSection
dataclass
¶
HMSSystemPromptSection(
name: str = "HMS System Prompt",
required: bool = False,
priority: int = 5,
cache_breakpoint: bool = True,
template_path: Path | None = None,
)
PromptSection that renders the HMS-aware system prompt template.
Substitutes all {{VARIABLE}} placeholders from the PromptState
context. Raises ValueError if any placeholder remains unresolved
after rendering.
Attributes:
| Name | Type | Description |
|---|---|---|
name |
str
|
Section display name used by PromptBuilder. |
required |
bool
|
Whether a render failure should abort the build. |
priority |
int
|
Lower numbers appear earlier in the assembled prompt. |
template_path |
Path | None
|
Optional override path (file or directory) for the hms_system.txt template. Defaults to the bundled template. |
estimate_tokens
staticmethod
¶
Estimate token count using a conservative 3-chars-per-token heuristic.
The len // 4 heuristic undercounts by 20-30 % on structured /
markdown text. len // 3 is closer to observed tokeniser output
for prompts that contain headings, bullet lists, and JSON blocks.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
text
|
str
|
The text to estimate token count for. |
required |
Returns:
| Type | Description |
|---|---|
int
|
Estimated number of tokens (conservative upper bound). |
Source code in src/symfonic/agent/prompts/system_prompt.py
render
async
¶
Render the HMS system prompt by substituting placeholders.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
state
|
PromptState
|
Mapping that must contain values for every
|
required |
Returns:
| Type | Description |
|---|---|
str
|
The fully substituted prompt text. |
Raises:
| Type | Description |
|---|---|
SecurityScopeError
|
If |
ValueError
|
If any |
Source code in src/symfonic/agent/prompts/system_prompt.py
validate_budget ¶
Check whether rendered fits within the token budget.
Does NOT raise — callers decide how to handle over-budget results.
Parameters:
| Name | Type | Description | Default |
|---|---|---|---|
rendered
|
str
|
The already-rendered prompt text. |
required |
max_tokens
|
int
|
Maximum allowed token count. |
1000
|
Returns:
| Type | Description |
|---|---|
tuple[bool, int]
|
Tuple of |