mindcontrol_types 0.21.0

Mind Control types
Documentation
use litty::literal;
use serde::{Deserialize, Serialize};
use std::collections::BTreeMap;

/// OpenAI model identifier.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum OpenAIModelV1 {
    Gpt4o(OpenAiModelV1Gpt4o),
    Gpt4o20241120(OpenAiModelV1Gpt4o20241120),
    Gpt4o20240806(OpenAiModelV1Gpt4o20240806),
    Gpt4o20240513(OpenAiModelV1Gpt4o20240513),
    Chatgpt4oLatest(OpenAiModelV1Chatgpt4oLatest),
    Gpt4oMini(OpenAiModelV1Gpt4oMini),
    Gpt4oMini20240718(OpenAiModelV1Gpt4oMini20240718),
    O1(OpenAiModelV1O1),
    O120241217(OpenAiModelV1O120241217),
    O1Mini(OpenAiModelV1O1Mini),
    O1Mini20240912(OpenAiModelV1O1Mini20240912),
    O1Preview(OpenAiModelV1O1Preview),
    O1Preview20240912(OpenAiModelV1O1Preview20240912),
    O3Mini(OpenAiModelV1O3Mini),
    O3Mini20250131(OpenAiModelV1O3Mini20250131),
    Gpt4Turbo(OpenAiModelV1Gpt4Turbo),
    Gpt4Turbo20240409(OpenAiModelV1Gpt4Turbo20240409),
    Gpt4TurboPreview(OpenAiModelV1Gpt4TurboPreview),
    Gpt40125Preview(OpenAiModelV1Gpt40125Preview),
    Gpt41106Preview(OpenAiModelV1Gpt41106Preview),
    Gpt4(OpenAiModelV1Gpt4),
    Gpt40613(OpenAiModelV1Gpt40613),
    Gpt40314(OpenAiModelV1Gpt40314),
    Gpt35Turbo(OpenAiModelV1Gpt35Turbo),
    Gpt35Turbo0125(OpenAiModelV1Gpt35Turbo0125),
    Gpt35Turbo1106(OpenAiModelV1Gpt35Turbo1106),
    String(String),
}

#[literal("gpt-4o")]
pub struct OpenAiModelV1Gpt4o;

#[literal("gpt-4o-2024-11-20")]
pub struct OpenAiModelV1Gpt4o20241120;

#[literal("gpt-4o-2024-08-06")]
pub struct OpenAiModelV1Gpt4o20240806;

#[literal("gpt-4o-2024-05-13")]
pub struct OpenAiModelV1Gpt4o20240513;

#[literal("chatgpt-4o-latest")]
pub struct OpenAiModelV1Chatgpt4oLatest;

#[literal("gpt-4o-mini")]
pub struct OpenAiModelV1Gpt4oMini;

#[literal("gpt-4o-mini-2024-07-18")]
pub struct OpenAiModelV1Gpt4oMini20240718;

#[literal("o1")]
pub struct OpenAiModelV1O1;

#[literal("o1-2024-12-17")]
pub struct OpenAiModelV1O120241217;

#[literal("o1-mini")]
pub struct OpenAiModelV1O1Mini;

#[literal("o1-mini-2024-09-12")]
pub struct OpenAiModelV1O1Mini20240912;

#[literal("o1-preview")]
pub struct OpenAiModelV1O1Preview;

#[literal("o1-preview-2024-09-12")]
pub struct OpenAiModelV1O1Preview20240912;

#[literal("o3-mini")]
pub struct OpenAiModelV1O3Mini;

#[literal("o3-mini-2025-01-31")]
pub struct OpenAiModelV1O3Mini20250131;

#[literal("gpt-4-turbo")]
pub struct OpenAiModelV1Gpt4Turbo;

#[literal("gpt-4-turbo-2024-04-09")]
pub struct OpenAiModelV1Gpt4Turbo20240409;

#[literal("gpt-4-turbo-preview")]
pub struct OpenAiModelV1Gpt4TurboPreview;

#[literal("gpt-4-0125-preview")]
pub struct OpenAiModelV1Gpt40125Preview;

#[literal("gpt-4-1106-preview")]
pub struct OpenAiModelV1Gpt41106Preview;

#[literal("gpt-4")]
pub struct OpenAiModelV1Gpt4;

#[literal("gpt-4-0613")]
pub struct OpenAiModelV1Gpt40613;

#[literal("gpt-4-0314")]
pub struct OpenAiModelV1Gpt40314;

#[literal("gpt-3.5-turbo")]
pub struct OpenAiModelV1Gpt35Turbo;

#[literal("gpt-3.5-turbo-0125")]
pub struct OpenAiModelV1Gpt35Turbo0125;

#[literal("gpt-3.5-turbo-1106")]
pub struct OpenAiModelV1Gpt35Turbo1106;

/// OpenAI model settings.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct OpenAISettingsV1 {
    /// Settings type.
    pub r#type: OpenAiSettingsV1TypeOpenai,
    /// Model identifier.
    pub model: Option<OpenAIModelV1>,
}

#[literal("openai")]
pub struct OpenAiSettingsV1TypeOpenai;

/// OpenAI provider enum.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum OpenAIProvider {
    Openai(OpenAiProviderOpenai),
    Azure(OpenAiProviderAzure),
}

#[literal("openai")]
pub struct OpenAiProviderOpenai;

#[literal("azure")]
pub struct OpenAiProviderAzure;

/// OpenAI provider settings.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct OpenAIProviderSettingsV1 {
    pub default: Option<OpenAIProvider>,
    pub models: Option<BTreeMap<String, OpenAIProvider>>,
}