Struct Tools

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

Tool registry for managing and calling tools by name.

§Example

use ai_types::llm::tool::Tools;

let mut tools = Tools::new();
// tools.register(Calculator);
let definitions = tools.definitions();
// let result = tools.call("calculator", r#"{"operation": "add", "a": 5, "b": 3}"#).await;

Implementations§

Source§

impl Tools

Source

pub const fn new() -> Self

Creates a new empty tools registry.

Source

pub fn definitions(&self) -> Vec<ToolDefinition>

Returns definitions of all registered tools.

Source

pub fn register<T: Tool + 'static>(&mut self, tool: T)

Registers a new tool. Replaces existing tool with same name.

The tool must implement Tool and be 'static.

Source

pub fn unregister(&mut self, name: &str)

Removes a tool from the registry.

Source

pub async fn call(&mut self, name: &str, args: String) -> Result

Calls a tool by name with JSON arguments.

§Errors

Returns an error if the tool is not found, arguments cannot be parsed, or tool execution fails.

Trait Implementations§

Source§

impl Debug for Tools

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for Tools

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

§

impl Freeze for Tools

§

impl !RefUnwindSafe for Tools

§

impl Send for Tools

§

impl !Sync for Tools

§

impl Unpin for Tools

§

impl !UnwindSafe for Tools

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, 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 = 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<T> ErasedDestructor for T
where T: 'static,