pub struct ExecutableTool {
pub definition: ToolDefinition,
pub safety: ParallelSafety,
pub category: Option<ToolCategory>,
/* private fields */
}Expand description
可执行的工具 — 定义 + 安全元数据 + 执行器。
与 ToolDefinition 的区别:
ToolDefinition:纯数据,Provider 序列化发送给 LLMExecutableTool:可执行,Agent 调用时查找并执行
与运行时(lellm-agent)的区别:
ExecutableTool:描述“这个工具能做什么 + 怎么执行“,但不负责调度ToolExecutor/ToolCatalog/ToolSnapshot:负责 lookup, dispatch, retry, parallel
用户通过 ExecutableTool::safe() 等工厂方法构造,
或由 #[tool] 宏自动生成。
Fields§
§definition: ToolDefinition工具定义(纯元数据,可被 Provider 序列化)
safety: ParallelSafety并行安全级别
category: Option<ToolCategory>工具类别(仅 CategoryExclusive 时使用)
Implementations§
Source§impl ExecutableTool
impl ExecutableTool
Sourcepub fn definition(&self) -> &ToolDefinition
pub fn definition(&self) -> &ToolDefinition
获取工具定义的引用。
Sourcepub fn safety(&self) -> &ParallelSafety
pub fn safety(&self) -> &ParallelSafety
获取并行安全级别。
Sourcepub fn category(&self) -> Option<&ToolCategory>
pub fn category(&self) -> Option<&ToolCategory>
获取工具类别(如果有)。
Sourcepub fn execute(
&self,
args: &Value,
) -> Pin<Box<dyn Future<Output = ToolResult> + Send>>
pub fn execute( &self, args: &Value, ) -> Pin<Box<dyn Future<Output = ToolResult> + Send>>
执行工具调用,返回未来对象。
Sourcepub fn from_fn(
def: ToolDefinition,
safety: ParallelSafety,
category: Option<ToolCategory>,
f: ToolFn,
) -> Self
pub fn from_fn( def: ToolDefinition, safety: ParallelSafety, category: Option<ToolCategory>, f: ToolFn, ) -> Self
从原始执行函数构造。
用于 MCP bridge 等需要直接控制执行函数的场景。
Sourcepub fn safe<F, Fut>(def: ToolDefinition, f: F) -> Self
pub fn safe<F, Fut>(def: ToolDefinition, f: F) -> Self
并行安全(Safe)工具注册。
Sourcepub fn category_exclusive<F, Fut>(
def: ToolDefinition,
category: ToolCategory,
f: F,
) -> Self
pub fn category_exclusive<F, Fut>( def: ToolDefinition, category: ToolCategory, f: F, ) -> Self
分类内互斥(CategoryExclusive)工具注册。
Sourcepub fn exclusive<F, Fut>(def: ToolDefinition, f: F) -> Self
pub fn exclusive<F, Fut>(def: ToolDefinition, f: F) -> Self
全局互斥(Exclusive)工具注册。
Sourcepub fn safe_fn<T, F, Fut>(def: ToolDefinition, f: F) -> Self
pub fn safe_fn<T, F, Fut>(def: ToolDefinition, f: F) -> Self
强类型便捷构造 — 自动反序列化参数(Safe)。
闭包接收反序列化后的 T,而非原始 serde_json::Value。
反序列化失败时返回 ToolErrorKind::InvalidInput。
Sourcepub fn category_exclusive_fn<T, F, Fut>(
def: ToolDefinition,
category: ToolCategory,
f: F,
) -> Self
pub fn category_exclusive_fn<T, F, Fut>( def: ToolDefinition, category: ToolCategory, f: F, ) -> Self
强类型便捷构造 — 自动反序列化参数(CategoryExclusive)。
Sourcepub fn exclusive_fn<T, F, Fut>(def: ToolDefinition, f: F) -> Self
pub fn exclusive_fn<T, F, Fut>(def: ToolDefinition, f: F) -> Self
强类型便捷构造 — 自动反序列化参数(Exclusive)。
Trait Implementations§
Source§impl Clone for ExecutableTool
impl Clone for ExecutableTool
Source§fn clone(&self) -> ExecutableTool
fn clone(&self) -> ExecutableTool
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl !RefUnwindSafe for ExecutableTool
impl !UnwindSafe for ExecutableTool
impl Freeze for ExecutableTool
impl Send for ExecutableTool
impl Sync for ExecutableTool
impl Unpin for ExecutableTool
impl UnsafeUnpin for ExecutableTool
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