pub(crate) mod client;
pub(crate) mod conversions;
pub(crate) mod embedding_model;
pub(crate) mod language_model;
#[macro_use]
pub mod macros;
pub mod settings;
use crate::core::DynamicModel;
use crate::core::capabilities::ModelName;
use client::ChatCompletionsOptions;
use settings::OpenAIChatCompletionsSettings;
#[derive(Debug, Clone)]
pub struct OpenAIChatCompletions<M: ModelName> {
pub settings: OpenAIChatCompletionsSettings,
pub(crate) options: ChatCompletionsOptions,
_phantom: std::marker::PhantomData<M>,
}
impl<M: ModelName> Default for OpenAIChatCompletions<M> {
fn default() -> Self {
let settings = OpenAIChatCompletionsSettings::default();
let options = ChatCompletionsOptions {
model: M::MODEL_NAME.to_string(),
messages: vec![],
..Default::default()
};
Self {
settings,
options,
_phantom: std::marker::PhantomData,
}
}
}
impl OpenAIChatCompletions<DynamicModel> {
pub fn model_name(name: impl Into<String>) -> Self {
let settings = OpenAIChatCompletionsSettings::default();
let options = ChatCompletionsOptions {
model: name.into(),
messages: vec![],
..Default::default()
};
Self {
settings,
options,
_phantom: std::marker::PhantomData,
}
}
}