use crate::{
codec::{Dict, StrOrList},
value::Value,
};
wire_struct! {
#[derive(Debug, Clone, PartialEq)]
pub struct SamplingParams: array + Default {
pub max_new_tokens: Option<i64> = None,
pub stop: Option<StrOrList> = None,
pub stop_token_ids: Option<Vec<i64>> = None,
pub temperature: f64 = 1.0,
pub top_p: f64 = 1.0,
pub top_k: i64 = -1,
pub min_p: f64 = 0.0,
pub frequency_penalty: f64 = 0.0,
pub presence_penalty: f64 = 0.0,
pub repetition_penalty: f64 = 1.0,
pub min_new_tokens: i64 = 0,
pub json_schema: Option<String> = None,
pub regex: Option<String> = None,
pub ebnf: Option<String> = None,
pub structural_tag: Option<String> = None,
pub ignore_eos: bool = false,
pub skip_special_tokens: bool = true,
pub spaces_between_special_tokens: bool = true,
pub no_stop_trim: bool = false,
pub thinking_budget: Option<i64> = None,
pub custom_params: Option<Dict<String, Value>> = None,
pub stream_interval: Option<i64> = None,
pub logit_bias: Option<Dict<String, f64>> = None,
pub seed: Option<i64> = None,
pub logprobs: Option<i64> = None,
pub n: i64 = 1,
pub stop_strs: Option<StrOrList> = None,
pub stop_str_max_len: i64 = 0,
pub is_normalized: bool = false,
}
}