use json::JsonValue;
use crate::chat::Chat;
use crate::files::Files;
use crate::models::Models;
mod chat;
mod images;
mod models;
mod files;
#[derive(Clone, Debug)]
pub struct OpenAi {
token: String,
user_id: String,
model: String,
}
impl OpenAi {
pub fn new(token: &str, user_id: &str, model: &str) -> Self {
Self {
token: token.to_string(),
user_id: user_id.to_string(),
model: model.parse().unwrap(),
}
}
pub fn chat(&mut self, history: JsonValue, prompt: &str) -> Result<JsonValue, String> {
Chat::new(self.clone()).request(history, prompt).clone()
}
pub fn models(&mut self) -> Result<JsonValue, String> {
Models::new(self.clone()).request()
}
pub fn files(&mut self, path: String) -> Result<JsonValue, String> {
Files::new(self.clone()).request(path)
}
}