switch_context

View as MarkdownOpen in Claude

Perform an advanced context switch by replacing the system prompt, injecting a user message, or resetting the conversation entirely. This is more flexible than swml_change_context(), which switches to a pre-defined named context.

When only system_prompt is provided (no other arguments), it performs a simple string-based context switch. When multiple arguments are given, it constructs an object-based context switch with fine-grained control.

Parameters

system_prompt
str | NoneDefaults to None

New system prompt to replace the current one.

user_prompt
str | NoneDefaults to None

A user message to inject into the conversation after the context switch.

consolidate
boolDefaults to False

When True, the existing conversation history is summarized into a condensed form before applying the new context. Reduces token usage on long conversations.

full_reset
boolDefaults to False

When True, performs a complete context reset, clearing all conversation history and starting fresh with the new prompt.

Returns

FunctionResult — self, for chaining.

Examples

Simple Prompt Swap

from signalwire import AgentBase
from signalwire import FunctionResult
agent = AgentBase(name="my-agent", route="/agent")
agent.set_prompt_text("You are a helpful assistant.")
@agent.tool(name="switch_to_technical", description="Switch to technical support mode")
def switch_to_technical(args, raw_data):
return (
FunctionResult("Switching to technical support mode.")
.switch_context(
system_prompt="You are a technical support specialist. "
"Help the customer with their technical issue."
)
)
agent.serve()

Full Reset with User Message

from signalwire import AgentBase
from signalwire import FunctionResult
agent = AgentBase(name="my-agent", route="/agent")
agent.set_prompt_text("You are a helpful assistant.")
@agent.tool(name="escalate_to_supervisor", description="Escalate to a supervisor")
def escalate_to_supervisor(args, raw_data):
return (
FunctionResult("Connecting you to a supervisor.")
.switch_context(
system_prompt="You are a customer service supervisor.",
user_prompt="A customer has been escalated to you.",
full_reset=True
)
)
agent.serve()