use crate::core::ChatMessage;
use crate::engine::SamplingRuntimeOverride;
use crate::client::EndpointRef;
#[derive(Debug, Clone, PartialEq, Eq, Default)]
pub struct SippRequestContext {
pub request_id: Option<String>,
}
pub type EndpointOptions = serde_json::Map<String, serde_json::Value>;
pub type ProviderOptions = serde_json::Map<String, serde_json::Value>;
#[derive(Debug, Clone, PartialEq, Default)]
pub struct SippTextOptions {
pub max_tokens: Option<u32>,
pub temperature: Option<f32>,
pub top_p: Option<f32>,
pub stop: Vec<String>,
}
#[derive(Debug, Clone, PartialEq, Default)]
pub struct LocalTextOptions {
pub context_key: Option<String>,
pub grammar: Option<String>,
pub json_schema: Option<String>,
pub sampling: Option<SamplingRuntimeOverride>,
pub media: Vec<Vec<u8>>,
}
impl LocalTextOptions {
pub(crate) fn has_fields(&self) -> bool {
self.context_key.is_some()
|| self.grammar.is_some()
|| self.json_schema.is_some()
|| self.sampling.is_some()
|| !self.media.is_empty()
}
}
#[derive(Debug, Clone, PartialEq, Default)]
pub struct LocalEmbedOptions {
pub context_key: Option<String>,
pub normalize: Option<bool>,
}
impl LocalEmbedOptions {
pub(crate) fn has_fields(&self) -> bool {
self.context_key.is_some() || self.normalize.is_some()
}
}
#[derive(Debug, Clone, PartialEq, Default)]
pub struct SippQueryRequest {
pub endpoint: Option<EndpointRef>,
pub prompt: String,
pub options: SippTextOptions,
pub local: LocalTextOptions,
pub endpoint_options: EndpointOptions,
pub provider_options: ProviderOptions,
pub emit_tokens: bool,
}
#[derive(Debug, Clone, PartialEq, Default)]
pub struct SippChatRequest {
pub endpoint: Option<EndpointRef>,
pub messages: Vec<ChatMessage>,
pub options: SippTextOptions,
pub local: LocalTextOptions,
pub endpoint_options: EndpointOptions,
pub provider_options: ProviderOptions,
pub emit_tokens: bool,
}
#[derive(Debug, Clone, PartialEq, Default)]
pub struct SippEmbedRequest {
pub endpoint: Option<EndpointRef>,
pub input: String,
pub local: LocalEmbedOptions,
pub endpoint_options: EndpointOptions,
pub provider_options: ProviderOptions,
}