scouter_types/genai/
utils.rs1use crate::error::TypeError;
2use crate::genai::{AssertionTask, LLMJudgeTask};
3use pyo3::prelude::*;
4use pyo3::types::PyList;
5
6pub fn extract_assertion_tasks_from_pylist(
8 list: &Bound<'_, PyList>,
9) -> Result<(Vec<AssertionTask>, Vec<LLMJudgeTask>), TypeError> {
10 let mut assertion_tasks = Vec::new();
11 let mut llm_judge_tasks = Vec::new();
12
13 for item in list.iter() {
14 if item.is_instance_of::<AssertionTask>() {
15 let task = item.extract::<AssertionTask>()?;
16 assertion_tasks.push(task);
17 } else if item.is_instance_of::<LLMJudgeTask>() {
18 let task = item.extract::<LLMJudgeTask>()?;
19 llm_judge_tasks.push(task);
20 } else {
21 return Err(TypeError::InvalidAssertionTaskType);
22 }
23 }
24 Ok((assertion_tasks, llm_judge_tasks))
25}