ConfigurableAgentBuilder

Struct ConfigurableAgentBuilder 

Source
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

Source

pub fn new(instructions: impl Into<String>) -> Self

Source

pub fn with_model(self, model: Arc<dyn LanguageModel>) -> Self

Set the language model for the agent (mirrors Python’s model parameter)

Source

pub fn with_planner(self, planner: Arc<dyn PlannerHandle>) -> Self

Low-level planner API (for advanced use cases)

Source

pub fn with_tool(self, tool: ToolBox) -> Self

Add a tool to the agent

Source

pub fn with_tools<I>(self, tools: I) -> Self
where I: IntoIterator<Item = ToolBox>,

Add multiple tools

Source

pub fn with_subagent_config<I>(self, cfgs: I) -> Self
where I: IntoIterator<Item = SubAgentConfig>,

Source

pub fn with_subagent_tools<I>(self, tools: I) -> Self
where I: IntoIterator<Item = ToolBox>,

Convenience method: automatically create subagents from a list of tools. Each tool becomes a specialized subagent with that single tool.

Source

pub fn with_summarization(self, config: SummarizationConfig) -> Self

Source

pub fn with_tool_interrupt( self, tool_name: impl Into<String>, policy: HitlPolicy, ) -> Self

Source

pub fn with_builtin_tools<I, S>(self, names: I) -> Self
where I: IntoIterator<Item = S>, S: Into<String>,

Source

pub fn with_auto_general_purpose(self, enabled: bool) -> Self

Source

pub fn with_prompt_caching(self, enabled: bool) -> Self

Source

pub fn with_checkpointer(self, checkpointer: Arc<dyn Checkpointer>) -> Self

Source

pub fn with_event_broadcaster( self, broadcaster: Arc<dyn EventBroadcaster>, ) -> Self

Add a single event broadcaster to the agent

Example:

builder.with_event_broadcaster(console_broadcaster)
Source

pub fn with_event_broadcasters( self, broadcasters: Vec<Arc<dyn EventBroadcaster>>, ) -> Self

Add multiple event broadcasters at once (cleaner API)

Example:

builder.with_event_broadcasters(vec![
    console_broadcaster,
    whatsapp_broadcaster,
    dynamodb_broadcaster,
])
Source

pub fn with_event_dispatcher(self, dispatcher: Arc<EventDispatcher>) -> Self

Set the event dispatcher directly (replaces any existing dispatcher)

Source

pub fn with_pii_sanitization(self, enabled: bool) -> Self

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()?;
Source

pub fn with_token_tracking(self, enabled: bool) -> Self

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()?;
Source

pub fn with_token_tracking_config(self, config: TokenTrackingConfig) -> Self

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()?;
Source

pub fn with_max_iterations(self, max_iterations: usize) -> Self

Set the maximum number of ReAct loop iterations before stopping.

The agent uses a ReAct loop (Reasoning and Acting) to iteratively process user requests, calling tools and reasoning about the results. This setting controls how many iterations the agent can perform before it stops.

Note: max_iterations must be greater than 0. Passing 0 will result in a panic.

§Default

Defaults to 10 iterations if not specified.

§Panics

Panics if max_iterations is 0.

§Example
let agent = ConfigurableAgentBuilder::new("instructions")
    .with_model(model)
    .with_max_iterations(30)
    .build()?;
Source

pub fn build(self) -> Result<DeepAgent>

Source

pub fn build_async(self) -> Result<DeepAgent>

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§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,