ai_providers/openai/request/
input.rs

1use crate::openai::request::input_models::{
2    input_message::InputMessage, input_reference::InputReference, item::Item,
3};
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, PartialEq, Serialize, Deserialize)]
7#[serde(untagged)]
8pub enum InputItemList {
9    InputMessage(InputMessage),
10    Item(Item),
11    ItemReference(InputReference),
12}
13
14#[derive(Debug, PartialEq, Serialize, Deserialize)]
15#[serde(untagged)]
16pub enum Input {
17    Messages(Vec<InputItemList>),
18    Message(String),
19}
20
21impl From<String> for Input {
22    fn from(value: String) -> Self {
23        Self::Message(value)
24    }
25}
26
27impl From<Vec<InputItemList>> for Input {
28    fn from(input_item_list: Vec<InputItemList>) -> Self {
29        Self::Messages(input_item_list)
30    }
31}
32
33impl Default for Input {
34    fn default() -> Self {
35        Self::Message("".into())
36    }
37}
38
39impl Input {
40    pub fn from_text(value: impl Into<String>) -> Self {
41        Self::Message(value.into())
42    }
43
44    pub fn from_input_item_list(input_item_list: Vec<InputItemList>) -> Self {
45        Self::Messages(input_item_list)
46    }
47}