ai_providers/openai/request/
input.rs1use 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}