mistral_openapi_client/models/
chat_completion_request.rs1use crate::models;
12use serde::{Deserialize, Serialize};
13
14#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize)]
15pub struct ChatCompletionRequest {
16 #[serde(rename = "model")]
18 pub model: String,
19 #[serde(rename = "temperature", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
20 pub temperature: Option<Option<f64>>,
21 #[serde(rename = "top_p", skip_serializing_if = "Option::is_none")]
23 pub top_p: Option<f64>,
24 #[serde(rename = "max_tokens", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
25 pub max_tokens: Option<Option<i32>>,
26 #[serde(rename = "stream", skip_serializing_if = "Option::is_none")]
28 pub stream: Option<bool>,
29 #[serde(rename = "stop", skip_serializing_if = "Option::is_none")]
30 pub stop: Option<Box<models::Stop>>,
31 #[serde(rename = "random_seed", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
32 pub random_seed: Option<Option<i32>>,
33 #[serde(rename = "metadata", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
34 pub metadata: Option<Option<std::collections::HashMap<String, serde_json::Value>>>,
35 #[serde(rename = "messages")]
37 pub messages: Vec<models::MessagesInner>,
38 #[serde(rename = "response_format", skip_serializing_if = "Option::is_none")]
39 pub response_format: Option<Box<models::ResponseFormat>>,
40 #[serde(rename = "tools", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
41 pub tools: Option<Option<Vec<models::Tool>>>,
42 #[serde(rename = "tool_choice", skip_serializing_if = "Option::is_none")]
43 pub tool_choice: Option<Box<models::ToolChoice>>,
44 #[serde(rename = "presence_penalty", skip_serializing_if = "Option::is_none")]
46 pub presence_penalty: Option<f64>,
47 #[serde(rename = "frequency_penalty", skip_serializing_if = "Option::is_none")]
49 pub frequency_penalty: Option<f64>,
50 #[serde(rename = "n", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
51 pub n: Option<Option<i32>>,
52 #[serde(rename = "prediction", skip_serializing_if = "Option::is_none")]
54 pub prediction: Option<Box<models::Prediction>>,
55 #[serde(rename = "parallel_tool_calls", skip_serializing_if = "Option::is_none")]
57 pub parallel_tool_calls: Option<bool>,
58 #[serde(rename = "prompt_mode", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
59 pub prompt_mode: Option<Option<models::MistralPromptMode>>,
60 #[serde(rename = "guardrails", default, with = "::serde_with::rust::double_option", skip_serializing_if = "Option::is_none")]
61 pub guardrails: Option<Option<Vec<models::GuardrailConfig>>>,
62 #[serde(rename = "safe_prompt", skip_serializing_if = "Option::is_none")]
64 pub safe_prompt: Option<bool>,
65}
66
67impl ChatCompletionRequest {
68 pub fn new(model: String, messages: Vec<models::MessagesInner>) -> ChatCompletionRequest {
69 ChatCompletionRequest {
70 model,
71 temperature: None,
72 top_p: None,
73 max_tokens: None,
74 stream: None,
75 stop: None,
76 random_seed: None,
77 metadata: None,
78 messages,
79 response_format: None,
80 tools: None,
81 tool_choice: None,
82 presence_penalty: None,
83 frequency_penalty: None,
84 n: None,
85 prediction: None,
86 parallel_tool_calls: None,
87 prompt_mode: None,
88 guardrails: None,
89 safe_prompt: None,
90 }
91 }
92}
93