fix: forward base URL overrides to active providers
Route DEEPSEEK_BASE_URL through the active provider config instead of leaving self-hosted providers on their localhost defaults. This makes --base-url work for Ollama and vLLM while preserving provider-specific env overrides.
This commit is contained in:
@@ -1878,6 +1878,9 @@ fn apply_env_overrides(config: &mut Config) {
|
||||
}
|
||||
if let Ok(value) = std::env::var("DEEPSEEK_BASE_URL") {
|
||||
match config.api_provider() {
|
||||
ApiProvider::Deepseek | ApiProvider::DeepseekCN => {
|
||||
config.base_url = Some(value);
|
||||
}
|
||||
ApiProvider::NvidiaNim => {
|
||||
config
|
||||
.providers
|
||||
@@ -1892,8 +1895,47 @@ fn apply_env_overrides(config: &mut Config) {
|
||||
.openai
|
||||
.base_url = Some(value);
|
||||
}
|
||||
_ => {
|
||||
config.base_url = Some(value);
|
||||
ApiProvider::Openrouter => {
|
||||
config
|
||||
.providers
|
||||
.get_or_insert_with(ProvidersConfig::default)
|
||||
.openrouter
|
||||
.base_url = Some(value);
|
||||
}
|
||||
ApiProvider::Novita => {
|
||||
config
|
||||
.providers
|
||||
.get_or_insert_with(ProvidersConfig::default)
|
||||
.novita
|
||||
.base_url = Some(value);
|
||||
}
|
||||
ApiProvider::Fireworks => {
|
||||
config
|
||||
.providers
|
||||
.get_or_insert_with(ProvidersConfig::default)
|
||||
.fireworks
|
||||
.base_url = Some(value);
|
||||
}
|
||||
ApiProvider::Sglang => {
|
||||
config
|
||||
.providers
|
||||
.get_or_insert_with(ProvidersConfig::default)
|
||||
.sglang
|
||||
.base_url = Some(value);
|
||||
}
|
||||
ApiProvider::Vllm => {
|
||||
config
|
||||
.providers
|
||||
.get_or_insert_with(ProvidersConfig::default)
|
||||
.vllm
|
||||
.base_url = Some(value);
|
||||
}
|
||||
ApiProvider::Ollama => {
|
||||
config
|
||||
.providers
|
||||
.get_or_insert_with(ProvidersConfig::default)
|
||||
.ollama
|
||||
.base_url = Some(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4829,6 +4871,41 @@ model = "qwen2.5-coder:7b"
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn deepseek_base_url_env_scopes_to_self_hosted_providers() -> Result<()> {
|
||||
let _lock = lock_test_env();
|
||||
let nanos = SystemTime::now()
|
||||
.duration_since(UNIX_EPOCH)
|
||||
.unwrap()
|
||||
.as_nanos();
|
||||
let temp_root = env::temp_dir().join(format!(
|
||||
"deepseek-tui-self-hosted-base-url-test-{}-{}",
|
||||
std::process::id(),
|
||||
nanos
|
||||
));
|
||||
fs::create_dir_all(&temp_root)?;
|
||||
let _guard = EnvGuard::new(&temp_root);
|
||||
|
||||
// Safety: test-only environment mutation guarded by a global mutex.
|
||||
unsafe {
|
||||
env::set_var("DEEPSEEK_PROVIDER", "ollama");
|
||||
env::set_var("DEEPSEEK_BASE_URL", "http://ollama.remote:11434/v1");
|
||||
}
|
||||
let config = Config::load(None, None)?;
|
||||
assert_eq!(config.api_provider(), ApiProvider::Ollama);
|
||||
assert_eq!(config.deepseek_base_url(), "http://ollama.remote:11434/v1");
|
||||
|
||||
// Safety: test-only environment mutation guarded by a global mutex.
|
||||
unsafe {
|
||||
env::set_var("DEEPSEEK_PROVIDER", "vllm");
|
||||
env::set_var("DEEPSEEK_BASE_URL", "http://vllm.remote:8000/v1");
|
||||
}
|
||||
let config = Config::load(None, None)?;
|
||||
assert_eq!(config.api_provider(), ApiProvider::Vllm);
|
||||
assert_eq!(config.deepseek_base_url(), "http://vllm.remote:8000/v1");
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn ollama_env_overrides_base_url_and_model() -> Result<()> {
|
||||
let _lock = lock_test_env();
|
||||
|
||||
Reference in New Issue
Block a user