diff --git a/assets/settings/default.json b/assets/settings/default.json index 8b739fc9ebcd4f4686365ce095e522429ef82661..6a3b2bfe68ae2788f22a671edad6f8d820a83ede 100644 --- a/assets/settings/default.json +++ b/assets/settings/default.json @@ -1550,7 +1550,7 @@ "ollama": { "api_url": "http://localhost:11434", "model": "qwen2.5-coder:7b-base", - "max_output_tokens": 256, + "max_output_tokens": 64, }, // Whether edit predictions are enabled when editing text threads in the agent panel. // This setting has no effect if globally disabled. diff --git a/crates/edit_prediction/src/ollama.rs b/crates/edit_prediction/src/ollama.rs index 19ffde67d1cdc083fe3f5d53c81343cb94365b1d..f23be607ddb54cc1c091955b19d5a50bc4afb2e7 100644 --- a/crates/edit_prediction/src/ollama.rs +++ b/crates/edit_prediction/src/ollama.rs @@ -110,7 +110,6 @@ impl Ollama { let Some(model) = settings.model.clone() else { return Task::ready(Ok(None)); }; - let max_output_tokens = settings.max_output_tokens; let api_url = settings.api_url.clone(); log::debug!("Ollama: Requesting completion (model: {})", model); @@ -127,7 +126,18 @@ impl Ollama { let is_zeta = is_zeta_model(&model); + // Zeta generates more tokens than FIM models. Ideally, we'd use MAX_REWRITE_TOKENS, + // but this might be too slow for local deployments. So we make it configurable, + // but we also have this hardcoded multiplier for now. + let max_output_tokens = if is_zeta { + settings.max_output_tokens * 4 + } else { + settings.max_output_tokens + }; + let result = cx.background_spawn(async move { + let zeta_editable_region_tokens = max_output_tokens as usize; + // For zeta models, use the dedicated zeta1 functions which handle their own // range computation with the correct token limits. let (prompt, stop_tokens, editable_range_override, inputs) = if is_zeta { @@ -136,7 +146,7 @@ impl Ollama { cursor_point, &path_str, &snapshot, - max_output_tokens as usize, + zeta_editable_region_tokens, ZETA_MAX_CONTEXT_TOKENS, ); let input_events = zeta1::prompt_for_events(&events, ZETA_MAX_EVENT_TOKENS);