diff --git a/crates/cloud_llm_client/src/cloud_llm_client.rs b/crates/cloud_llm_client/src/cloud_llm_client.rs index 8a4c08e627636c8ca45bf9fb3318ede529057775..61340199ac82f832c7a77358380e84dc05965897 100644 --- a/crates/cloud_llm_client/src/cloud_llm_client.rs +++ b/crates/cloud_llm_client/src/cloud_llm_client.rs @@ -142,6 +142,7 @@ pub struct PredictEditsBody { #[derive(Default, Debug, Clone, Copy, Serialize, Deserialize)] pub enum PredictEditsRequestTrigger { + Testing, Diagnostics, Cli, #[default] diff --git a/crates/edit_prediction/src/capture_example.rs b/crates/edit_prediction/src/capture_example.rs index 07d97a27af2065dd33946705475a0b9127747c7f..5d086627c081ce66b078f877c7f4e80fb0645f1c 100644 --- a/crates/edit_prediction/src/capture_example.rs +++ b/crates/edit_prediction/src/capture_example.rs @@ -18,6 +18,7 @@ use text::{BufferSnapshot as TextBufferSnapshot, Point, ToOffset as _}; pub(crate) const DEFAULT_EXAMPLE_CAPTURE_RATE_PER_10K_PREDICTIONS: u16 = 10; pub(crate) const DEFAULT_STAFF_EXAMPLE_CAPTURE_RATE_PER_10K_PREDICTIONS: u16 = 100; +pub(crate) const ZETA2_TESTING_RATE_PER_10K_PREDICTION: u16 = 500; pub fn capture_example( project: Entity, @@ -317,6 +318,10 @@ pub(crate) fn should_sample_edit_prediction_example_capture(cx: &App) -> bool { && rand::random::() % 10_000 < capture_rate } +pub(crate) fn should_send_testing_zeta2_request() -> bool { + rand::random::() % 10_000 < ZETA2_TESTING_RATE_PER_10K_PREDICTION +} + #[cfg(test)] mod tests { use super::*; diff --git a/crates/edit_prediction/src/edit_prediction.rs b/crates/edit_prediction/src/edit_prediction.rs index ec080ae69d4c02f5914be5ce8f268299d1ce15a5..eb74aee77e3ea8c84cc3d40cd9530db29e40668e 100644 --- a/crates/edit_prediction/src/edit_prediction.rs +++ b/crates/edit_prediction/src/edit_prediction.rs @@ -71,7 +71,9 @@ pub mod zeta2; #[cfg(test)] mod edit_prediction_tests; -use crate::capture_example::should_sample_edit_prediction_example_capture; +use crate::capture_example::{ + should_sample_edit_prediction_example_capture, should_send_testing_zeta2_request, +}; use crate::license_detection::LicenseDetectionWatcher; use crate::mercury::Mercury; use crate::onboarding_modal::ZedPredictModal; @@ -170,6 +172,7 @@ pub enum EditPredictionModel { Mercury, } +#[derive(Clone)] pub struct EditPredictionModelInput { project: Entity, buffer: Entity, @@ -1763,7 +1766,20 @@ impl EditPredictionStore { } } let task = match self.edit_prediction_model { - EditPredictionModel::Zeta1 => zeta1::request_prediction_with_zeta1(self, inputs, cx), + EditPredictionModel::Zeta1 => { + if should_send_testing_zeta2_request() { + let mut zeta2_inputs = inputs.clone(); + zeta2_inputs.trigger = PredictEditsRequestTrigger::Testing; + zeta2::request_prediction_with_zeta2( + self, + zeta2_inputs, + Default::default(), + cx, + ) + .detach(); + } + zeta1::request_prediction_with_zeta1(self, inputs, cx) + } EditPredictionModel::Zeta2 { version } => { zeta2::request_prediction_with_zeta2(self, inputs, version, cx) }