Files
Aether/crates/aether-ai/serving/src/candidate_persistence_policy.rs
T

118 lines
5.0 KiB
Rust

#[derive(Debug, Clone, Copy, PartialEq, Eq)]
#[allow(clippy::enum_variant_names)]
pub enum AiCandidatePersistencePolicyKind {
StandardDecision,
SameFormatProviderDecision,
OpenAiChatDecision,
OpenAiResponsesDecision,
ImageDecision,
GeminiFilesDecision,
VideoDecision,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub struct AiCandidatePersistencePolicySpec {
pub available_error_context: &'static str,
pub skipped_error_context: &'static str,
pub record_runtime_miss_diagnostic: bool,
}
pub fn ai_candidate_persistence_policy_spec(
kind: AiCandidatePersistencePolicyKind,
) -> AiCandidatePersistencePolicySpec {
match kind {
AiCandidatePersistencePolicyKind::StandardDecision => AiCandidatePersistencePolicySpec {
available_error_context:
"gateway local standard decision request candidate upsert failed",
skipped_error_context:
"gateway local standard decision failed to persist skipped candidate",
record_runtime_miss_diagnostic: true,
},
AiCandidatePersistencePolicyKind::SameFormatProviderDecision => {
AiCandidatePersistencePolicySpec {
available_error_context:
"gateway local same-format decision request candidate upsert failed",
skipped_error_context:
"gateway local same-format decision failed to persist skipped candidate",
record_runtime_miss_diagnostic: true,
}
}
AiCandidatePersistencePolicyKind::OpenAiChatDecision => AiCandidatePersistencePolicySpec {
available_error_context:
"gateway local openai chat decision request candidate upsert failed",
skipped_error_context:
"gateway local openai chat decision failed to persist skipped candidate",
record_runtime_miss_diagnostic: true,
},
AiCandidatePersistencePolicyKind::OpenAiResponsesDecision => {
AiCandidatePersistencePolicySpec {
available_error_context:
"gateway local openai responses decision request candidate upsert failed",
skipped_error_context:
"gateway local openai responses decision failed to persist skipped candidate",
record_runtime_miss_diagnostic: true,
}
}
AiCandidatePersistencePolicyKind::ImageDecision => AiCandidatePersistencePolicySpec {
available_error_context:
"gateway local openai image decision request candidate upsert failed",
skipped_error_context:
"gateway local openai image decision failed to persist skipped candidate",
record_runtime_miss_diagnostic: false,
},
AiCandidatePersistencePolicyKind::GeminiFilesDecision => AiCandidatePersistencePolicySpec {
available_error_context: "gateway local gemini files request candidate upsert failed",
skipped_error_context: "gateway local gemini files failed to persist skipped candidate",
record_runtime_miss_diagnostic: false,
},
AiCandidatePersistencePolicyKind::VideoDecision => AiCandidatePersistencePolicySpec {
available_error_context: "gateway local video decision request candidate upsert failed",
skipped_error_context:
"gateway local video decision failed to persist skipped candidate",
record_runtime_miss_diagnostic: false,
},
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn decision_policies_define_candidate_persistence_side_effects() {
let standard = ai_candidate_persistence_policy_spec(
AiCandidatePersistencePolicyKind::StandardDecision,
);
assert_eq!(
standard.available_error_context,
"gateway local standard decision request candidate upsert failed"
);
assert_eq!(
standard.skipped_error_context,
"gateway local standard decision failed to persist skipped candidate"
);
assert!(standard.record_runtime_miss_diagnostic);
let same_format = ai_candidate_persistence_policy_spec(
AiCandidatePersistencePolicyKind::SameFormatProviderDecision,
);
assert_eq!(
same_format.available_error_context,
"gateway local same-format decision request candidate upsert failed"
);
assert_eq!(
same_format.skipped_error_context,
"gateway local same-format decision failed to persist skipped candidate"
);
assert!(same_format.record_runtime_miss_diagnostic);
let image =
ai_candidate_persistence_policy_spec(AiCandidatePersistencePolicyKind::ImageDecision);
assert_eq!(
image.available_error_context,
"gateway local openai image decision request candidate upsert failed"
);
assert!(!image.record_runtime_miss_diagnostic);
}
}