rs_adk/optimization/
sampler.rs1use async_trait::async_trait;
4
5use super::optimizer::OptimizerError;
6use crate::evaluation::EvalCase;
7
8#[derive(Debug, Clone)]
10pub struct EvalSample {
11 pub cases: Vec<EvalCase>,
13 pub case_ids: Vec<String>,
15}
16
17#[async_trait]
21pub trait Sampler: Send + Sync {
22 async fn sample_training(&self, batch_size: usize) -> Result<EvalSample, OptimizerError>;
24
25 async fn validation_set(&self) -> Result<EvalSample, OptimizerError>;
27
28 async fn score(
32 &self,
33 instruction: &str,
34 model_id: &str,
35 cases: &[EvalCase],
36 ) -> Result<f64, OptimizerError>;
37}
38
39#[cfg(test)]
40mod tests {
41 use super::*;
42
43 fn _assert_object_safe(_: &dyn Sampler) {}
44}