alith_interface/llms/api/openai/
builder.rs

1use super::{OpenAIBackend, OpenAIConfig};
2use crate::llms::{
3    LLMBackend,
4    api::config::{ApiConfig, LLMApiConfigTrait},
5};
6use alith_devices::logging::{LoggingConfig, LoggingConfigTrait};
7use alith_models::api_model::{ApiLLMModel, openai::OpenAIModelTrait};
8use std::sync::Arc;
9
10pub struct OpenAIBackendBuilder {
11    pub config: OpenAIConfig,
12    pub model: ApiLLMModel,
13}
14
15impl Default for OpenAIBackendBuilder {
16    fn default() -> Self {
17        Self {
18            config: Default::default(),
19            model: ApiLLMModel::gpt_4_o_mini(),
20        }
21    }
22}
23
24impl OpenAIBackendBuilder {
25    pub fn init(self) -> crate::Result<Arc<LLMBackend>> {
26        Ok(Arc::new(LLMBackend::OpenAI(OpenAIBackend::new(
27            self.config,
28            self.model,
29        )?)))
30    }
31}
32
33impl LLMApiConfigTrait for OpenAIBackendBuilder {
34    fn api_base_config_mut(&mut self) -> &mut ApiConfig {
35        &mut self.config.api_config
36    }
37
38    fn api_config(&self) -> &ApiConfig {
39        &self.config.api_config
40    }
41}
42
43impl OpenAIModelTrait for OpenAIBackendBuilder {
44    fn model(&mut self) -> &mut ApiLLMModel {
45        &mut self.model
46    }
47}
48
49impl LoggingConfigTrait for OpenAIBackendBuilder {
50    fn logging_config_mut(&mut self) -> &mut LoggingConfig {
51        &mut self.config.logging_config
52    }
53}