mistralrs_core/tools/
request.rs

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