1use serde::{Deserialize, Serialize};
2use serde_json::Value;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct ToolDefinition {
6 pub name: String,
7 pub description: String,
8 pub parameters: Value,
9}
10
11impl ToolDefinition {
12 pub fn to_openai_tool(&self) -> Value {
13 serde_json::json!({
14 "type": "function",
15 "function": {
16 "name": self.name,
17 "description": self.description,
18 "parameters": self.parameters,
19 }
20 })
21 }
22
23 pub fn to_openai_function(&self) -> Value {
24 serde_json::json!({
25 "name": self.name,
26 "description": self.description,
27 "parameters": self.parameters,
28 })
29 }
30}