Support DeepSeek V4 Flash 0731

This commit is contained in:
Georg Bauer
2026-08-29 20:28:50 +02:00
parent ad855b321e
commit f1c177b754
23 changed files with 10510 additions and 2324 deletions

View File

@@ -45,6 +45,7 @@ pub(super) struct PreferenceDraft {
pub(super) glm_mtp_timing: bool,
pub(super) dspark_confidence_threshold: String,
pub(super) dspark_strict: bool,
pub(super) dspark_exact_sampling: bool,
pub(super) ssd_streaming: bool,
pub(super) ssd_streaming_cold: bool,
pub(super) ssd_cache: String,
@@ -111,6 +112,7 @@ impl PreferenceDraft {
glm_mtp_timing: speculative.glm_mtp_timing,
dspark_confidence_threshold: optional_string(speculative.dspark_confidence_threshold),
dspark_strict: speculative.dspark_strict,
dspark_exact_sampling: speculative.dspark_exact_sampling,
ssd_streaming: runtime.ssd.enabled,
ssd_streaming_cold: runtime.ssd.cold,
ssd_cache: optional_string(runtime.ssd.cache),
@@ -226,6 +228,7 @@ impl PreferenceDraft {
&self.dspark_confidence_threshold,
)?,
dspark_strict: self.dspark_strict,
dspark_exact_sampling: self.dspark_exact_sampling,
})
}
@@ -267,6 +270,7 @@ impl PreferenceDraft {
self.glm_mtp_timing = speculative.glm_mtp_timing;
self.dspark_confidence_threshold = optional_string(speculative.dspark_confidence_threshold);
self.dspark_strict = speculative.dspark_strict;
self.dspark_exact_sampling = speculative.dspark_exact_sampling;
self.ssd_streaming = ssd.enabled;
self.ssd_streaming_cold = ssd.cold;
self.ssd_cache = optional_string(ssd.cache);
@@ -693,12 +697,16 @@ impl App {
self.preference_error = None;
}
Message::PreferenceLegacyMtpChanged(enabled) => {
self.preference_draft.legacy_mtp_enabled =
self.preference_draft.acceleration_model.supports_dspark() && enabled;
self.preference_draft.legacy_mtp_enabled = self
.preference_draft
.acceleration_model
.supports_legacy_mtp()
&& enabled;
if self.preference_draft.legacy_mtp_enabled {
self.preference_draft.dspark_enabled = false;
self.preference_draft.dspark_confidence_threshold.clear();
self.preference_draft.dspark_strict = false;
self.preference_draft.dspark_exact_sampling = false;
}
self.preference_error = None;
}
@@ -708,6 +716,7 @@ impl App {
if !self.preference_draft.dspark_enabled {
self.preference_draft.dspark_confidence_threshold.clear();
self.preference_draft.dspark_strict = false;
self.preference_draft.dspark_exact_sampling = false;
} else {
self.preference_draft.legacy_mtp_enabled = false;
}
@@ -903,6 +912,15 @@ impl App {
}
self.preference_error = None;
}
Message::PreferenceDsparkExactSamplingChanged(value) => {
self.preference_draft.dspark_exact_sampling =
self.preference_draft.acceleration_model.supports_dspark() && value;
if self.preference_draft.dspark_exact_sampling {
self.preference_draft.dspark_enabled = true;
self.preference_draft.legacy_mtp_enabled = false;
}
self.preference_error = None;
}
Message::PreferenceSsdChanged(value) => {
self.preference_draft.ssd_streaming = value;
self.preference_error = None;
@@ -1011,14 +1029,14 @@ mod tests {
assert_eq!(draft.context_tokens, "32768");
draft.context_tokens = "456".into();
draft
.select_generation(ModelChoice::DeepSeekV4Flash, ReasoningMode::High)
.select_generation(ModelChoice::DeepSeekV4Flash0731, ReasoningMode::High)
.unwrap();
assert_eq!(draft.context_tokens, "123");
draft.select_acceleration(ModelChoice::Glm52).unwrap();
assert!(!draft.ssd_streaming);
draft
.select_acceleration(ModelChoice::DeepSeekV4Flash)
.select_acceleration(ModelChoice::DeepSeekV4Flash0731)
.unwrap();
assert!(draft.ssd_streaming);
}