crate::ix!();
#[derive(Debug, Serialize, Deserialize)]
pub struct GptRequestBody {
#[serde(with = "model_type")]
model: GptModelType,
messages: Vec<GptMessage>,
max_tokens: u32,
}
impl GptRequestBody {
pub fn default_max_tokens() -> u32 {
1024
}
pub fn default_max_tokens_given_image(_image_b64: &str) -> u32 {
2048
}
pub fn new_basic(system_message: &str, user_message: &str) -> Self {
Self {
model: GptModelType::Gpt4Turbo,
messages: vec![
GptMessage::system_message(system_message),
GptMessage::user_message(user_message),
],
max_tokens: Self::default_max_tokens(),
}
}
pub fn new_with_image(system_message: &str, user_message: &str, image_b64: &str) -> Self {
Self {
model: GptModelType::Gpt4o,
messages: vec![
GptMessage::system_message(system_message),
GptMessage::user_message_with_image(user_message,image_b64),
],
max_tokens: Self::default_max_tokens_given_image(image_b64),
}
}
}