/*
* Mistral AI API
*
* Our Chat Completion and Embeddings APIs specification. Create your account on [La Plateforme](https://console.mistral.ai) to get access and read the [docs](https://docs.mistral.ai) to learn how to use it.
*
* The version of the OpenAPI document: 1.0.0
*
* Generated by: https://openapi-generator.tech
*/
use crate::models;
use serde::{Deserialize, Serialize};
/// ToolChoice : Controls which (if any) tool is called by the model. `none` means the model will not call any tool and instead generates a message. `auto` means the model can pick between generating a message or calling one or more tools. `any` or `required` means the model must call one or more tools. Specifying a particular tool via `{\"type\": \"function\", \"function\": {\"name\": \"my_function\"}}` forces the model to call that tool.
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct ToolChoice {
#[serde(rename = "type", skip_serializing_if = "Option::is_none")]
pub r#type: Option<models::ToolTypes>,
#[serde(rename = "function")]
pub function: Box<models::FunctionName>,
}
impl ToolChoice {
/// Controls which (if any) tool is called by the model. `none` means the model will not call any tool and instead generates a message. `auto` means the model can pick between generating a message or calling one or more tools. `any` or `required` means the model must call one or more tools. Specifying a particular tool via `{\"type\": \"function\", \"function\": {\"name\": \"my_function\"}}` forces the model to call that tool.
pub fn new(function: models::FunctionName) -> ToolChoice {
ToolChoice {
r#type: None,
function: Box::new(function),
}
}
}