omni_llm_kit/models/openai_provider/
provider.rs1use crate::http_client::HttpClient;
2use crate::model::{
3 LanguageModel, LanguageModelProvider, LanguageModelProviderId, LanguageModelProviderName,
4};
5use crate::models::openai_provider::openai_model::{
6 OPEN_AI_PROVIDER_ID, OPEN_AI_PROVIDER_NAME, OpenAiLanguageModel,
7};
8use std::sync::{Arc, Mutex};
9use crate::openai;
10
11const PROVIDER_ID: LanguageModelProviderId = OPEN_AI_PROVIDER_ID;
12const PROVIDER_NAME: LanguageModelProviderName = OPEN_AI_PROVIDER_NAME;
13
14#[derive(Default, Clone, Debug, PartialEq)]
15pub struct OpenAiSettings {
16 pub api_url: String,
17 pub api_key: String,
18}
19pub struct OpenAiLanguageModelProvider {
20 http_client: Arc<dyn HttpClient>,
21}
22
23impl OpenAiLanguageModelProvider {
24 pub fn new(client: Arc<dyn HttpClient>) -> Self {
25 Self {
26 http_client: client,
27 }
29 }
30 pub fn create_language_model(&self, model: openai::Model) -> Arc<dyn LanguageModel> {
31 Arc::new(OpenAiLanguageModel {
32 id: model.id().to_string().into(),
33 model,
34 http_client: self.http_client.clone(),
35 })
37 }
38}
39#[async_trait::async_trait]
40impl LanguageModelProvider for OpenAiLanguageModelProvider {
41 fn id(&self) -> LanguageModelProviderId {
42 PROVIDER_ID
43 }
44
45 fn name(&self) -> LanguageModelProviderName {
46 PROVIDER_NAME
47 }
48
49 fn default_model(&self) -> Option<Arc<dyn LanguageModel>> {
50 todo!()
51 }
52
53 fn provided_models(&self) -> Vec<Arc<dyn LanguageModel>> {
54 todo!()
55 }
56 fn default_fast_model(&self) -> Option<Arc<dyn LanguageModel>> {
57 todo!()
58 }
59
60 }