Skip to main content

AgentBuilder

Struct AgentBuilder 

Source
pub struct AgentBuilder { /* private fields */ }
Expand description

Builder for Agent.

Implementations§

Source§

impl AgentBuilder

Source

pub fn id(self, id: impl Into<String>) -> Self

Source

pub fn name(self, name: impl Into<String>) -> Self

Source

pub fn description(self, description: impl Into<String>) -> Self

Source

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

Source

pub fn model(self, model: impl Into<String>) -> Self

Source

pub fn temperature(self, temperature: f32) -> Self

Source

pub fn max_tokens(self, max_tokens: u32) -> Self

Source

pub fn response_format(self, format: ResponseFormat) -> Self

Request a structured-output response format (e.g. a JSON schema).

Source

pub fn tool(self, tool: ToolDefinition) -> Self

Add a tool available to the agent.

Source

pub fn tools(self, tools: impl IntoIterator<Item = ToolDefinition>) -> Self

Add multiple tools.

Source

pub fn tool_source(self, source: Arc<dyn ToolSource>) -> Self

Register a dynamic tool source (e.g. an MCP server wrapper), resolved fresh on every run and appended after the agent’s static/context/ per-run tools (dedup by name against those and any earlier-registered source; first registrant wins). Call repeatedly to register more than one source. See ToolSource, resolved internally by every Agent run.

Source

pub fn context_provider(self, provider: Arc<dyn ContextProvider>) -> Self

Add a single context provider (repeatable; providers run in registration order, agent providers after any thread-level ones).

Source

pub fn context_providers(self, providers: Vec<Arc<dyn ContextProvider>>) -> Self

Set the context provider list, replacing any previously registered.

Source

pub fn with_compaction( self, strategy: impl CompactionStrategy + 'static, ) -> Self

Attach conversation-history compaction, via a CompactionProvider wrapping strategy (with the default ApproxTokenizer; use AgentBuilder::context_provider with CompactionProvider::with_tokenizer for a custom tokenizer).

Registered as one of the agent’s own context providers, which Agent::combined_providers always runs after the session’s — including the auto-attached (or explicitly attached) HistoryProvider, which lives on the session — so compaction sees, and can shrink, the full history-prepended message list for the run. Not calling this leaves the default behavior unchanged: the full history is sent every run.

Source

pub fn middleware(self, mw: Arc<AgentMiddleware>) -> Self

Add an agent middleware.

Source

pub fn chat_middleware(self, mw: Arc<ChatMiddleware>) -> Self

Add a chat middleware, run around the underlying chat-client call on every request (repeatable, like AgentBuilder::middleware). See the chat-client call pipeline for exactly what it can observe and mutate.

Source

pub fn function_middleware(self, mw: Arc<FunctionMiddleware>) -> Self

Add a function-invocation middleware, run around every local tool call (repeatable). Plumbed down into the FunctionInvokingChatClient this builder wraps the underlying client with.

Source

pub fn observability_config(self, config: ObservabilityConfig) -> Self

Set the ObservabilityConfig for the execute_tool spans this agent’s tool loop emits — content capture and the GenAI semantic-convention version.

The builder wraps the caller’s client in a FunctionInvokingChatClient itself, so this is the only way to reach that wrapper’s own config. Pass the same value given to an ObservableChatClient around the same client, so one trace reports one convention version across its chat and tool spans. Left unset, the tool loop reads the environment, as it always has.

Source

pub fn chat_options(self, options: ChatOptions) -> Self

Override the whole chat options object (advanced).

Source

pub fn build(self) -> Agent

Build the agent.

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, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

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