llm_interface/llms/api/openai/
builder.rs

1// Internal imports
2use super::*;
3use llm_devices::LoggingConfigTrait;
4use llm_models::api_model::openai::OpenAiModelTrait;
5
6// Everything here can be implemented for any struct.
7pub struct OpenAiBackendBuilder {
8    pub config: OpenAiConfig,
9    pub model: ApiLlmModel,
10}
11
12impl Default for OpenAiBackendBuilder {
13    fn default() -> Self {
14        Self {
15            config: Default::default(),
16            model: ApiLlmModel::gpt_4_o_mini(),
17        }
18    }
19}
20
21impl OpenAiBackendBuilder {
22    pub fn init(self) -> crate::Result<std::sync::Arc<LlmBackend>> {
23        Ok(std::sync::Arc::new(LlmBackend::OpenAi(OpenAiBackend::new(
24            self.config,
25            self.model,
26        )?)))
27    }
28}
29
30impl LlmApiConfigTrait for OpenAiBackendBuilder {
31    fn api_base_config_mut(&mut self) -> &mut ApiConfig {
32        &mut self.config.api_config
33    }
34
35    fn api_config(&self) -> &ApiConfig {
36        &self.config.api_config
37    }
38}
39
40impl OpenAiModelTrait for OpenAiBackendBuilder {
41    fn model(&mut self) -> &mut ApiLlmModel {
42        &mut self.model
43    }
44}
45
46impl LoggingConfigTrait for OpenAiBackendBuilder {
47    fn logging_config_mut(&mut self) -> &mut LoggingConfig {
48        &mut self.config.logging_config
49    }
50}