pub struct BypassBuiltinTool { /* private fields */ }Available on crate feature
tools only.Expand description
A built-in tool converted into a function-calling tool so it can coexist with custom function tools under the Gemini Interactions API.
The wrapper is provider-neutral and generic: any built-in tool can adopt it by supplying a name, description, parameter schema, the field that carries the natural-language query, and an internal agent that performs the built-in behaviour.
§Example
ⓘ
use adk_tool::GoogleSearchTool;
use std::sync::Arc;
// `search_agent` is an LlmAgent configured with GoogleSearchTool + a Gemini model.
let tool = GoogleSearchTool::new().with_bypass_multi_tools_limit(Arc::new(search_agent));
assert!(!tool.is_builtin());Implementations§
Source§impl BypassBuiltinTool
impl BypassBuiltinTool
Sourcepub fn new(
name: impl Into<String>,
description: impl Into<String>,
parameters_schema: Value,
query_field: impl Into<String>,
agent: Arc<dyn Agent>,
) -> BypassBuiltinTool
pub fn new( name: impl Into<String>, description: impl Into<String>, parameters_schema: Value, query_field: impl Into<String>, agent: Arc<dyn Agent>, ) -> BypassBuiltinTool
Create a bypass wrapper around agent.
name/description— surfaced to the model as a function tool.parameters_schema— the JSON Schema for the function’s parameters.query_field— the property in the incoming arguments that carries the natural-language query forwarded to the internal agent.agent— the internal single-turn agent that performs the built-in behaviour (e.g. anLlmAgentwith the built-in Google Search tool).
Trait Implementations§
Source§impl Tool for BypassBuiltinTool
impl Tool for BypassBuiltinTool
Source§fn is_builtin(&self) -> bool
fn is_builtin(&self) -> bool
Bypass-converted tools are ordinary function-calling tools, never built-in. This is what allows them to coexist with custom function tools.
Source§fn description(&self) -> &str
fn description(&self) -> &str
Returns a human-readable description of what this tool does.
Source§fn parameters_schema(&self) -> Option<Value>
fn parameters_schema(&self) -> Option<Value>
Returns the JSON Schema for this tool’s parameters, if any.
Source§fn execute<'life0, 'async_trait>(
&'life0 self,
ctx: Arc<dyn ToolContext>,
args: Value,
) -> Pin<Box<dyn Future<Output = Result<Value, AdkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
BypassBuiltinTool: 'async_trait,
fn execute<'life0, 'async_trait>(
&'life0 self,
ctx: Arc<dyn ToolContext>,
args: Value,
) -> Pin<Box<dyn Future<Output = Result<Value, AdkError>> + Send + 'async_trait>>where
'life0: 'async_trait,
BypassBuiltinTool: 'async_trait,
Executes the tool with the given context and arguments.
Source§fn declaration(&self) -> Value
fn declaration(&self) -> Value
Returns the tool declaration that should be exposed to model providers. Read more
Source§fn enhanced_description(&self) -> String
fn enhanced_description(&self) -> String
Returns an enhanced description that may include additional notes.
For long-running tools, this includes a warning not to call the tool
again if it has already returned a pending status.
Default implementation returns the base description.
Source§fn is_long_running(&self) -> bool
fn is_long_running(&self) -> bool
Indicates whether the tool is a long-running operation.
Long-running tools typically return a task ID immediately and
complete the operation asynchronously.
Source§fn response_schema(&self) -> Option<Value>
fn response_schema(&self) -> Option<Value>
Returns the JSON Schema for this tool’s response, if any.
Source§fn required_scopes(&self) -> &[&str]
fn required_scopes(&self) -> &[&str]
Returns the scopes required to execute this tool. Read more
Source§fn is_read_only(&self) -> bool
fn is_read_only(&self) -> bool
Indicates whether this tool performs no side effects.
Read-only tools may be executed concurrently in Auto mode.
Source§fn is_concurrency_safe(&self) -> bool
fn is_concurrency_safe(&self) -> bool
Indicates whether this tool is safe for concurrent execution.
Used by the Parallel strategy to validate dispatch safety.
Auto Trait Implementations§
impl !RefUnwindSafe for BypassBuiltinTool
impl !UnwindSafe for BypassBuiltinTool
impl Freeze for BypassBuiltinTool
impl Send for BypassBuiltinTool
impl Sync for BypassBuiltinTool
impl Unpin for BypassBuiltinTool
impl UnsafeUnpin for BypassBuiltinTool
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
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> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
Source§impl<T> ScopeToolExt for Twhere
T: Tool,
impl<T> ScopeToolExt for Twhere
T: Tool,
Source§fn with_scope_guard(
self,
resolver: impl ScopeResolver + 'static,
) -> ScopedTool<Self>
fn with_scope_guard( self, resolver: impl ScopeResolver + 'static, ) -> ScopedTool<Self>
Wrap this tool with scope enforcement using the given resolver.
Source§impl<T> ToolExt for Twhere
T: Tool,
impl<T> ToolExt for Twhere
T: Tool,
Source§fn with_access_control(self, ac: Arc<AccessControl>) -> ProtectedTool<Self>
fn with_access_control(self, ac: Arc<AccessControl>) -> ProtectedTool<Self>
Wrap this tool with access control.
Source§fn with_access_control_and_audit(
self,
ac: Arc<AccessControl>,
audit: Arc<dyn AuditSink>,
) -> ProtectedTool<Self>
fn with_access_control_and_audit( self, ac: Arc<AccessControl>, audit: Arc<dyn AuditSink>, ) -> ProtectedTool<Self>
Wrap this tool with access control and audit logging.