use crate::models;
use serde::{Deserialize, Serialize};
#[derive(Clone, Default, Debug, PartialEq, Serialize, Deserialize, bon::Builder)]
pub struct DecisionRequest {
#[serde(rename = "model")]
pub model: String,
#[serde(rename = "input")]
pub input: Box<models::DecisionInput>,
#[serde(rename = "questions")]
pub questions: Vec<models::QuestionParam>,
#[serde(rename = "safety_identifier", skip_serializing_if = "Option::is_none")]
pub safety_identifier: Option<String>,
#[serde(rename = "prompt_cache_key", skip_serializing_if = "Option::is_none")]
pub prompt_cache_key: Option<String>,
#[serde(
rename = "prompt_cache_options",
skip_serializing_if = "Option::is_none"
)]
pub prompt_cache_options: Option<models::DecisionRequestPromptCacheOptions>,
}
impl DecisionRequest {
pub fn new(
model: String,
input: models::DecisionInput,
questions: Vec<models::QuestionParam>,
) -> DecisionRequest {
DecisionRequest {
model,
input: Box::new(input),
questions,
safety_identifier: None,
prompt_cache_key: None,
prompt_cache_options: None,
}
}
}
impl std::fmt::Display for DecisionRequest {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
match serde_json::to_string(self) {
Ok(s) => write!(f, "{}", s),
Err(_) => Err(std::fmt::Error),
}
}
}