mistralrs_core/tools/
request.rs

1use std::collections::HashMap;
2
3use serde_json::Value;
4
5#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
6pub enum ToolType {
7    #[serde(rename = "function")]
8    Function,
9}
10
11#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
12pub enum ToolChoice {
13    #[serde(rename = "none")]
14    /// Disallow selection of tools.
15    None,
16    #[serde(rename = "auto")]
17    /// Allow automatic selection of any given tool, or none.
18    Auto,
19    #[serde(untagged)]
20    /// Force selection of a given tool.
21    Tool(Tool),
22}
23
24#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
25pub struct Function {
26    pub description: Option<String>,
27    pub name: String,
28    #[serde(alias = "arguments")]
29    pub parameters: Option<HashMap<String, Value>>,
30}
31
32#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
33pub struct Tool {
34    #[serde(rename = "type")]
35    pub tp: ToolType,
36    pub function: Function,
37}