1pub mod config;
2mod error;
3mod text;
4
5use crate::config::NihilityModelConfig;
6pub use crate::error::NihilityModelError;
7pub use crate::text::TextResponseStream;
8use async_openai::Client;
9use async_openai::config::{AzureConfig, OpenAIConfig};
10
11#[derive(Clone)]
12pub struct NihilityModel {
13 config: NihilityModelConfig,
14 http_client: reqwest::Client,
15}
16
17pub enum ModelClient {
18 OpenAI(Client<OpenAIConfig>),
19 Azure(Client<AzureConfig>),
20}
21
22impl NihilityModel {
23 pub fn init(config: NihilityModelConfig) -> NihilityModel {
24 Self {
25 config,
26 http_client: reqwest::Client::new(),
27 }
28 }
29
30 pub fn init_from_file_config() -> Result<NihilityModel, NihilityModelError> {
31 Ok(Self::init(nihility_config::get_config::<
32 NihilityModelConfig,
33 >(env!("CARGO_PKG_NAME"))?))
34 }
35}