mistralrs_core/tools/
request.rs1use 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 None,
18 #[serde(rename = "auto")]
19 Auto,
21 #[serde(untagged)]
22 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}