pub struct AgentBuilder { /* private fields */ }Expand description
Builder for Agent.
Implementations§
Source§impl AgentBuilder
impl AgentBuilder
pub fn id(self, id: impl Into<String>) -> Self
pub fn name(self, name: impl Into<String>) -> Self
pub fn description(self, description: impl Into<String>) -> Self
pub fn instructions(self, instructions: impl Into<String>) -> Self
pub fn model(self, model: impl Into<String>) -> Self
pub fn temperature(self, temperature: f32) -> Self
pub fn max_tokens(self, max_tokens: u32) -> Self
Sourcepub fn response_format(self, format: ResponseFormat) -> Self
pub fn response_format(self, format: ResponseFormat) -> Self
Request a structured-output response format (e.g. a JSON schema).
Sourcepub fn tool(self, tool: ToolDefinition) -> Self
pub fn tool(self, tool: ToolDefinition) -> Self
Add a tool available to the agent.
Sourcepub fn tools(self, tools: impl IntoIterator<Item = ToolDefinition>) -> Self
pub fn tools(self, tools: impl IntoIterator<Item = ToolDefinition>) -> Self
Add multiple tools.
Sourcepub fn tool_source(self, source: Arc<dyn ToolSource>) -> Self
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.
Sourcepub fn context_provider(self, provider: Arc<dyn ContextProvider>) -> Self
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).
Sourcepub fn context_providers(self, providers: Vec<Arc<dyn ContextProvider>>) -> Self
pub fn context_providers(self, providers: Vec<Arc<dyn ContextProvider>>) -> Self
Set the context provider list, replacing any previously registered.
Sourcepub fn with_compaction(
self,
strategy: impl CompactionStrategy + 'static,
) -> Self
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.
Sourcepub fn middleware(self, mw: Arc<AgentMiddleware>) -> Self
pub fn middleware(self, mw: Arc<AgentMiddleware>) -> Self
Add an agent middleware.
Sourcepub fn chat_middleware(self, mw: Arc<ChatMiddleware>) -> Self
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.
Sourcepub fn function_middleware(self, mw: Arc<FunctionMiddleware>) -> Self
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.
Sourcepub fn observability_config(self, config: ObservabilityConfig) -> Self
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.
Sourcepub fn chat_options(self, options: ChatOptions) -> Self
pub fn chat_options(self, options: ChatOptions) -> Self
Override the whole chat options object (advanced).