use std::sync::Arc;
use lazy_static::lazy_static;
use parking_lot::Mutex;
use crate::vendor_tiktoken::CoreBPE;
use crate::{cl100k_base, p50k_base, p50k_edit, r50k_base};
pub fn r50k_base_singleton() -> Arc<Mutex<CoreBPE>> {
lazy_static! {
static ref R50K_BASE: Arc<Mutex<CoreBPE>> = Arc::new(Mutex::new(r50k_base().unwrap()));
}
R50K_BASE.clone()
}
pub fn p50k_base_singleton() -> Arc<Mutex<CoreBPE>> {
lazy_static! {
static ref P50K_BASE: Arc<Mutex<CoreBPE>> = Arc::new(Mutex::new(p50k_base().unwrap()));
}
P50K_BASE.clone()
}
pub fn p50k_edit_singleton() -> Arc<Mutex<CoreBPE>> {
lazy_static! {
static ref P50K_EDIT: Arc<Mutex<CoreBPE>> = Arc::new(Mutex::new(p50k_edit().unwrap()));
}
P50K_EDIT.clone()
}
pub fn cl100k_base_singleton() -> Arc<Mutex<CoreBPE>> {
lazy_static! {
static ref CL100K_BASE: Arc<Mutex<CoreBPE>> = Arc::new(Mutex::new(cl100k_base().unwrap()));
}
CL100K_BASE.clone()
}