1use serde::{Deserialize, Serialize};
2use crate::types::Message;
3
4#[derive(Debug, Clone, Serialize, Deserialize)]
5pub struct ChatCompletionRequest {
6 pub model: String,
7 pub messages: Vec<Message>,
8 pub temperature: Option<f32>,
9 pub max_tokens: Option<u32>,
10 pub stream: Option<bool>,
11 pub top_p: Option<f32>,
12 pub frequency_penalty: Option<f32>,
13 pub presence_penalty: Option<f32>,
14}
15
16impl ChatCompletionRequest {
17 pub fn new(model: String, messages: Vec<Message>) -> Self {
18 Self {
19 model,
20 messages,
21 temperature: None,
22 max_tokens: None,
23 stream: None,
24 top_p: None,
25 frequency_penalty: None,
26 presence_penalty: None,
27 }
28 }
29
30 pub fn with_temperature(mut self, temperature: f32) -> Self {
31 self.temperature = Some(temperature);
32 self
33 }
34
35 pub fn with_max_tokens(mut self, max_tokens: u32) -> Self {
36 self.max_tokens = Some(max_tokens);
37 self
38 }
39}