ai-providers 0.0.1

A comprehensive collection of AI provider implementations, schematics, and API integrations for various AI services
Documentation
use crate::openai::request::input_models::{
    input_message::InputMessage, input_reference::InputReference, item::Item,
};
use serde::{Deserialize, Serialize};

#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum InputItemList {
    InputMessage(InputMessage),
    Item(Item),
    ItemReference(InputReference),
}

#[derive(Debug, PartialEq, Serialize, Deserialize)]
#[serde(untagged)]
pub enum Input {
    Messages(Vec<InputItemList>),
    Message(String),
}

impl From<String> for Input {
    fn from(value: String) -> Self {
        Self::Message(value)
    }
}

impl From<Vec<InputItemList>> for Input {
    fn from(input_item_list: Vec<InputItemList>) -> Self {
        Self::Messages(input_item_list)
    }
}

impl Default for Input {
    fn default() -> Self {
        Self::Message("".into())
    }
}

impl Input {
    pub fn from_text(value: impl Into<String>) -> Self {
        Self::Message(value.into())
    }

    pub fn from_input_item_list(input_item_list: Vec<InputItemList>) -> Self {
        Self::Messages(input_item_list)
    }
}