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