From 663d385a3c5c3fd6932d1d99a6d18222d23543f9 Mon Sep 17 00:00:00 2001 From: neurocis Date: Mon, 23 Feb 2026 15:35:00 -0800 Subject: [PATCH 1/5] fix(llm): change default provider from anthropic to openai for voice transcription - resolve_model() now defaults to 'openai' instead of 'anthropic' when no provider prefix is specified, since anthropic doesn't support input_audio - Add debug logging for voice transcription to help diagnose issues Co-authored-by: KiloCodium --- src/agent/channel.rs | 25 +++++++++++++++++++++++-- src/llm/manager.rs | 12 ++++++++++-- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/agent/channel.rs b/src/agent/channel.rs index f29fc957d..a5755452c 100644 --- a/src/agent/channel.rs +++ b/src/agent/channel.rs @@ -2011,7 +2011,15 @@ async fn transcribe_audio_attachment( } let (provider_id, model_name) = match deps.llm_manager.resolve_model(voice_model) { - Ok(parts) => parts, + Ok(parts) => { + tracing::info!( + provider = %parts.0, + model = %parts.1, + voice_config = %voice_model, + "resolved voice model for transcription" + ); + parts + } Err(error) => { tracing::warn!(%error, model = %voice_model, "invalid voice model route"); return UserContent::text(format!( @@ -2022,7 +2030,15 @@ async fn transcribe_audio_attachment( }; let provider = match deps.llm_manager.get_provider(&provider_id) { - Ok(provider) => provider, + Ok(provider) => { + tracing::debug!( + provider = %provider_id, + base_url = %provider.base_url, + api_type = ?provider.api_type, + "got provider for voice transcription" + ); + provider + } Err(error) => { tracing::warn!(%error, provider = %provider_id, "voice provider not configured"); return UserContent::text(format!( @@ -2047,6 +2063,11 @@ async fn transcribe_audio_attachment( "{}/v1/chat/completions", provider.base_url.trim_end_matches('/') ); + tracing::info!( + endpoint = %endpoint, + model = %model_name, + "sending voice transcription request" + ); let body = serde_json::json!({ "model": model_name, "messages": [{ diff --git a/src/llm/manager.rs b/src/llm/manager.rs index 32fb97412..b60739c8f 100644 --- a/src/llm/manager.rs +++ b/src/llm/manager.rs @@ -284,12 +284,20 @@ impl LlmManager { } /// Resolve a model name to provider and model components. - /// Format: "provider/model-name" or just "model-name" (defaults to anthropic). + /// Format: "provider/model-name" or just "model-name" (defaults to openai for voice models). pub fn resolve_model(&self, model_name: &str) -> Result<(String, String)> { if let Some((provider, model)) = model_name.split_once('/') { + tracing::debug!(provider = %provider, model = %model_name, "resolved model with explicit provider"); Ok((provider.to_string(), model.to_string())) } else { - Ok(("anthropic".into(), model_name.into())) + // Default to openai for voice models (most common for Whisper/vision) + // rather than anthropic, since anthropic doesn't support input_audio + tracing::warn!( + model = %model_name, + "no provider prefix specified in model name, defaulting to 'openai'. \ + Specify as 'provider/model' (e.g., 'openai/whisper-1') to use a different provider." + ); + Ok(("openai".into(), model_name.into())) } } From 90ef3a3f58007d71ff2fea59365eadf8d5f3b331 Mon Sep 17 00:00:00 2001 From: Leigh Phillips Date: Mon, 23 Feb 2026 16:13:38 -0800 Subject: [PATCH 2/5] Update src/llm/manager.rs Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com> --- src/llm/manager.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/llm/manager.rs b/src/llm/manager.rs index b60739c8f..275bca2cb 100644 --- a/src/llm/manager.rs +++ b/src/llm/manager.rs @@ -287,7 +287,7 @@ impl LlmManager { /// Format: "provider/model-name" or just "model-name" (defaults to openai for voice models). pub fn resolve_model(&self, model_name: &str) -> Result<(String, String)> { if let Some((provider, model)) = model_name.split_once('/') { - tracing::debug!(provider = %provider, model = %model_name, "resolved model with explicit provider"); + tracing::debug!(provider = %provider, model = %model, "resolved model with explicit provider"); Ok((provider.to_string(), model.to_string())) } else { // Default to openai for voice models (most common for Whisper/vision) From 7ca50847681c3267b3e5873cf9d383c9a0f36caf Mon Sep 17 00:00:00 2001 From: Leigh Phillips Date: Mon, 23 Feb 2026 16:14:13 -0800 Subject: [PATCH 3/5] Update src/llm/manager.rs Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com> --- src/llm/manager.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/llm/manager.rs b/src/llm/manager.rs index 275bca2cb..fc11aff81 100644 --- a/src/llm/manager.rs +++ b/src/llm/manager.rs @@ -292,7 +292,11 @@ impl LlmManager { } else { // Default to openai for voice models (most common for Whisper/vision) // rather than anthropic, since anthropic doesn't support input_audio - tracing::warn!( + tracing::debug!( + model = %model_name, + "no provider prefix specified in model name, defaulting to 'openai'. \ + Specify as 'provider/model' (e.g., 'openai/whisper-1') to use a different provider." + ); model = %model_name, "no provider prefix specified in model name, defaulting to 'openai'. \ Specify as 'provider/model' (e.g., 'openai/whisper-1') to use a different provider." From 2c98ff228fd1bf7c1478609e536162864e4969cc Mon Sep 17 00:00:00 2001 From: Leigh Phillips Date: Mon, 23 Feb 2026 16:14:44 -0800 Subject: [PATCH 4/5] Update src/agent/channel.rs Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com> --- src/agent/channel.rs | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/agent/channel.rs b/src/agent/channel.rs index a5755452c..1ba6c774e 100644 --- a/src/agent/channel.rs +++ b/src/agent/channel.rs @@ -2012,7 +2012,12 @@ async fn transcribe_audio_attachment( let (provider_id, model_name) = match deps.llm_manager.resolve_model(voice_model) { Ok(parts) => { - tracing::info!( + tracing::debug!( + provider = %parts.0, + model = %parts.1, + voice_config = %voice_model, + "resolved voice model for transcription" + ); provider = %parts.0, model = %parts.1, voice_config = %voice_model, From e6b184762690d259f2ceb5b45e0723f7c0913e73 Mon Sep 17 00:00:00 2001 From: Leigh Phillips Date: Mon, 23 Feb 2026 16:14:54 -0800 Subject: [PATCH 5/5] Update src/agent/channel.rs Co-authored-by: tembo[bot] <208362400+tembo[bot]@users.noreply.github.com> Co-authored-by: KiloCodium --- src/agent/channel.rs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/agent/channel.rs b/src/agent/channel.rs index 1ba6c774e..e7bb798ff 100644 --- a/src/agent/channel.rs +++ b/src/agent/channel.rs @@ -2068,7 +2068,11 @@ async fn transcribe_audio_attachment( "{}/v1/chat/completions", provider.base_url.trim_end_matches('/') ); - tracing::info!( + tracing::debug!( + endpoint = %endpoint, + model = %model_name, + "sending voice transcription request" + ); endpoint = %endpoint, model = %model_name, "sending voice transcription request"