ai_lib/types/
request.rs

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}