use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
pub struct AgentsCompletionRequest {
#[serde(rename = "max_tokens", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub max_tokens: Option<Option<i32>>,
#[serde(rename = "stream", skip_serializing_if = "Option::is_none")]
pub stream: Option<bool>,
#[serde(rename = "stop", skip_serializing_if = "Option::is_none")]
pub stop: Option<Box<models::Stop>>,
#[serde(rename = "random_seed", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub random_seed: Option<Option<i32>>,
#[serde(rename = "metadata", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub metadata: Option<Option<std::collections::HashMap<String, serde_json::Value>>>,
#[serde(rename = "messages")]
pub messages: Vec<models::MessagesInner>,
#[serde(rename = "response_format", skip_serializing_if = "Option::is_none")]
pub response_format: Option<Box<models::ResponseFormat>>,
#[serde(rename = "tools", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub tools: Option<Option<Vec<models::Tool>>>,
#[serde(rename = "tool_choice", skip_serializing_if = "Option::is_none")]
pub tool_choice: Option<Box<models::ToolChoice1>>,
#[serde(rename = "presence_penalty", skip_serializing_if = "Option::is_none")]
pub presence_penalty: Option<f64>,
#[serde(rename = "frequency_penalty", skip_serializing_if = "Option::is_none")]
pub frequency_penalty: Option<f64>,
#[serde(rename = "n", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub n: Option<Option<i32>>,
#[serde(rename = "prediction", skip_serializing_if = "Option::is_none")]
pub prediction: Option<Box<models::Prediction>>,
#[serde(rename = "parallel_tool_calls", skip_serializing_if = "Option::is_none")]
pub parallel_tool_calls: Option<bool>,
#[serde(rename = "prompt_mode", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
pub prompt_mode: Option<Option<models::MistralPromptMode>>,
#[serde(rename = "agent_id")]
pub agent_id: String,
}
impl AgentsCompletionRequest {
pub fn new(messages: Vec<models::MessagesInner>, agent_id: String) -> AgentsCompletionRequest {
AgentsCompletionRequest {
max_tokens: None,
stream: None,
stop: None,
random_seed: None,
metadata: None,
messages,
response_format: None,
tools: None,
tool_choice: None,
presence_penalty: None,
frequency_penalty: None,
n: None,
prediction: None,
parallel_tool_calls: None,
prompt_mode: None,
agent_id,
}
}
}