mindcontrol_types 0.21.0

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

/// Prompt object.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PromptV1 {
    /// Prompt messages.
    pub messages: Vec<PromptMessageV1>,
    /// System model instructions.
    pub system: Option<String>,
    /// LLM settings.
    pub settings: Option<super::llm::LlmSettingsV1>,
}

/// Prompt message.
#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
pub struct PromptMessageV1 {
    /// Message role.
    pub role: PromptMessageV1Role,
    /// Message content.
    pub content: String,
}

#[literal("user")]
pub struct PromptMessageV1RoleUser;

#[literal("assistant")]
pub struct PromptMessageV1RoleAssistant;

#[derive(Debug, Clone, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum PromptMessageV1Role {
    User(PromptMessageV1RoleUser),
    Assistant(PromptMessageV1RoleAssistant),
}