diff --git a/crates/goose/src/token_counter.rs b/crates/goose/src/token_counter.rs index c689d7324515..64efa48ac091 100644 --- a/crates/goose/src/token_counter.rs +++ b/crates/goose/src/token_counter.rs @@ -8,7 +8,7 @@ use tokio::sync::OnceCell; use crate::conversation::message::Message; -static TOKENIZER: OnceCell> = OnceCell::const_new(); +static TOKENIZER: OnceCell, String>> = OnceCell::const_new(); const MAX_TOKEN_CACHE_SIZE: usize = 10_000; @@ -182,15 +182,15 @@ impl TokenCounter { } async fn get_tokenizer() -> Result, String> { - let tokenizer = TOKENIZER + TOKENIZER .get_or_init(|| async { match tiktoken_rs::o200k_base() { - Ok(bpe) => Arc::new(bpe), - Err(e) => panic!("Failed to initialize o200k_base tokenizer: {}", e), + Ok(bpe) => Ok(Arc::new(bpe)), + Err(e) => Err(format!("Failed to initialize o200k_base tokenizer: {}", e)), } }) - .await; - Ok(tokenizer.clone()) + .await + .clone() } pub async fn create_token_counter() -> Result {