# Pydantic response model class TaskDetails(BaseModel): classes: list[Intents] # Mirascope template class TaskExtractor(OpenAIExtractor[TaskDetails]): extract_schema: Type[TaskDetails] = TaskDetails prompt_template = """ Classify the following text: {text_to_classify} """ text_to_classify: str = "" TaskExtractor.call_params = OpenAICallParams(model="gpt-3.5-turbo-0125") extractor = TaskExtractor() @experiment(n_runs=20, expected_response=expected_response) def run_mirascope_classification_experiment(text_to_classify: str): extractor.text_to_classify = text_to_classify task_details = extractor.extract(retries=2) return {cat.value for cat in task_details.classes} predictions, percent_successful, accuracy = run_mirascope_classification_experiment( text_to_classify ) print(f"Percent of successful API calls: {percent_successful:.4f}") print(f"Accuracy: {accuracy:.4f}") # 100%|██████████| 20/20 [00:38<00:00, 1.93s/it] # Percent of successful API calls: 1.0000 # Accuracy: 1.0000