Skip to main content

ai_lib_rust/types/
tool.rs

1//! Tool calling definitions based on AI-Protocol standard_schema
2
3use serde::{Deserialize, Serialize};
4
5/// Tool definition (for function calling)
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct ToolDefinition {
8    #[serde(rename = "type")]
9    pub tool_type: String, // "function"
10    pub function: FunctionDefinition,
11}
12
13#[derive(Debug, Clone, Serialize, Deserialize)]
14pub struct FunctionDefinition {
15    pub name: String,
16    pub description: Option<String>,
17    pub parameters: Option<serde_json::Value>, // JSON Schema
18}
19
20/// Tool call (invocation from model)
21#[derive(Debug, Clone, Serialize, Deserialize)]
22pub struct ToolCall {
23    pub id: String,
24    pub name: String,
25    pub arguments: serde_json::Value,
26}
27
28/// Tool result (response to tool call)
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct ToolResult {
31    pub tool_use_id: String,
32    pub content: serde_json::Value,
33    #[serde(default)]
34    pub is_error: bool,
35}