use config::OllamaConfig;
use crate::openai;
pub mod config;
pub type Ollama = openai::GenericOpenAI<OllamaConfig>;
pub type OllamaBuilder = openai::GenericOpenAIBuilder<OllamaConfig>;
pub type OllamaBuilderError = openai::GenericOpenAIBuilderError;
pub use openai::{Options, OptionsBuilder, OptionsBuilderError};
impl Ollama {
pub fn builder() -> OllamaBuilder {
OllamaBuilder::default()
}
}
impl Default for Ollama {
fn default() -> Self {
Self::builder().build().unwrap()
}
}
#[cfg(test)]
mod test {
use super::*;
#[test]
fn test_default_prompt_model() {
let openai = Ollama::builder()
.default_prompt_model("llama3.1")
.build()
.unwrap();
assert_eq!(
openai.default_options.prompt_model,
Some("llama3.1".to_string())
);
}
#[test]
fn test_default_embed_model() {
let ollama = Ollama::builder()
.default_embed_model("mxbai-embed-large")
.build()
.unwrap();
assert_eq!(
ollama.default_options.embed_model,
Some("mxbai-embed-large".to_string())
);
}
#[test]
fn test_default_models() {
let ollama = Ollama::builder()
.default_embed_model("mxbai-embed-large")
.default_prompt_model("llama3.1")
.build()
.unwrap();
assert_eq!(
ollama.default_options.embed_model,
Some("mxbai-embed-large".to_string())
);
assert_eq!(
ollama.default_options.prompt_model,
Some("llama3.1".to_string())
);
}
#[test]
fn test_building_via_default_prompt_model() {
let mut client = Ollama::default();
assert!(client.default_options.prompt_model.is_none());
client.with_default_prompt_model("llama3.1");
assert_eq!(
client.default_options.prompt_model,
Some("llama3.1".to_string())
);
}
#[test]
fn test_building_via_default_embed_model() {
let mut client = Ollama::default();
assert!(client.default_options.embed_model.is_none());
client.with_default_embed_model("mxbai-embed-large");
assert_eq!(
client.default_options.embed_model,
Some("mxbai-embed-large".to_string())
);
}
#[test]
fn test_building_via_default_models() {
let mut client = Ollama::default();
assert!(client.default_options.embed_model.is_none());
client.with_default_prompt_model("llama3.1");
client.with_default_embed_model("mxbai-embed-large");
assert_eq!(
client.default_options.prompt_model,
Some("llama3.1".to_string())
);
assert_eq!(
client.default_options.embed_model,
Some("mxbai-embed-large".to_string())
);
}
}