Skip to main content

nihility_model/
lib.rs

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}