simple_agent_type/
tool.rs1use serde::{Deserialize, Serialize};
4use serde_json::Value;
5
6#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
8#[serde(rename_all = "snake_case")]
9pub enum ToolType {
10 Function,
12}
13
14#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
16pub struct ToolFunction {
17 pub name: String,
19 #[serde(skip_serializing_if = "Option::is_none")]
21 pub description: Option<String>,
22 #[serde(skip_serializing_if = "Option::is_none")]
24 pub parameters: Option<Value>,
25}
26
27#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
29pub struct ToolDefinition {
30 #[serde(rename = "type")]
32 pub tool_type: ToolType,
33 pub function: ToolFunction,
35}
36
37#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
39#[serde(rename_all = "snake_case")]
40pub enum ToolChoiceMode {
41 Auto,
43 None,
45}
46
47#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
49pub struct ToolChoiceTool {
50 #[serde(rename = "type")]
52 pub tool_type: ToolType,
53 pub function: ToolChoiceFunction,
55}
56
57#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
59pub struct ToolChoiceFunction {
60 pub name: String,
62}
63
64#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
66#[serde(untagged)]
67pub enum ToolChoice {
68 Mode(ToolChoiceMode),
70 Tool(ToolChoiceTool),
72}
73
74#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
76pub struct ToolCallFunction {
77 pub name: String,
79 pub arguments: String,
81}
82
83#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
85pub struct ToolCall {
86 pub id: String,
88 #[serde(rename = "type")]
90 pub tool_type: ToolType,
91 pub function: ToolCallFunction,
93}