use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use serde_json::Value;
#[derive(Debug, Clone, Serialize, Default)]
pub struct ResponseCreateParams {
pub model: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub input: Option<Value>,
#[serde(skip_serializing_if = "Option::is_none")]
pub instructions: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub max_output_tokens: Option<u32>,
#[serde(skip_serializing_if = "Option::is_none")]
pub metadata: Option<HashMap<String, Value>>,
#[serde(skip_serializing_if = "Option::is_none")]
pub temperature: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub top_p: Option<f64>,
#[serde(skip_serializing_if = "Option::is_none")]
pub store: Option<bool>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stream_options: Option<Value>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
impl ResponseCreateParams {
pub fn new(model: impl Into<String>) -> Self {
Self {
model: model.into(),
..Self::default()
}
}
pub fn input(mut self, input: impl Into<Value>) -> Self {
self.input = Some(input.into());
self
}
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
pub struct Response {
pub id: String,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}
#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
pub struct ResponseStreamEvent {
#[serde(default)]
pub r#type: Option<String>,
#[serde(flatten)]
pub extra: HashMap<String, Value>,
}