alith_interface/llms/api/openai/
builder.rs1use 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}