From 5f3c7d339c7064c5eb86fb9cf757e6265f365c63 Mon Sep 17 00:00:00 2001 From: bickelj Date: Mon, 21 Jul 2025 19:19:54 -0500 Subject: [PATCH] Env var to set Ollama request timeout (#3516) Signed-off-by: Jesse Bickel Co-authored-by: Jesse Bickel --- crates/goose/src/providers/ollama.rs | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/crates/goose/src/providers/ollama.rs b/crates/goose/src/providers/ollama.rs index bd18d593..c9359869 100644 --- a/crates/goose/src/providers/ollama.rs +++ b/crates/goose/src/providers/ollama.rs @@ -13,6 +13,7 @@ use std::time::Duration; use url::Url; pub const OLLAMA_HOST: &str = "localhost"; +pub const OLLAMA_TIMEOUT: u64 = 600; // seconds pub const OLLAMA_DEFAULT_PORT: u16 = 11434; pub const OLLAMA_DEFAULT_MODEL: &str = "qwen2.5"; // Ollama can run many models, we only provide the default @@ -41,9 +42,10 @@ impl OllamaProvider { .get_param("OLLAMA_HOST") .unwrap_or_else(|_| OLLAMA_HOST.to_string()); - let client = Client::builder() - .timeout(Duration::from_secs(600)) - .build()?; + let timeout: Duration = + Duration::from_secs(config.get_param("OLLAMA_TIMEOUT").unwrap_or(OLLAMA_TIMEOUT)); + + let client = Client::builder().timeout(timeout).build()?; Ok(Self { client, @@ -104,12 +106,15 @@ impl Provider for OllamaProvider { OLLAMA_DEFAULT_MODEL, OLLAMA_KNOWN_MODELS.to_vec(), OLLAMA_DOC_URL, - vec![ConfigKey::new( - "OLLAMA_HOST", - true, - false, - Some(OLLAMA_HOST), - )], + vec![ + ConfigKey::new("OLLAMA_HOST", true, false, Some(OLLAMA_HOST)), + ConfigKey::new( + "OLLAMA_TIMEOUT", + false, + false, + Some(&(OLLAMA_TIMEOUT.to_string())), + ), + ], ) }