litellm_rs/sdk/types/
tool.rs1use serde::{Deserialize, Serialize};
2
3#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct ToolCall {
6 pub id: String,
8 #[serde(rename = "type")]
10 pub tool_type: String,
11 pub function: Function,
13}
14
15#[derive(Debug, Clone, Serialize, Deserialize)]
17pub struct Function {
18 pub name: String,
20 #[serde(skip_serializing_if = "Option::is_none")]
22 pub description: Option<String>,
23 #[serde(default, skip_serializing_if = "serde_json::Value::is_null")]
25 pub parameters: serde_json::Value,
26 #[serde(skip_serializing_if = "Option::is_none")]
28 pub arguments: Option<String>,
29}
30
31#[derive(Debug, Clone, Serialize, Deserialize)]
33pub struct Tool {
34 #[serde(rename = "type")]
36 pub tool_type: String,
37 pub function: Function,
39}
40
41#[derive(Debug, Clone, Serialize, Deserialize)]
43#[serde(untagged)]
44pub enum ToolChoice {
45 None,
47 Auto,
49 Required,
51 Function {
53 name: String,
55 },
56}