Skip to main content

LlmAgentBuilder

Struct LlmAgentBuilder 

Source
pub struct LlmAgentBuilder { /* private fields */ }
Available on crate feature agents only.

Implementations§

Source§

impl LlmAgentBuilder

Source

pub fn new(name: impl Into<String>) -> LlmAgentBuilder

Source

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

Source

pub fn model(self, model: Arc<dyn Llm>) -> LlmAgentBuilder

Source

pub fn instruction(self, instruction: impl Into<String>) -> LlmAgentBuilder

Source

pub fn instruction_provider( self, provider: Box<dyn Fn(Arc<dyn ReadonlyContext>) -> Pin<Box<dyn Future<Output = Result<String, AdkError>> + Send>> + Send + Sync>, ) -> LlmAgentBuilder

Source

pub fn global_instruction( self, instruction: impl Into<String>, ) -> LlmAgentBuilder

Source

pub fn global_instruction_provider( self, provider: Box<dyn Fn(Arc<dyn ReadonlyContext>) -> Pin<Box<dyn Future<Output = Result<String, AdkError>> + Send>> + Send + Sync>, ) -> LlmAgentBuilder

Source

pub fn with_skills(self, index: SkillIndex) -> LlmAgentBuilder

Set a preloaded skills index for this agent.

Source

pub fn with_auto_skills(self) -> Result<LlmAgentBuilder, AdkError>

Auto-load skills from .skills/ in the current working directory.

Source

pub fn with_skills_from_root( self, root: impl AsRef<Path>, ) -> Result<LlmAgentBuilder, AdkError>

Auto-load skills from .skills/ under a custom root directory.

Source

pub fn with_skill_policy(self, policy: SelectionPolicy) -> LlmAgentBuilder

Customize skill selection behavior.

Source

pub fn with_skill_budget(self, max_chars: usize) -> LlmAgentBuilder

Limit injected skill content length.

Source

pub fn input_schema(self, schema: Value) -> LlmAgentBuilder

Source

pub fn output_schema(self, schema: Value) -> LlmAgentBuilder

Source

pub fn disallow_transfer_to_parent(self, disallow: bool) -> LlmAgentBuilder

Source

pub fn disallow_transfer_to_peers(self, disallow: bool) -> LlmAgentBuilder

Source

pub fn include_contents(self, include: IncludeContents) -> LlmAgentBuilder

Source

pub fn output_key(self, key: impl Into<String>) -> LlmAgentBuilder

Source

pub fn generate_content_config( self, config: GenerateContentConfig, ) -> LlmAgentBuilder

Set default generation parameters (temperature, top_p, top_k, max_output_tokens) applied to every LLM request made by this agent.

These defaults are merged with any per-request config. If output_schema is also set, the schema is preserved alongside these generation parameters.

§Example
use adk_core::GenerateContentConfig;

let agent = LlmAgentBuilder::new("my-agent")
    .model(model)
    .generate_content_config(GenerateContentConfig {
        temperature: Some(0.7),
        max_output_tokens: Some(2048),
        ..Default::default()
    })
    .build()?;
Source

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

Set the default temperature for LLM requests. Shorthand for setting just temperature without a full GenerateContentConfig.

Source

pub fn top_p(self, top_p: f32) -> LlmAgentBuilder

Set the default top_p for LLM requests.

Source

pub fn top_k(self, top_k: i32) -> LlmAgentBuilder

Set the default top_k for LLM requests.

Source

pub fn max_output_tokens(self, max_tokens: i32) -> LlmAgentBuilder

Set the default max output tokens for LLM requests.

Source

pub fn max_iterations(self, max: u32) -> LlmAgentBuilder

Set the maximum number of LLM round-trips (iterations) before the agent stops. Default is 100.

Source

pub fn tool_timeout(self, timeout: Duration) -> LlmAgentBuilder

Set the timeout for individual tool executions. Default is 5 minutes. Tools that exceed this timeout will return an error.

Source

pub fn tool(self, tool: Arc<dyn Tool>) -> LlmAgentBuilder

Source

pub fn toolset(self, toolset: Arc<dyn Toolset>) -> LlmAgentBuilder

Register a dynamic toolset for per-invocation tool resolution.

Toolsets are resolved at the start of each run() call using the invocation’s ReadonlyContext. This enables context-dependent tools like per-user browser sessions from a pool.

Source

pub fn sub_agent(self, agent: Arc<dyn Agent>) -> LlmAgentBuilder

Source

pub fn before_callback( self, callback: Box<dyn Fn(Arc<dyn CallbackContext>) -> Pin<Box<dyn Future<Output = Result<Option<Content>, AdkError>> + Send>> + Send + Sync>, ) -> LlmAgentBuilder

Source

pub fn after_callback( self, callback: Box<dyn Fn(Arc<dyn CallbackContext>) -> Pin<Box<dyn Future<Output = Result<Option<Content>, AdkError>> + Send>> + Send + Sync>, ) -> LlmAgentBuilder

Source

pub fn before_model_callback( self, callback: Box<dyn Fn(Arc<dyn CallbackContext>, LlmRequest) -> Pin<Box<dyn Future<Output = Result<BeforeModelResult, AdkError>> + Send>> + Send + Sync>, ) -> LlmAgentBuilder

Source

pub fn after_model_callback( self, callback: Box<dyn Fn(Arc<dyn CallbackContext>, LlmResponse) -> Pin<Box<dyn Future<Output = Result<Option<LlmResponse>, AdkError>> + Send>> + Send + Sync>, ) -> LlmAgentBuilder

Source

pub fn before_tool_callback( self, callback: Box<dyn Fn(Arc<dyn CallbackContext>) -> Pin<Box<dyn Future<Output = Result<Option<Content>, AdkError>> + Send>> + Send + Sync>, ) -> LlmAgentBuilder

Source

pub fn after_tool_callback( self, callback: Box<dyn Fn(Arc<dyn CallbackContext>) -> Pin<Box<dyn Future<Output = Result<Option<Content>, AdkError>> + Send>> + Send + Sync>, ) -> LlmAgentBuilder

Source

pub fn after_tool_callback_full( self, callback: Box<dyn Fn(Arc<dyn CallbackContext>, Arc<dyn Tool>, Value, Value) -> Pin<Box<dyn Future<Output = Result<Option<Value>, AdkError>> + Send>> + Send + Sync>, ) -> LlmAgentBuilder

Register a rich after-tool callback that receives the tool, arguments, and response value.

This is the V2 callback surface aligned with the Python/Go ADK model where after_tool_callback receives the full tool execution context. Unlike after_tool_callback (which only receives CallbackContext), this callback can inspect and modify tool results directly.

Return Ok(None) to keep the original response, or Ok(Some(value)) to replace the function response sent to the LLM.

These callbacks run after the legacy after_tool_callback chain. ToolOutcome is available via ctx.tool_outcome().

Source

pub fn on_tool_error( self, callback: Box<dyn Fn(Arc<dyn CallbackContext>, Arc<dyn Tool>, Value, String) -> Pin<Box<dyn Future<Output = Result<Option<Value>, AdkError>> + Send>> + Send + Sync>, ) -> LlmAgentBuilder

Register a callback invoked when a tool execution fails (after retries are exhausted).

If the callback returns Ok(Some(value)), the value is used as a fallback function response to the LLM. If it returns Ok(None), the next callback in the chain is tried. If no callback provides a fallback, the original error is reported to the LLM.

Source

pub fn default_retry_budget(self, budget: RetryBudget) -> LlmAgentBuilder

Set a default retry budget applied to all tools that do not have a per-tool override.

When a tool execution fails and a retry budget applies, the agent retries up to budget.max_retries times with the configured delay between attempts.

Source

pub fn tool_retry_budget( self, tool_name: impl Into<String>, budget: RetryBudget, ) -> LlmAgentBuilder

Set a per-tool retry budget that overrides the default for the named tool.

Per-tool budgets take precedence over the default retry budget.

Source

pub fn circuit_breaker_threshold(self, threshold: u32) -> LlmAgentBuilder

Configure a circuit breaker that temporarily disables tools after threshold consecutive failures within a single invocation.

When a tool’s consecutive failure count reaches the threshold, subsequent calls to that tool are short-circuited with an immediate error response until the next invocation (which resets the state).

Source

pub fn tool_confirmation_policy( self, policy: ToolConfirmationPolicy, ) -> LlmAgentBuilder

Configure tool confirmation requirements for this agent.

Source

pub fn require_tool_confirmation( self, tool_name: impl Into<String>, ) -> LlmAgentBuilder

Require confirmation for a specific tool name.

Source

pub fn require_tool_confirmation_for_all(self) -> LlmAgentBuilder

Require confirmation for all tool calls.

Source

pub fn tool_execution_strategy( self, strategy: ToolExecutionStrategy, ) -> LlmAgentBuilder

Set the tool execution strategy for this agent.

When set, this overrides the RunConfig’s tool_execution_strategy for this agent’s dispatch loop. When None (the default), the RunConfig value is used.

Source

pub fn input_guardrails(self, guardrails: GuardrailSet) -> LlmAgentBuilder

Set input guardrails to validate user input before processing.

Input guardrails run before the agent processes the request and can:

  • Block harmful or off-topic content
  • Redact PII from user input
  • Enforce input length limits

Requires the guardrails feature.

Source

pub fn output_guardrails(self, guardrails: GuardrailSet) -> LlmAgentBuilder

Set output guardrails to validate agent responses.

Output guardrails run after the agent generates a response and can:

  • Enforce JSON schema compliance
  • Redact PII from responses
  • Block harmful content in responses

Requires the guardrails feature.

Source

pub fn build(self) -> Result<LlmAgent, AdkError>

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> FutureExt for T

Source§

fn with_context(self, otel_cx: Context) -> WithContext<Self>

Attaches the provided Context to this type, returning a WithContext wrapper. Read more
Source§

fn with_current_context(self) -> WithContext<Self>

Attaches the current Context to this type, returning a WithContext wrapper. Read more
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> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts 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
Source§

impl<T> IntoRequest<T> for T

Source§

fn into_request(self) -> Request<T>

Wrap the input message T in a tonic::Request
Source§

impl<Unshared, Shared> IntoShared<Shared> for Unshared
where Shared: FromUnshared<Unshared>,

Source§

fn into_shared(self) -> Shared

Creates a shared type from an unshared type.
Source§

impl<L> LayerExt<L> for L

Source§

fn named_layer<S>(&self, service: S) -> Layered<<L as Layer<S>>::Service, S>
where L: Layer<S>,

Applies the layer to a service and wraps it in Layered.
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> Same for T

Source§

type Output = T

Should always be Self
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<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

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