From f74a1c9c9acee53e5132b97d35dd2eef47254b03 Mon Sep 17 00:00:00 2001 From: Raduan Al-Shedivat <88370223+dbraduan@users.noreply.github.com> Date: Wed, 14 May 2025 02:42:16 +0200 Subject: [PATCH] Allow putting GOOSE_PLANNER_MODEL and GOOSE_PLANNER_PROVIDER to config.yaml (#2525) --- crates/goose-cli/src/session/mod.rs | 43 +++++++++++++++-------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/crates/goose-cli/src/session/mod.rs b/crates/goose-cli/src/session/mod.rs index 97574642..bf0f2585 100644 --- a/crates/goose-cli/src/session/mod.rs +++ b/crates/goose-cli/src/session/mod.rs @@ -1078,29 +1078,30 @@ fn get_reasoner() -> Result, anyhow::Error> { use goose::model::ModelConfig; use goose::providers::create; - let (reasoner_provider, reasoner_model) = match ( - std::env::var("GOOSE_PLANNER_PROVIDER"), - std::env::var("GOOSE_PLANNER_MODEL"), - ) { - (Ok(provider), Ok(model)) => (provider, model), - _ => { - println!( - "WARNING: GOOSE_PLANNER_PROVIDER or GOOSE_PLANNER_MODEL is not set. \ - Using default model from config..." - ); - let config = Config::global(); - let provider = config - .get_param("GOOSE_PROVIDER") - .expect("No provider configured. Run 'goose configure' first"); - let model = config - .get_param("GOOSE_MODEL") - .expect("No model configured. Run 'goose configure' first"); - (provider, model) - } + let config = Config::global(); + + // Try planner-specific provider first, fallback to default provider + let provider = if let Ok(provider) = config.get_param::("GOOSE_PLANNER_PROVIDER") { + provider + } else { + println!("WARNING: GOOSE_PLANNER_PROVIDER not found. Using default provider..."); + config + .get_param::("GOOSE_PROVIDER") + .expect("No provider configured. Run 'goose configure' first") }; - let model_config = ModelConfig::new(reasoner_model); - let reasoner = create(&reasoner_provider, model_config)?; + // Try planner-specific model first, fallback to default model + let model = if let Ok(model) = config.get_param::("GOOSE_PLANNER_MODEL") { + model + } else { + println!("WARNING: GOOSE_PLANNER_MODEL not found. Using default model..."); + config + .get_param::("GOOSE_MODEL") + .expect("No model configured. Run 'goose configure' first") + }; + + let model_config = ModelConfig::new(model); + let reasoner = create(&provider, model_config)?; Ok(reasoner) }