pub struct ConfigurableAgentBuilder { /* private fields */ }Expand description
Builder API to assemble a DeepAgent in a single fluent flow, mirroring the Python
create_configurable_agent experience. Prefer this for ergonomic construction.
Implementations§
Source§impl ConfigurableAgentBuilder
impl ConfigurableAgentBuilder
pub fn new(instructions: impl Into<String>) -> ConfigurableAgentBuilder
Sourcepub fn with_model(
self,
model: Arc<dyn LanguageModel>,
) -> ConfigurableAgentBuilder
pub fn with_model( self, model: Arc<dyn LanguageModel>, ) -> ConfigurableAgentBuilder
Set the language model for the agent (mirrors Python’s model parameter)
Sourcepub fn with_planner(
self,
planner: Arc<dyn PlannerHandle>,
) -> ConfigurableAgentBuilder
pub fn with_planner( self, planner: Arc<dyn PlannerHandle>, ) -> ConfigurableAgentBuilder
Low-level planner API (for advanced use cases)
Sourcepub fn with_tool(self, tool: Arc<dyn Tool>) -> ConfigurableAgentBuilder
pub fn with_tool(self, tool: Arc<dyn Tool>) -> ConfigurableAgentBuilder
Add a tool to the agent
Sourcepub fn with_tools<I>(self, tools: I) -> ConfigurableAgentBuilder
pub fn with_tools<I>(self, tools: I) -> ConfigurableAgentBuilder
Add multiple tools
pub fn with_subagent_config<I>(self, cfgs: I) -> ConfigurableAgentBuilderwhere
I: IntoIterator<Item = SubAgentConfig>,
Sourcepub fn with_subagent_tools<I>(self, tools: I) -> ConfigurableAgentBuilder
pub fn with_subagent_tools<I>(self, tools: I) -> ConfigurableAgentBuilder
Convenience method: automatically create subagents from a list of tools. Each tool becomes a specialized subagent with that single tool.
pub fn with_summarization( self, config: SummarizationConfig, ) -> ConfigurableAgentBuilder
pub fn with_tool_interrupt( self, tool_name: impl Into<String>, policy: HitlPolicy, ) -> ConfigurableAgentBuilder
pub fn with_builtin_tools<I, S>(self, names: I) -> ConfigurableAgentBuilder
pub fn with_auto_general_purpose( self, enabled: bool, ) -> ConfigurableAgentBuilder
pub fn with_prompt_caching(self, enabled: bool) -> ConfigurableAgentBuilder
pub fn with_checkpointer( self, checkpointer: Arc<dyn Checkpointer>, ) -> ConfigurableAgentBuilder
Sourcepub fn with_event_broadcaster(
self,
broadcaster: Arc<dyn EventBroadcaster>,
) -> ConfigurableAgentBuilder
pub fn with_event_broadcaster( self, broadcaster: Arc<dyn EventBroadcaster>, ) -> ConfigurableAgentBuilder
Add a single event broadcaster to the agent
Example:
builder.with_event_broadcaster(console_broadcaster)Sourcepub fn with_event_broadcasters(
self,
broadcasters: Vec<Arc<dyn EventBroadcaster>>,
) -> ConfigurableAgentBuilder
pub fn with_event_broadcasters( self, broadcasters: Vec<Arc<dyn EventBroadcaster>>, ) -> ConfigurableAgentBuilder
Add multiple event broadcasters at once (cleaner API)
Example:
builder.with_event_broadcasters(vec![
console_broadcaster,
whatsapp_broadcaster,
dynamodb_broadcaster,
])Sourcepub fn with_event_dispatcher(
self,
dispatcher: Arc<EventDispatcher>,
) -> ConfigurableAgentBuilder
pub fn with_event_dispatcher( self, dispatcher: Arc<EventDispatcher>, ) -> ConfigurableAgentBuilder
Set the event dispatcher directly (replaces any existing dispatcher)
Sourcepub fn with_pii_sanitization(self, enabled: bool) -> ConfigurableAgentBuilder
pub fn with_pii_sanitization(self, enabled: bool) -> ConfigurableAgentBuilder
Enable or disable PII sanitization in event data.
Enabled by default for security.
When enabled (default):
- Message previews are truncated to 100 characters
- Sensitive fields (passwords, tokens, api_keys, etc.) are redacted
- PII patterns (emails, phones, credit cards) are removed
Disable only if you need raw data and have other security measures in place.
§Example
// Keep default (enabled)
let agent = DeepAgentBuilder::new("instructions")
.with_model(model)
.build()?;
// Explicitly disable (not recommended for production)
let agent = DeepAgentBuilder::new("instructions")
.with_model(model)
.with_pii_sanitization(false)
.build()?;Sourcepub fn with_token_tracking(self, enabled: bool) -> ConfigurableAgentBuilder
pub fn with_token_tracking(self, enabled: bool) -> ConfigurableAgentBuilder
Enable token tracking for monitoring LLM usage and costs.
This enables tracking of token usage, costs, and performance metrics across all LLM requests made by the agent.
§Example
// Enable token tracking with default settings
let agent = ConfigurableAgentBuilder::new("instructions")
.with_model(model)
.with_token_tracking(true)
.build()?;
// Enable with custom configuration
let config = TokenTrackingConfig {
enabled: true,
emit_events: true,
log_usage: true,
custom_costs: Some(TokenCosts::openai_gpt4o_mini()),
};
let agent = ConfigurableAgentBuilder::new("instructions")
.with_model(model)
.with_token_tracking_config(config)
.build()?;Sourcepub fn with_token_tracking_config(
self,
config: TokenTrackingConfig,
) -> ConfigurableAgentBuilder
pub fn with_token_tracking_config( self, config: TokenTrackingConfig, ) -> ConfigurableAgentBuilder
Configure token tracking with custom settings.
This allows fine-grained control over token tracking behavior, including custom cost models and event emission settings.
§Example
let config = TokenTrackingConfig {
enabled: true,
emit_events: true,
log_usage: false, // Don't log to console
custom_costs: Some(TokenCosts::openai_gpt4o_mini()),
};
let agent = ConfigurableAgentBuilder::new("instructions")
.with_model(model)
.with_token_tracking_config(config)
.build()?;pub fn build(self) -> Result<DeepAgent, Error>
Sourcepub fn build_async(self) -> Result<DeepAgent, Error>
pub fn build_async(self) -> Result<DeepAgent, Error>
Build an agent using the async constructor alias. This mirrors the Python async_create_deep_agent entry point, while reusing the same runtime internals.
Auto Trait Implementations§
impl Freeze for ConfigurableAgentBuilder
impl !RefUnwindSafe for ConfigurableAgentBuilder
impl Send for ConfigurableAgentBuilder
impl Sync for ConfigurableAgentBuilder
impl Unpin for ConfigurableAgentBuilder
impl !UnwindSafe for ConfigurableAgentBuilder
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more