From 54f794bc3220010188fbb2f2385ce1f61d8c4092 Mon Sep 17 00:00:00 2001 From: Tyler Date: Fri, 11 Apr 2025 13:45:57 -0400 Subject: [PATCH] feat: add temperature env var (#2083) --- Cargo.lock | 1 + crates/goose/Cargo.toml | 1 + crates/goose/src/model.rs | 29 ++++++++++++++++++++++++++++- 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 073adeb9..399a1c43 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2361,6 +2361,7 @@ dependencies = [ "serde_yaml", "serial_test", "sha2", + "temp-env", "tempfile", "thiserror 1.0.69", "tokenizers", diff --git a/crates/goose/Cargo.toml b/crates/goose/Cargo.toml index 62f2e88e..73fa74b5 100644 --- a/crates/goose/Cargo.toml +++ b/crates/goose/Cargo.toml @@ -83,6 +83,7 @@ serial_test = "3.2.0" mockall = "0.13.1" wiremock = "0.6.0" tokio = { version = "1.43", features = ["full"] } +temp-env = "0.3.6" [[example]] name = "agent" diff --git a/crates/goose/src/model.rs b/crates/goose/src/model.rs index 809aff58..e39f127c 100644 --- a/crates/goose/src/model.rs +++ b/crates/goose/src/model.rs @@ -44,11 +44,15 @@ impl ModelConfig { let toolshim_model = std::env::var("GOOSE_TOOLSHIM_OLLAMA_MODEL").ok(); + let temperature = std::env::var("GOOSE_TEMPERATURE") + .ok() + .and_then(|val| val.parse::().ok()); + Self { model_name, tokenizer_name: tokenizer_name.to_string(), context_limit, - temperature: None, + temperature, max_tokens: None, toolshim, toolshim_model, @@ -182,4 +186,27 @@ mod tests { .with_toolshim_model(Some("mistral-nemo".to_string())); assert_eq!(config.toolshim_model, Some("mistral-nemo".to_string())); } + + #[test] + fn test_model_config_temp_env_var() { + use temp_env::with_var; + + with_var("GOOSE_TEMPERATURE", Some("0.128"), || { + let config = ModelConfig::new("test-model".to_string()); + assert_eq!(config.temperature, Some(0.128)); + }); + + with_var("GOOSE_TEMPERATURE", Some("notanum"), || { + let config = ModelConfig::new("test-model".to_string()); + assert_eq!(config.temperature, None); + }); + + with_var("GOOSE_TEMPERATURE", Some(""), || { + let config = ModelConfig::new("test-model".to_string()); + assert_eq!(config.temperature, None); + }); + + let config = ModelConfig::new("test-model".to_string()); + assert_eq!(config.temperature, None); + } }