pub trait Tool: Sized + Send + Sync {
type Error: Error + Send + Sync + 'static;
type Args: for<'a> Deserialize<'a> + Send + Sync;
type Output: Serialize;
const NAME: &'static str;
// Required methods
fn definition(
&self,
_prompt: String,
) -> impl Future<Output = ToolDefinition> + Send + Sync;
fn call(
&self,
args: Self::Args,
) -> impl Future<Output = Result<Self::Output, Self::Error>> + Send + Sync;
// Provided method
fn name(&self) -> String { ... }
}Expand description
Trait that represents a simple LLM tool
Required Associated Types§
type Error: Error + Send + Sync + 'static
type Args: for<'a> Deserialize<'a> + Send + Sync
type Output: Serialize
Required Associated Constants§
Required Methods§
sourcefn definition(
&self,
_prompt: String,
) -> impl Future<Output = ToolDefinition> + Send + Sync
fn definition( &self, _prompt: String, ) -> impl Future<Output = ToolDefinition> + Send + Sync
A method returning the tool definition. The user prompt can be used to tailor the definition to the specific use case.
Provided Methods§
Object Safety§
This trait is not object safe.