systemprompt_evaluation/services/
sampler.rs1use crate::error::Result;
7use crate::models::{SampleFilter, SampledRequest};
8use crate::repository::SamplingRepository;
9
10#[derive(Debug, Clone)]
11pub struct SamplerService {
12 repository: SamplingRepository,
13}
14
15impl SamplerService {
16 #[must_use]
17 pub const fn new(repository: SamplingRepository) -> Self {
18 Self { repository }
19 }
20
21 pub async fn sample(&self, filter: &SampleFilter) -> Result<Vec<SampledRequest>> {
22 let sampled = self.repository.sample(filter).await?;
23 Ok(sampled
24 .into_iter()
25 .filter(|request| request.response_text.is_some() && !request.messages.is_empty())
26 .collect())
27 }
28}