deepeval 4.2.2__tar.gz → 4.2.4__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {deepeval-4.2.2 → deepeval-4.2.4}/PKG-INFO +1 -1
- deepeval-4.2.4/deepeval/_version.py +1 -0
- deepeval-4.2.4/deepeval/classifiers/__init__.py +36 -0
- deepeval-4.2.4/deepeval/classifiers/abstention.py +42 -0
- deepeval-4.2.4/deepeval/classifiers/base_classifier.py +180 -0
- deepeval-4.2.4/deepeval/classifiers/clarification.py +42 -0
- deepeval-4.2.4/deepeval/classifiers/classifier/__init__.py +3 -0
- deepeval-4.2.4/deepeval/classifiers/classifier/classifier.py +254 -0
- deepeval-4.2.4/deepeval/classifiers/classifier/schema.py +11 -0
- deepeval-4.2.4/deepeval/classifiers/classifier/templates/_experimental_system_one_classify.txt +1 -0
- deepeval-4.2.4/deepeval/classifiers/classifier/templates/_experimental_system_one_reason.txt +39 -0
- deepeval-4.2.4/deepeval/classifiers/classifier/templates/class.txt +1 -0
- deepeval-4.2.4/deepeval/classifiers/classifier/templates/classify_multi_turn.txt +31 -0
- deepeval-4.2.4/deepeval/classifiers/classifier/templates/classify_single_turn.txt +28 -0
- deepeval-4.2.4/deepeval/classifiers/data_leakage.py +42 -0
- deepeval-4.2.4/deepeval/classifiers/escalation.py +42 -0
- deepeval-4.2.4/deepeval/classifiers/forbidden_commitments.py +46 -0
- deepeval-4.2.4/deepeval/classifiers/instruction_completeness.py +42 -0
- deepeval-4.2.4/deepeval/classifiers/prompt_injection.py +42 -0
- deepeval-4.2.4/deepeval/classifiers/refusal.py +42 -0
- deepeval-4.2.4/deepeval/classifiers/required_disclosure.py +47 -0
- deepeval-4.2.4/deepeval/classifiers/resolution.py +42 -0
- deepeval-4.2.4/deepeval/classifiers/response_language.py +38 -0
- deepeval-4.2.4/deepeval/classifiers/scope_adherence.py +51 -0
- deepeval-4.2.4/deepeval/classifiers/tone_adherence.py +47 -0
- deepeval-4.2.4/deepeval/classifiers/utils.py +429 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/diagnose/diagnose.py +101 -0
- deepeval-4.2.4/deepeval/cli/inspect.py +257 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/main.py +108 -1
- deepeval-4.2.4/deepeval/cli/providers/__init__.py +3 -0
- deepeval-4.2.4/deepeval/cli/providers/system_one/__init__.py +3 -0
- deepeval-4.2.4/deepeval/cli/providers/system_one/typesafe.py +135 -0
- deepeval-4.2.4/deepeval/config/mode.py +72 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/config/settings.py +66 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/constants.py +2 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/dataset/golden.py +10 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/dataset/utils.py +2 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/console_report.py +249 -62
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/evaluate.py +73 -19
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/execute/_common.py +25 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/execute/e2e.py +163 -13
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/inspect_prompt.py +6 -2
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/local_store.py +37 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/types.py +2 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/utils.py +122 -32
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/__init__.py +5 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/__main__.py +8 -3
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/loader.py +55 -17
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/key_handler.py +11 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/__init__.py +2 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/answer_relevancy/answer_relevancy.py +32 -25
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/answer_relevancy/schema.py +3 -2
- deepeval-4.2.4/deepeval/metrics/answer_relevancy/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/answer_relevancy/templates/generate_verdicts.txt +6 -6
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/argument_correctness/argument_correctness.py +34 -25
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/argument_correctness/schema.py +3 -2
- deepeval-4.2.4/deepeval/metrics/argument_correctness/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/base_metric.py +64 -7
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/bias/bias.py +31 -25
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/bias/schema.py +3 -2
- deepeval-4.2.4/deepeval/metrics/bias/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_precision/contextual_precision.py +31 -16
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_precision/schema.py +2 -1
- deepeval-4.2.4/deepeval/metrics/contextual_precision/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_recall/contextual_recall.py +20 -25
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_recall/schema.py +3 -2
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_relevancy/contextual_relevancy.py +29 -27
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_relevancy/schema.py +2 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversation_completeness/conversation_completeness.py +15 -26
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversation_completeness/schema.py +2 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_dag/conversational_dag.py +2 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_dag/nodes.py +36 -16
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_g_eval/conversational_g_eval.py +82 -75
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_g_eval/schema.py +4 -0
- deepeval-4.2.4/deepeval/metrics/conversational_g_eval/templates/_experimental_system_one_reason.txt +32 -0
- deepeval-4.2.4/deepeval/metrics/conversational_g_eval/templates/_experimental_system_one_rubric_score.txt +1 -0
- deepeval-4.2.4/deepeval/metrics/conversational_g_eval/templates/_experimental_system_one_step_verdict.txt +1 -0
- deepeval-4.2.4/deepeval/metrics/conversational_g_eval/templates/_experimental_system_one_strict_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/dag.py +2 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/nodes.py +36 -16
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/faithfulness/faithfulness.py +35 -33
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/faithfulness/schema.py +3 -2
- deepeval-4.2.4/deepeval/metrics/faithfulness/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/faithfulness/templates/generate_verdicts.txt +2 -2
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/g_eval/g_eval.py +82 -71
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/g_eval/schema.py +4 -0
- deepeval-4.2.4/deepeval/metrics/g_eval/templates/_experimental_system_one_reason.txt +42 -0
- deepeval-4.2.4/deepeval/metrics/g_eval/templates/_experimental_system_one_rubric_score.txt +1 -0
- deepeval-4.2.4/deepeval/metrics/g_eval/templates/_experimental_system_one_step_verdict.txt +1 -0
- deepeval-4.2.4/deepeval/metrics/g_eval/templates/_experimental_system_one_strict_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/hallucination/hallucination.py +38 -25
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/hallucination/schema.py +3 -2
- deepeval-4.2.4/deepeval/metrics/hallucination/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/indicator.py +120 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/knowledge_retention/knowledge_retention.py +14 -22
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/knowledge_retention/schema.py +2 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/misuse/misuse.py +32 -25
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/misuse/schema.py +3 -2
- deepeval-4.2.4/deepeval/metrics/misuse/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/non_advice/non_advice.py +32 -25
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/non_advice/schema.py +2 -1
- deepeval-4.2.4/deepeval/metrics/non_advice/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/pii_leakage/pii_leakage.py +31 -25
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/pii_leakage/schema.py +2 -1
- deepeval-4.2.4/deepeval/metrics/pii_leakage/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/prompt_alignment/prompt_alignment.py +34 -27
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/prompt_alignment/schema.py +2 -1
- deepeval-4.2.4/deepeval/metrics/prompt_alignment/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_violation/role_violation.py +27 -15
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_violation/schema.py +2 -1
- deepeval-4.2.4/deepeval/metrics/role_violation/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/summarization/schema.py +3 -3
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/summarization/summarization.py +37 -29
- deepeval-4.2.4/deepeval/metrics/summarization/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/summarization/templates/generate_alignment_verdicts.txt +5 -5
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/toxicity/schema.py +3 -2
- deepeval-4.2.4/deepeval/metrics/toxicity/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/toxicity/toxicity.py +33 -29
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_precision/schema.py +2 -1
- deepeval-4.2.4/deepeval/metrics/turn_contextual_precision/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_precision/turn_contextual_precision.py +31 -11
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_recall/schema.py +2 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_recall/turn_contextual_recall.py +15 -21
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_relevancy/schema.py +2 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_relevancy/turn_contextual_relevancy.py +15 -21
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_faithfulness/schema.py +3 -2
- deepeval-4.2.4/deepeval/metrics/turn_faithfulness/templates/_experimental_system_one_verdict.txt +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_faithfulness/templates/generate_verdicts.txt +4 -4
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_faithfulness/turn_faithfulness.py +42 -44
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_relevancy/schema.py +3 -2
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_relevancy/turn_relevancy.py +15 -31
- deepeval-4.2.4/deepeval/metrics/utils/__init__.py +158 -0
- deepeval-4.2.4/deepeval/metrics/utils/decision.py +428 -0
- deepeval-4.2.4/deepeval/metrics/utils/generation.py +131 -0
- deepeval-4.2.4/deepeval/metrics/utils/metrics.py +67 -0
- deepeval-4.2.4/deepeval/metrics/utils/models.py +302 -0
- deepeval-4.2.4/deepeval/metrics/utils/qag.py +317 -0
- deepeval-4.2.4/deepeval/metrics/utils/test_case.py +203 -0
- deepeval-4.2.4/deepeval/metrics/utils/turns.py +88 -0
- deepeval-4.2.4/deepeval/metrics/utils/verbose.py +50 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/__init__.py +4 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/base_model.py +81 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/retry_policy.py +35 -0
- deepeval-4.2.4/deepeval/models/system_one/__init__.py +23 -0
- deepeval-4.2.4/deepeval/models/system_one/constants.py +20 -0
- deepeval-4.2.4/deepeval/models/system_one/schema.py +49 -0
- deepeval-4.2.4/deepeval/models/system_one/typesafe_model.py +211 -0
- deepeval-4.2.4/deepeval/sqlite_store/__init__.py +44 -0
- deepeval-4.2.4/deepeval/sqlite_store/store.py +700 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/telemetry/__init__.py +1 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/telemetry/client.py +27 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/telemetry/context.py +22 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/telemetry/properties.py +14 -0
- deepeval-4.2.4/deepeval/templates/classifiers/templates.json +8 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/metrics/fragments/faithfulness_verdicts_example_multimodal.txt +2 -2
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/metrics/fragments/faithfulness_verdicts_format_instruction.txt +1 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/metrics/fragments/faithfulness_verdicts_guidelines_multimodal.txt +1 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/metrics/fragments/faithfulness_verdicts_guidelines_text_only.txt +1 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/metrics/fragments/multimodal_input_rules_turn_metric.txt +1 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/metrics/templates.json +46 -23
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/resolver.py +19 -2
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_case/conversational_test_case.py +7 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_case/llm_test_case.py +19 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_run/__init__.py +2 -1
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_run/api.py +22 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_run/cache.py +62 -2
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_run/test_run.py +81 -6
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/tracing.py +6 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/__init__.py +2 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/__init__.py +2 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/transports/__init__.py +2 -0
- deepeval-4.2.4/deepeval/voice/connectors/transports/webrtc.py +804 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/utils.py +22 -3
- {deepeval-4.2.2 → deepeval-4.2.4}/pyproject.toml +1 -1
- deepeval-4.2.2/deepeval/_version.py +0 -1
- deepeval-4.2.2/deepeval/cli/inspect.py +0 -126
- deepeval-4.2.2/deepeval/cli/providers/__init__.py +0 -3
- deepeval-4.2.2/deepeval/metrics/utils.py +0 -820
- {deepeval-4.2.2 → deepeval-4.2.4}/LICENSE.md +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/README.md +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/annotation/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/annotation/annotation.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/annotation/api.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/anthropic/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/anthropic/extractors.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/anthropic/patch.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/anthropic/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/arc/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/arc/arc.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/arc/mode.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/arc/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/base_benchmark.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/bbq/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/bbq/bbq.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/bbq/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/bbq/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/big_bench_hard.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/boolean_expressions.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/causal_judgement.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/date_understanding.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/disambiguation_qa.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/dyck_languages.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/formal_fallacies.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/geometric_shapes.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/hyperbaton.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/logical_deduction_five_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/logical_deduction_seven_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/logical_deduction_three_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/movie_recommendation.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/multistep_arithmetic_two.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/navigate.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/object_counting.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/penguins_in_a_table.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/reasoning_about_colored_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/ruin_names.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/salient_translation_error_detection.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/snarks.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/sports_understanding.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/temporal_sequences.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/tracking_shuffled_objects_five_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/tracking_shuffled_objects_seven_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/tracking_shuffled_objects_three_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/web_of_lies.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/word_sorting.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/boolean_expressions.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/causal_judgement.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/date_understanding.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/disambiguation_qa.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/dyck_languages.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/formal_fallacies.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/geometric_shapes.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/hyperbaton.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/logical_deduction_five_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/logical_deduction_seven_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/logical_deduction_three_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/movie_recommendation.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/multistep_arithmetic_two.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/navigate.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/object_counting.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/penguins_in_a_table.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/reasoning_about_colored_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/ruin_names.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/salient_translation_error_detection.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/snarks.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/sports_understanding.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/temporal_sequences.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/tracking_shuffled_objects_five_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/tracking_shuffled_objects_seven_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/tracking_shuffled_objects_three_objects.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/web_of_lies.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/word_sorting.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/big_bench_hard/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/bool_q/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/bool_q/bool_q.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/bool_q/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/drop/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/drop/drop.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/drop/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/drop/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/equity_med_qa/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/equity_med_qa/equity_med_qa.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/equity_med_qa/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/equity_med_qa/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/gsm8k/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/gsm8k/gsm8k.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/gsm8k/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/hellaswag/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/hellaswag/hellaswag.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/hellaswag/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/hellaswag/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/human_eval/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/human_eval/human_eval.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/human_eval/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/human_eval/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/ifeval/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/ifeval/ifeval.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/ifeval/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/lambada/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/lambada/lambada.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/lambada/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/logi_qa/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/logi_qa/logi_qa.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/logi_qa/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/logi_qa/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/math_qa/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/math_qa/math_qa.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/math_qa/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/math_qa/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/mmlu/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/mmlu/mmlu.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/mmlu/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/mmlu/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/modes/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/results.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/squad/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/squad/squad.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/squad/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/squad/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/tasks/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/truthful_qa/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/truthful_qa/mode.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/truthful_qa/task.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/truthful_qa/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/truthful_qa/truthful_qa.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/winogrande/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/winogrande/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/benchmarks/winogrande/winogrande.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/app.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/auth/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/auth/api.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/auth/command.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/auth/flow.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/diagnose/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/dotenv_handler.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/generate/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/generate/command.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/generate/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/_speech.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/anthropic.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/azure.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/bedrock.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/deepseek.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/gemini.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/grok.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/litellm.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/local_embeddings.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/local_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/moonshot.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/ollama.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/openai.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/openrouter.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/llms/portkey.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/stt/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/stt/command.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/tts/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/providers/tts/command.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/test/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/test/command.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/cli/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/confident/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/confident/api.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/confident/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/config/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/config/dotenv_handler.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/config/logging.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/config/settings_manager.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/config/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/contextvars.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/dataset/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/dataset/api.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/dataset/dataset.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/dataset/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/errors.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/api.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/compare.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/configs.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/execute/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/execute/agentic.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/execute/loop.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/evaluate/execute/trace_scope.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/app.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/fixtures/test_run_sample.json +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/styles.tcss +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/widgets/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/widgets/_styling.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/widgets/details.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/widgets/header_bar.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/widgets/help_modal.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/widgets/search_bar.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/inspect/widgets/span_tree.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/README.md +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/agentcore/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/agentcore/instrumentator.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/agentcore/otel.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/crewai/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/crewai/handler.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/crewai/subs.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/crewai/tool.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/crewai/wrapper.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/google_adk/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/google_adk/otel.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/hugging_face/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/hugging_face/callback.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/hugging_face/rich_manager.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/hugging_face/tests/test_callbacks.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/hugging_face/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/langchain/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/langchain/callback.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/langchain/patch.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/langchain/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/llama_index/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/llama_index/handler.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/llama_index/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/openinference/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/openinference/instrumentator.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/openinference/otel.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/pydantic_ai/README.md +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/pydantic_ai/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/pydantic_ai/instrumentator.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/pydantic_ai/otel.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/strands/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/strands/instrumentator.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/integrations/strands/otel.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/README.md +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/agent_loop_detection/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/agent_loop_detection/agent_loop_detection.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/answer_relevancy/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/answer_relevancy/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/answer_relevancy/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/answer_relevancy/templates/generate_statements.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/arena_g_eval/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/arena_g_eval/arena_g_eval.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/arena_g_eval/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/arena_g_eval/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/arena_g_eval/templates/generate_arena_winner.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/arena_g_eval/templates/generate_evaluation_steps.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/arena_g_eval/templates/rewrite_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/arena_g_eval/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/argument_correctness/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/argument_correctness/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/argument_correctness/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/argument_correctness/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/bias/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/bias/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/bias/templates/generate_opinions.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/bias/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/bias/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/community/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/community/citation_faithfulness/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/community/citation_faithfulness/citation_faithfulness.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/community/citation_faithfulness/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/community/citation_faithfulness/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_precision/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_precision/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_precision/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_precision/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_recall/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_recall/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_recall/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_recall/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_relevancy/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_relevancy/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_relevancy/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/contextual_relevancy/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversation_completeness/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversation_completeness/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversation_completeness/templates/extract_user_intentions.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversation_completeness/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversation_completeness/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_dag/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_dag/templates/ConversationalBinaryJudgement/generate_binary_verdict.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_dag/templates/ConversationalNonBinaryJudgement/generate_non_binary_verdict.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_dag/templates/ConversationalTaskNode/generate_task_output.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_dag/templates/ConversationalVerdictNode/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_g_eval/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_g_eval/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_g_eval/templates/generate_evaluation_results.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/conversational_g_eval/templates/generate_evaluation_steps.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/graph.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/runner.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/serialization/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/serialization/registry.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/serialization/serialization.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/serialization/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/templates/BinaryJudgement/generate_binary_verdict.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/templates/NonBinaryJudgement/generate_non_binary_verdict.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/templates/TaskNode/generate_task_output.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/templates/VerdictNode/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/dag/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/exact_match/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/exact_match/exact_match.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/faithfulness/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/faithfulness/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/faithfulness/templates/generate_claims.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/faithfulness/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/faithfulness/templates/generate_truths.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/g_eval/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/g_eval/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/g_eval/templates/generate_evaluation_results.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/g_eval/templates/generate_evaluation_steps.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/g_eval/templates/generate_strict_evaluation_results.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/g_eval/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/goal_accuracy/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/goal_accuracy/goal_accuracy.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/goal_accuracy/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/goal_accuracy/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/goal_accuracy/templates/get_accuracy_score.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/goal_accuracy/templates/get_final_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/goal_accuracy/templates/get_plan_evaluation_score.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/hallucination/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/hallucination/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/hallucination/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/hallucination/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/json_correctness/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/json_correctness/json_correctness.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/json_correctness/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/json_correctness/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/json_correctness/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/knowledge_retention/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/knowledge_retention/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/knowledge_retention/templates/extract_data.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/knowledge_retention/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/knowledge_retention/templates/generate_verdict.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp/mcp_task_completion.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp/multi_turn_mcp_use_metric.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp/templates/generate_final_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp/templates/get_args_correctness_score.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp/templates/get_task_completion_score.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp/templates/get_tool_correctness_score.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp_use_metric/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp_use_metric/mcp_use_metric.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp_use_metric/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp_use_metric/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp_use_metric/templates/get_mcp_argument_correctness_prompt.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/mcp_use_metric/templates/get_primitive_correctness_prompt.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/misuse/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/misuse/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/misuse/templates/generate_misuses.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/misuse/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/misuse/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_coherence/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_coherence/image_coherence.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_coherence/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_coherence/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_coherence/templates/evaluate_image_coherence.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_editing/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_editing/image_editing.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_editing/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_editing/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_editing/templates/generate_perceptual_quality_evaluation_results.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_editing/templates/generate_semantic_consistency_evaluation_results.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/image_helpfulness.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/templates/evaluate_image_helpfulness.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_reference/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_reference/image_reference.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_reference/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_reference/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/image_reference/templates/evaluate_image_reference.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/text_to_image/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/text_to_image/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/text_to_image/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/text_to_image/templates/generate_perceptual_quality_evaluation_results.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/text_to_image/templates/generate_semantic_consistency_evaluation_results.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/multimodal_metrics/text_to_image/text_to_image.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/non_advice/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/non_advice/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/non_advice/templates/generate_advices.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/non_advice/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/non_advice/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/pattern_match/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/pattern_match/pattern_match.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/pii_leakage/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/pii_leakage/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/pii_leakage/templates/extract_pii.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/pii_leakage/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/pii_leakage/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_adherence/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_adherence/plan_adherence.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_adherence/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_adherence/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_adherence/templates/evaluate_adherence.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_adherence/templates/extract_plan_from_trace.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_quality/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_quality/plan_quality.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_quality/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_quality/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/plan_quality/templates/evaluate_plan_quality.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/prompt_alignment/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/prompt_alignment/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/prompt_alignment/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/prompt_alignment/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/ragas.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/retrieval_context_display.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_adherence/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_adherence/role_adherence.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_adherence/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_adherence/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_adherence/templates/extract_out_of_character_response_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_adherence/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_violation/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_violation/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_violation/templates/detect_role_violations.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_violation/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/role_violation/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/step_efficiency/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/step_efficiency/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/step_efficiency/step_efficiency.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/step_efficiency/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/step_efficiency/templates/extract_task_from_trace.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/step_efficiency/templates/get_execution_efficiency.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/summarization/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/summarization/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/summarization/templates/generate_answers.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/summarization/templates/generate_questions.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/summarization/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/task_completion/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/task_completion/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/task_completion/task_completion.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/task_completion/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/task_completion/templates/extract_goal_and_outcome.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/task_completion/templates/extract_task_and_outcome_from_trace.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/task_completion/templates/generate_verdict.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_correctness/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_correctness/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_correctness/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_correctness/templates/get_tool_selection_score.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_correctness/tool_correctness.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_permission/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_permission/tool_permission.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_use/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_use/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_use/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_use/templates/get_argument_correctness_score.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_use/templates/get_tool_argument_final_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_use/templates/get_tool_selection_final_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_use/templates/get_tool_selection_score.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/tool_use/tool_use.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/topic_adherence/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/topic_adherence/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/topic_adherence/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/topic_adherence/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/topic_adherence/templates/get_qa_pair_verdict.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/topic_adherence/templates/get_qa_pairs.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/topic_adherence/topic_adherence.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/toxicity/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/toxicity/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/toxicity/templates/generate_opinions.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/toxicity/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/toxicity/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_precision/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_precision/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_precision/templates/generate_final_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_precision/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_precision/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_recall/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_recall/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_recall/templates/generate_final_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_recall/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_recall/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_relevancy/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_relevancy/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_relevancy/templates/generate_final_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_relevancy/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_contextual_relevancy/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_faithfulness/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_faithfulness/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_faithfulness/templates/generate_claims.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_faithfulness/templates/generate_final_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_faithfulness/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_faithfulness/templates/generate_truths.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_relevancy/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_relevancy/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_relevancy/templates/generate_reason.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/turn_relevancy/templates/generate_verdicts.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/_analysis.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/_detectors.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/base_metric.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/consistency.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/integrity.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/intelligibility.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/naturalness.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/reliability.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/responsiveness.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/metrics/voice/turn_taking.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/model_integrations/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/model_integrations/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/model_integrations/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/_summac_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/answer_relevancy_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/detoxify_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/embedding_models/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/embedding_models/azure_embedding_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/embedding_models/local_embedding_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/embedding_models/ollama_embedding_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/embedding_models/openai_embedding_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/hallucination_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/amazon_bedrock_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/anthropic_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/azure_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/constants.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/deepseek_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/gateway_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/gemini_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/grok_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/kimi_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/litellm_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/local_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/ollama_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/openai_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/openrouter_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/portkey_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/llms/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/speech.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/speech_selection.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/_audio.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/_stream.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/assemblyai/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/assemblyai/assemblyai.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/assemblyai/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/cartesia/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/cartesia/cartesia.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/cartesia/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/deepgram/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/deepgram/deepgram.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/deepgram/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/elevenlabs/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/elevenlabs/elevenlabs.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/elevenlabs/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/openai/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/stt/openai/openai.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/summac_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/_frames.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/cartesia/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/cartesia/cartesia.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/cartesia/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/deepgram/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/deepgram/deepgram.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/deepgram/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/elevenlabs/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/elevenlabs/elevenlabs.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/elevenlabs/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/openai/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/tts/openai/openai.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/unbias_model.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/models/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/openai/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/openai/extractors.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/openai/patch.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/openai/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/openai_agents/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/openai_agents/agent.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/openai_agents/callback_handler.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/openai_agents/extractors.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/openai_agents/patch.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/openai_agents/runner.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/base.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/configs.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/copro/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/copro/copro.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/copro/proposer.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/copro/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/copro/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/gepa/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/gepa/gepa.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/miprov2/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/miprov2/bootstrapper.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/miprov2/miprov2.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/miprov2/proposer/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/miprov2/proposer/proposer.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/miprov2/proposer/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/miprov2/proposer/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/simba/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/simba/proposer.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/simba/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/simba/simba.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/algorithms/simba/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/configs.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/policies.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/prompt_optimizer.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/rewriter/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/rewriter/rewriter.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/rewriter/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/rewriter/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/scorer/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/scorer/base.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/scorer/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/scorer/scorer.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/scorer/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/scorer/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/optimizer/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/plugins/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/plugins/plugin.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/progress_context.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/prompt/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/prompt/api.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/prompt/prompt.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/prompt/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/py.typed +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/red_teaming/README.md +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/scorer/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/scorer/scorer.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/controller/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/controller/controller.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/controller/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/controller/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/conversation_simulator.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/interrupt_template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/simulation_graph/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/simulation_graph/default.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/simulation_graph/node.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/simulation_graph/runner.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/simulation_graph/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/templates/class.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/templates/decide_interrupt.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/templates/interruption_bias_frequent.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/templates/interruption_bias_normal.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/templates/interruption_bias_rare.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/templates/interruption_frustration.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/simulator/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/singleton.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/base_synthesizer.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/chunking/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/chunking/context_generator.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/chunking/doc_chunker.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/config.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/schema.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/synthesizer.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/templates/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/templates/template.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/templates/template_extraction.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/templates/template_prompt.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/synthesizer/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/telemetry/api.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/telemetry/events.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/telemetry/identity.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/telemetry/judge.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/telemetry/runtime.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/metrics/fragments/multimodal_image_generation_eval_context.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/metrics/fragments/multimodal_input_rules.txt +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/simulator/templates.json +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/templates/template_class.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_case/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_case/api.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_case/arena_test_case.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_case/mcp.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_case/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_run/hooks.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/test_run/hyperparameters.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/api.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/context.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/integrations.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/internal.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/offline_evals/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/offline_evals/api.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/offline_evals/span.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/offline_evals/thread.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/offline_evals/trace.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/otel/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/otel/attributes.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/otel/context_aware_processor.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/otel/exporter.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/otel/test_exporter.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/otel/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/patchers.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/perf_epoch_bridge.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/trace_context.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/trace_test_manager.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/tracing/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/background.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/config.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/audio_utils.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/elevenlabs/README.md +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/elevenlabs/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/elevenlabs/connector.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/livekit/README.md +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/livekit/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/livekit/connector.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/pipecat/README.md +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/pipecat/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/pipecat/connector.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/pipecat/protobuf.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/vapi/README.md +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/vapi/__init__.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/providers/vapi/connector.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/transports/base.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/transports/callback.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/transports/websocket.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/turn_engine.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/connectors/types.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/duplex.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/floor_control.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/interruption.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/output.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/protocol.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/recording.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/streaming.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/timeline.py +0 -0
- {deepeval-4.2.2 → deepeval-4.2.4}/deepeval/voice/turn_detection.py +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__: str = "4.2.4"
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
from .base_classifier import BaseClassifier, Label
|
|
2
|
+
from .classifier import Classifier, ClassifierTemplate
|
|
3
|
+
|
|
4
|
+
from .refusal import RefusalClassifier
|
|
5
|
+
from .escalation import EscalationClassifier
|
|
6
|
+
from .scope_adherence import ScopeAdherenceClassifier
|
|
7
|
+
from .clarification import ClarificationClassifier
|
|
8
|
+
from .abstention import AbstentionClassifier
|
|
9
|
+
from .prompt_injection import PromptInjectionClassifier
|
|
10
|
+
from .data_leakage import DataLeakageClassifier
|
|
11
|
+
from .forbidden_commitments import ForbiddenCommitmentsClassifier
|
|
12
|
+
from .tone_adherence import ToneAdherenceClassifier
|
|
13
|
+
from .required_disclosure import RequiredDisclosureClassifier
|
|
14
|
+
from .response_language import ResponseLanguageClassifier
|
|
15
|
+
from .instruction_completeness import InstructionCompletenessClassifier
|
|
16
|
+
from .resolution import ResolutionClassifier
|
|
17
|
+
|
|
18
|
+
__all__ = [
|
|
19
|
+
"Classifier",
|
|
20
|
+
"Label",
|
|
21
|
+
"BaseClassifier",
|
|
22
|
+
"ClassifierTemplate",
|
|
23
|
+
"RefusalClassifier",
|
|
24
|
+
"EscalationClassifier",
|
|
25
|
+
"ScopeAdherenceClassifier",
|
|
26
|
+
"ClarificationClassifier",
|
|
27
|
+
"AbstentionClassifier",
|
|
28
|
+
"PromptInjectionClassifier",
|
|
29
|
+
"DataLeakageClassifier",
|
|
30
|
+
"ForbiddenCommitmentsClassifier",
|
|
31
|
+
"ToneAdherenceClassifier",
|
|
32
|
+
"RequiredDisclosureClassifier",
|
|
33
|
+
"ResponseLanguageClassifier",
|
|
34
|
+
"InstructionCompletenessClassifier",
|
|
35
|
+
"ResolutionClassifier",
|
|
36
|
+
]
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from typing import List, Optional, Type, Union
|
|
2
|
+
|
|
3
|
+
from deepeval.classifiers.base_classifier import Label
|
|
4
|
+
from deepeval.classifiers.classifier import Classifier, ClassifierTemplate
|
|
5
|
+
from deepeval.models import DeepEvalBaseLLM
|
|
6
|
+
|
|
7
|
+
DEFAULT_LABELS: List[Label] = [
|
|
8
|
+
Label(
|
|
9
|
+
"abstained",
|
|
10
|
+
"The provided context does not contain the answer and the response says so instead of answering.",
|
|
11
|
+
),
|
|
12
|
+
Label(
|
|
13
|
+
"answered",
|
|
14
|
+
"The provided context contains the answer and the response gives it.",
|
|
15
|
+
),
|
|
16
|
+
Label(
|
|
17
|
+
"fabricated",
|
|
18
|
+
"The provided context does not contain the answer but the response gives one anyway.",
|
|
19
|
+
),
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class AbstentionClassifier(Classifier):
|
|
24
|
+
"""Labels whether the assistant abstained, answered from context, or fabricated when context lacked the answer."""
|
|
25
|
+
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
model: Optional[Union[str, DeepEvalBaseLLM]] = None,
|
|
29
|
+
include_reason: bool = True,
|
|
30
|
+
allow_none: bool = False,
|
|
31
|
+
async_mode: bool = True,
|
|
32
|
+
classification_template: Type[ClassifierTemplate] = ClassifierTemplate,
|
|
33
|
+
):
|
|
34
|
+
super().__init__(
|
|
35
|
+
name="abstention",
|
|
36
|
+
labels=list(DEFAULT_LABELS),
|
|
37
|
+
model=model,
|
|
38
|
+
include_reason=include_reason,
|
|
39
|
+
allow_none=allow_none,
|
|
40
|
+
async_mode=async_mode,
|
|
41
|
+
classification_template=classification_template,
|
|
42
|
+
)
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from abc import abstractmethod
|
|
4
|
+
from typing import TYPE_CHECKING, List, Optional, Union
|
|
5
|
+
|
|
6
|
+
from pydantic import BaseModel
|
|
7
|
+
|
|
8
|
+
from deepeval.metrics.base_metric import PromptMixin
|
|
9
|
+
from deepeval.test_case import ConversationalTestCase, LLMTestCase
|
|
10
|
+
|
|
11
|
+
if TYPE_CHECKING:
|
|
12
|
+
from deepeval.models import DeepEvalBaseLLM
|
|
13
|
+
from deepeval.models.base_model import DeepEvalBaseSystemOneModel
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
# Sentinel label the judge returns when none of the declared labels fit.
|
|
17
|
+
NONE_LABEL = "NONE"
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
class Label(BaseModel):
|
|
21
|
+
"""A label a classifier can assign. The description is the boundary for
|
|
22
|
+
the label, the same way G-Eval criteria are the boundary for a score."""
|
|
23
|
+
|
|
24
|
+
name: str
|
|
25
|
+
description: Optional[str] = None
|
|
26
|
+
|
|
27
|
+
def __init__(
|
|
28
|
+
self,
|
|
29
|
+
name: Optional[str] = None,
|
|
30
|
+
description: Optional[str] = None,
|
|
31
|
+
**kwargs,
|
|
32
|
+
):
|
|
33
|
+
if name is not None:
|
|
34
|
+
kwargs["name"] = name
|
|
35
|
+
if description is not None:
|
|
36
|
+
kwargs["description"] = description
|
|
37
|
+
super().__init__(**kwargs)
|
|
38
|
+
|
|
39
|
+
# `print(classifier.labels)` should read as the list of label names a
|
|
40
|
+
# test case can put in `expected_labels`, not as pydantic reprs, and
|
|
41
|
+
# `"refused" in classifier.labels` should work.
|
|
42
|
+
def __repr__(self) -> str:
|
|
43
|
+
return repr(self.name)
|
|
44
|
+
|
|
45
|
+
def __str__(self) -> str:
|
|
46
|
+
return self.name
|
|
47
|
+
|
|
48
|
+
def __eq__(self, other: object) -> bool:
|
|
49
|
+
if isinstance(other, Label):
|
|
50
|
+
return (
|
|
51
|
+
self.name == other.name
|
|
52
|
+
and self.description == other.description
|
|
53
|
+
)
|
|
54
|
+
if isinstance(other, str):
|
|
55
|
+
return self.name == other
|
|
56
|
+
return NotImplemented
|
|
57
|
+
|
|
58
|
+
def __hash__(self) -> int:
|
|
59
|
+
return hash((self.name, self.description))
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
class BaseClassifier(PromptMixin):
|
|
63
|
+
"""Classifier counterpart of ``BaseMetric``.
|
|
64
|
+
|
|
65
|
+
A classifier assigns exactly one label from a closed set to a test case.
|
|
66
|
+
It only produces a pass/fail verdict when the test case declares an
|
|
67
|
+
expected label for it (``test_case.expected_labels[classifier.name]``);
|
|
68
|
+
otherwise ``success`` is ``None``, mirroring a metric with no threshold.
|
|
69
|
+
"""
|
|
70
|
+
|
|
71
|
+
_template_feature = "classifiers"
|
|
72
|
+
_template_attr = "classification_template"
|
|
73
|
+
|
|
74
|
+
name: str
|
|
75
|
+
labels: List[Label]
|
|
76
|
+
label: Optional[str] = None
|
|
77
|
+
reason: Optional[str] = None
|
|
78
|
+
success: Optional[bool] = None
|
|
79
|
+
evaluation_model: Optional[str] = None
|
|
80
|
+
# Kept only so shared helpers written for metrics (e.g. the progress
|
|
81
|
+
# indicator description) can read it. Classifiers have no strict mode.
|
|
82
|
+
strict_mode: bool = False
|
|
83
|
+
async_mode: bool = True
|
|
84
|
+
include_reason: bool = True
|
|
85
|
+
# When True the judge may decline to classify, surfaced as `label is None`
|
|
86
|
+
# with no error. When False every response must receive a label.
|
|
87
|
+
allow_none: bool = False
|
|
88
|
+
error: Optional[str] = None
|
|
89
|
+
evaluation_cost: Optional[float] = None
|
|
90
|
+
input_tokens: Optional[int] = None
|
|
91
|
+
output_tokens: Optional[int] = None
|
|
92
|
+
skipped = False
|
|
93
|
+
model: Optional[DeepEvalBaseLLM] = None
|
|
94
|
+
using_native_model: Optional[bool] = None
|
|
95
|
+
# Experimental (DEEPEVAL_MODE=experimental); see EXPERIMENTAL.md.
|
|
96
|
+
system_one_model: Optional[DeepEvalBaseSystemOneModel] = None
|
|
97
|
+
|
|
98
|
+
def __init_subclass__(cls, **kwargs):
|
|
99
|
+
super().__init_subclass__(**kwargs)
|
|
100
|
+
from deepeval.tracing.internal import observe_methods
|
|
101
|
+
|
|
102
|
+
observe_methods(cls)
|
|
103
|
+
|
|
104
|
+
@abstractmethod
|
|
105
|
+
def classify(
|
|
106
|
+
self,
|
|
107
|
+
test_case: Union[LLMTestCase, ConversationalTestCase],
|
|
108
|
+
*args,
|
|
109
|
+
**kwargs,
|
|
110
|
+
) -> str:
|
|
111
|
+
raise NotImplementedError
|
|
112
|
+
|
|
113
|
+
@abstractmethod
|
|
114
|
+
async def a_classify(
|
|
115
|
+
self,
|
|
116
|
+
test_case: Union[LLMTestCase, ConversationalTestCase],
|
|
117
|
+
*args,
|
|
118
|
+
**kwargs,
|
|
119
|
+
) -> str:
|
|
120
|
+
raise NotImplementedError(
|
|
121
|
+
f"Async execution for {self.__class__.__name__} not supported yet. Please set 'async_mode' to 'False'."
|
|
122
|
+
)
|
|
123
|
+
|
|
124
|
+
def is_successful(
|
|
125
|
+
self, expected_label: Optional[str] = None
|
|
126
|
+
) -> Optional[bool]:
|
|
127
|
+
if expected_label is None:
|
|
128
|
+
self.success = None
|
|
129
|
+
elif self.error is not None:
|
|
130
|
+
self.success = False
|
|
131
|
+
else:
|
|
132
|
+
self.success = self.label == expected_label
|
|
133
|
+
return self.success
|
|
134
|
+
|
|
135
|
+
def copy(self) -> "BaseClassifier":
|
|
136
|
+
"""Return a fresh instance with the same configuration.
|
|
137
|
+
|
|
138
|
+
Mirrors ``copy_metrics``: the executor evaluates test cases
|
|
139
|
+
concurrently and each needs its own instance so per-case state
|
|
140
|
+
(``label``, ``reason``, ``error``, cost) never bleeds across cases.
|
|
141
|
+
Only the concrete class's own ``__init__`` parameters are replayed,
|
|
142
|
+
so built-in classifiers with fixed labels reconstruct cleanly.
|
|
143
|
+
"""
|
|
144
|
+
import inspect
|
|
145
|
+
|
|
146
|
+
params = inspect.signature(type(self).__init__).parameters
|
|
147
|
+
state = vars(self)
|
|
148
|
+
kwargs = {
|
|
149
|
+
name: state[name]
|
|
150
|
+
for name, param in params.items()
|
|
151
|
+
if name != "self"
|
|
152
|
+
and param.kind
|
|
153
|
+
in (
|
|
154
|
+
inspect.Parameter.POSITIONAL_OR_KEYWORD,
|
|
155
|
+
inspect.Parameter.KEYWORD_ONLY,
|
|
156
|
+
)
|
|
157
|
+
and name in state
|
|
158
|
+
}
|
|
159
|
+
return type(self)(**kwargs)
|
|
160
|
+
|
|
161
|
+
@property
|
|
162
|
+
def __name__(self):
|
|
163
|
+
return self.name
|
|
164
|
+
|
|
165
|
+
def _accrue_cost(self, cost: Optional[float]) -> None:
|
|
166
|
+
effective = getattr(cost, "value", cost)
|
|
167
|
+
if self.evaluation_cost is not None and effective is not None:
|
|
168
|
+
self.evaluation_cost += effective
|
|
169
|
+
else:
|
|
170
|
+
self.evaluation_cost = None
|
|
171
|
+
|
|
172
|
+
def _accrue_tokens(
|
|
173
|
+
self,
|
|
174
|
+
input_tokens: Optional[int],
|
|
175
|
+
output_tokens: Optional[int],
|
|
176
|
+
) -> None:
|
|
177
|
+
if input_tokens is not None:
|
|
178
|
+
self.input_tokens = (self.input_tokens or 0) + input_tokens
|
|
179
|
+
if output_tokens is not None:
|
|
180
|
+
self.output_tokens = (self.output_tokens or 0) + output_tokens
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
from typing import List, Optional, Type, Union
|
|
2
|
+
|
|
3
|
+
from deepeval.classifiers.base_classifier import Label
|
|
4
|
+
from deepeval.classifiers.classifier import Classifier, ClassifierTemplate
|
|
5
|
+
from deepeval.models import DeepEvalBaseLLM
|
|
6
|
+
|
|
7
|
+
DEFAULT_LABELS: List[Label] = [
|
|
8
|
+
Label(
|
|
9
|
+
"asked_clarification",
|
|
10
|
+
"The input is ambiguous or underspecified and the response asks a clarifying question before proceeding.",
|
|
11
|
+
),
|
|
12
|
+
Label(
|
|
13
|
+
"answered_directly",
|
|
14
|
+
"The input is clear enough and the response answers or acts on it without needing clarification.",
|
|
15
|
+
),
|
|
16
|
+
Label(
|
|
17
|
+
"guessed",
|
|
18
|
+
"The input is ambiguous or underspecified but the response proceeds on an assumption instead of asking.",
|
|
19
|
+
),
|
|
20
|
+
]
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
class ClarificationClassifier(Classifier):
|
|
24
|
+
"""Labels whether the assistant asked for clarification, answered directly, or guessed on ambiguous input."""
|
|
25
|
+
|
|
26
|
+
def __init__(
|
|
27
|
+
self,
|
|
28
|
+
model: Optional[Union[str, DeepEvalBaseLLM]] = None,
|
|
29
|
+
include_reason: bool = True,
|
|
30
|
+
allow_none: bool = False,
|
|
31
|
+
async_mode: bool = True,
|
|
32
|
+
classification_template: Type[ClassifierTemplate] = ClassifierTemplate,
|
|
33
|
+
):
|
|
34
|
+
super().__init__(
|
|
35
|
+
name="clarification",
|
|
36
|
+
labels=list(DEFAULT_LABELS),
|
|
37
|
+
model=model,
|
|
38
|
+
include_reason=include_reason,
|
|
39
|
+
allow_none=allow_none,
|
|
40
|
+
async_mode=async_mode,
|
|
41
|
+
classification_template=classification_template,
|
|
42
|
+
)
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
"""LLM-judged classifier: assigns exactly one label from a closed set."""
|
|
2
|
+
|
|
3
|
+
import asyncio
|
|
4
|
+
from typing import Dict, List, Optional, Sequence, Tuple, Type, Union
|
|
5
|
+
|
|
6
|
+
from deepeval.classifiers.base_classifier import (
|
|
7
|
+
NONE_LABEL,
|
|
8
|
+
BaseClassifier,
|
|
9
|
+
Label,
|
|
10
|
+
)
|
|
11
|
+
from deepeval.classifiers.classifier.schema import (
|
|
12
|
+
ClassificationResult,
|
|
13
|
+
Reason,
|
|
14
|
+
)
|
|
15
|
+
from deepeval.classifiers.utils import (
|
|
16
|
+
SystemOneClassifySpec,
|
|
17
|
+
a_generate_classification,
|
|
18
|
+
construct_multi_turn_content,
|
|
19
|
+
construct_multi_turn_state,
|
|
20
|
+
construct_single_turn_content,
|
|
21
|
+
construct_single_turn_state,
|
|
22
|
+
construct_turns,
|
|
23
|
+
format_labels,
|
|
24
|
+
generate_classification,
|
|
25
|
+
normalize_labels,
|
|
26
|
+
resolve_label,
|
|
27
|
+
)
|
|
28
|
+
from deepeval.config.settings import get_settings
|
|
29
|
+
from deepeval.metrics.indicator import metric_progress_indicator
|
|
30
|
+
from deepeval.metrics.utils import (
|
|
31
|
+
initialize_model,
|
|
32
|
+
initialize_system_one_model,
|
|
33
|
+
)
|
|
34
|
+
from deepeval.models import DeepEvalBaseLLM
|
|
35
|
+
from deepeval.templates import make_template_class
|
|
36
|
+
from deepeval.test_case import ConversationalTestCase, LLMTestCase
|
|
37
|
+
from deepeval.utils import get_or_create_event_loop
|
|
38
|
+
|
|
39
|
+
ClassifierTemplate = make_template_class("Classifier", feature="classifiers")
|
|
40
|
+
|
|
41
|
+
# Built-in classifiers (``RefusalClassifier`` ...) share ``Classifier``'s bundle
|
|
42
|
+
# entry. Public templates reach it through ``classification_template``; the
|
|
43
|
+
# ``_experimental_*`` ones are not exposed on the template class, so they name
|
|
44
|
+
# the bundle key explicitly.
|
|
45
|
+
_EXPERIMENTAL_TEMPLATE_CLASS = "Classifier"
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
class Classifier(BaseClassifier):
|
|
49
|
+
def __init__(
|
|
50
|
+
self,
|
|
51
|
+
name: str,
|
|
52
|
+
labels: Sequence[Union[str, Label]],
|
|
53
|
+
model: Optional[Union[str, DeepEvalBaseLLM]] = None,
|
|
54
|
+
include_reason: bool = True,
|
|
55
|
+
allow_none: bool = False,
|
|
56
|
+
async_mode: bool = True,
|
|
57
|
+
classification_template: Type[ClassifierTemplate] = ClassifierTemplate,
|
|
58
|
+
):
|
|
59
|
+
if not name or not name.strip():
|
|
60
|
+
raise ValueError("Classifier 'name' cannot be empty.")
|
|
61
|
+
|
|
62
|
+
self.name = name
|
|
63
|
+
self.labels = normalize_labels(labels)
|
|
64
|
+
self.model, self.using_native_model = initialize_model(model)
|
|
65
|
+
self.system_one_model = initialize_system_one_model()
|
|
66
|
+
self.evaluation_model = self.model.get_model_name()
|
|
67
|
+
self.include_reason = include_reason
|
|
68
|
+
self.allow_none = allow_none
|
|
69
|
+
self.async_mode = async_mode
|
|
70
|
+
self.classification_template = classification_template
|
|
71
|
+
|
|
72
|
+
def classify(
|
|
73
|
+
self,
|
|
74
|
+
test_case: Union[LLMTestCase, ConversationalTestCase],
|
|
75
|
+
_show_indicator: bool = True,
|
|
76
|
+
_in_component: bool = False,
|
|
77
|
+
) -> str:
|
|
78
|
+
self._check_test_case(test_case)
|
|
79
|
+
self._reset_usage()
|
|
80
|
+
|
|
81
|
+
with metric_progress_indicator(
|
|
82
|
+
self, _show_indicator=_show_indicator, _in_component=_in_component
|
|
83
|
+
):
|
|
84
|
+
if self.async_mode:
|
|
85
|
+
loop = get_or_create_event_loop()
|
|
86
|
+
settings = get_settings()
|
|
87
|
+
loop.run_until_complete(
|
|
88
|
+
asyncio.wait_for(
|
|
89
|
+
self.a_classify(
|
|
90
|
+
test_case,
|
|
91
|
+
_show_indicator=False,
|
|
92
|
+
_in_component=_in_component,
|
|
93
|
+
),
|
|
94
|
+
timeout=(
|
|
95
|
+
None
|
|
96
|
+
if settings.DEEPEVAL_DISABLE_TIMEOUTS
|
|
97
|
+
else settings.DEEPEVAL_PER_TASK_TIMEOUT_SECONDS
|
|
98
|
+
),
|
|
99
|
+
)
|
|
100
|
+
)
|
|
101
|
+
else:
|
|
102
|
+
prompt = self._build_prompt(test_case)
|
|
103
|
+
raw_label, reason = generate_classification(
|
|
104
|
+
self,
|
|
105
|
+
prompt,
|
|
106
|
+
schema_cls=ClassificationResult,
|
|
107
|
+
system_one=self._experimental_system_one_spec(test_case),
|
|
108
|
+
)
|
|
109
|
+
self._finalize(raw_label, reason)
|
|
110
|
+
|
|
111
|
+
return self.label
|
|
112
|
+
|
|
113
|
+
async def a_classify(
|
|
114
|
+
self,
|
|
115
|
+
test_case: Union[LLMTestCase, ConversationalTestCase],
|
|
116
|
+
_show_indicator: bool = True,
|
|
117
|
+
_in_component: bool = False,
|
|
118
|
+
) -> str:
|
|
119
|
+
self._check_test_case(test_case)
|
|
120
|
+
self._reset_usage()
|
|
121
|
+
|
|
122
|
+
with metric_progress_indicator(
|
|
123
|
+
self,
|
|
124
|
+
async_mode=True,
|
|
125
|
+
_show_indicator=_show_indicator,
|
|
126
|
+
_in_component=_in_component,
|
|
127
|
+
):
|
|
128
|
+
prompt = self._build_prompt(test_case)
|
|
129
|
+
raw_label, reason = await a_generate_classification(
|
|
130
|
+
self,
|
|
131
|
+
prompt,
|
|
132
|
+
schema_cls=ClassificationResult,
|
|
133
|
+
system_one=self._experimental_system_one_spec(test_case),
|
|
134
|
+
)
|
|
135
|
+
self._finalize(raw_label, reason)
|
|
136
|
+
return self.label
|
|
137
|
+
|
|
138
|
+
###############################################
|
|
139
|
+
# Internals
|
|
140
|
+
###############################################
|
|
141
|
+
|
|
142
|
+
def _check_test_case(
|
|
143
|
+
self, test_case: Union[LLMTestCase, ConversationalTestCase]
|
|
144
|
+
) -> None:
|
|
145
|
+
if not isinstance(test_case, (LLMTestCase, ConversationalTestCase)):
|
|
146
|
+
raise TypeError(
|
|
147
|
+
f"{self.__class__.__name__} expects an LLMTestCase or ConversationalTestCase, got {type(test_case).__name__}."
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
def _reset_usage(self) -> None:
|
|
151
|
+
self.evaluation_cost = 0 if self.using_native_model else None
|
|
152
|
+
self.input_tokens = 0 if self.using_native_model else None
|
|
153
|
+
self.output_tokens = 0 if self.using_native_model else None
|
|
154
|
+
self.label = None
|
|
155
|
+
self.reason = None
|
|
156
|
+
self.error = None
|
|
157
|
+
|
|
158
|
+
def _build_prompt(
|
|
159
|
+
self, test_case: Union[LLMTestCase, ConversationalTestCase]
|
|
160
|
+
) -> str:
|
|
161
|
+
labels = format_labels(self.labels)
|
|
162
|
+
if isinstance(test_case, ConversationalTestCase):
|
|
163
|
+
return self._get_prompt(
|
|
164
|
+
"classify_multi_turn",
|
|
165
|
+
labels=labels,
|
|
166
|
+
test_case_content=construct_multi_turn_content(test_case),
|
|
167
|
+
turns=construct_turns(test_case),
|
|
168
|
+
allow_none=self.allow_none,
|
|
169
|
+
)
|
|
170
|
+
return self._get_prompt(
|
|
171
|
+
"classify_single_turn",
|
|
172
|
+
labels=labels,
|
|
173
|
+
test_case_content=construct_single_turn_content(test_case),
|
|
174
|
+
allow_none=self.allow_none,
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
def _experimental_system_one_spec(
|
|
178
|
+
self, test_case: Union[LLMTestCase, ConversationalTestCase]
|
|
179
|
+
) -> SystemOneClassifySpec:
|
|
180
|
+
"""Experimental (DEEPEVAL_MODE=experimental); see EXPERIMENTAL.md.
|
|
181
|
+
|
|
182
|
+
The label is one Choice over the declared labels (plus ``NONE`` when
|
|
183
|
+
``allow_none``); the LLM only writes the reason, if one is wanted.
|
|
184
|
+
"""
|
|
185
|
+
multi_turn = isinstance(test_case, ConversationalTestCase)
|
|
186
|
+
state = (
|
|
187
|
+
construct_multi_turn_state(test_case)
|
|
188
|
+
if multi_turn
|
|
189
|
+
else construct_single_turn_state(test_case)
|
|
190
|
+
)
|
|
191
|
+
options: Dict[str, Optional[str]] = {
|
|
192
|
+
label.name: label.description for label in self.labels
|
|
193
|
+
}
|
|
194
|
+
if self.allow_none:
|
|
195
|
+
options[NONE_LABEL] = "None of the other labels apply."
|
|
196
|
+
|
|
197
|
+
reason_prompt = None
|
|
198
|
+
if self.include_reason:
|
|
199
|
+
labels = format_labels(self.labels)
|
|
200
|
+
test_case_content = (
|
|
201
|
+
construct_multi_turn_content(test_case)
|
|
202
|
+
if multi_turn
|
|
203
|
+
else construct_single_turn_content(test_case)
|
|
204
|
+
)
|
|
205
|
+
turns = construct_turns(test_case) if multi_turn else None
|
|
206
|
+
|
|
207
|
+
def reason_prompt(
|
|
208
|
+
label: str, probabilities: Dict[str, float], confidence: float
|
|
209
|
+
) -> str:
|
|
210
|
+
return self._get_prompt(
|
|
211
|
+
"_experimental_system_one_reason",
|
|
212
|
+
template_class=_EXPERIMENTAL_TEMPLATE_CLASS,
|
|
213
|
+
labels=labels,
|
|
214
|
+
label=label,
|
|
215
|
+
probabilities=probabilities,
|
|
216
|
+
confidence=confidence,
|
|
217
|
+
test_case_content=test_case_content,
|
|
218
|
+
turns=turns,
|
|
219
|
+
allow_none=self.allow_none,
|
|
220
|
+
)
|
|
221
|
+
|
|
222
|
+
return SystemOneClassifySpec(
|
|
223
|
+
instructions=self._get_prompt(
|
|
224
|
+
"_experimental_system_one_classify",
|
|
225
|
+
template_class=_EXPERIMENTAL_TEMPLATE_CLASS,
|
|
226
|
+
allow_none=self.allow_none,
|
|
227
|
+
multi_turn=multi_turn,
|
|
228
|
+
),
|
|
229
|
+
options=options,
|
|
230
|
+
state=state,
|
|
231
|
+
reason_prompt=reason_prompt,
|
|
232
|
+
reason_schema_cls=Reason,
|
|
233
|
+
)
|
|
234
|
+
|
|
235
|
+
def _finalize(
|
|
236
|
+
self, raw_label: Optional[str], reason: Optional[str]
|
|
237
|
+
) -> None:
|
|
238
|
+
label = resolve_label(raw_label, self.labels, self.allow_none)
|
|
239
|
+
if label is None:
|
|
240
|
+
allowed = ", ".join(str(label) for label in self.labels)
|
|
241
|
+
if self.allow_none:
|
|
242
|
+
allowed += ", or no classification"
|
|
243
|
+
self.error = (
|
|
244
|
+
f"Judge returned '{raw_label}', which is not one of the declared labels "
|
|
245
|
+
f"({allowed})."
|
|
246
|
+
)
|
|
247
|
+
self.label = None
|
|
248
|
+
elif label == NONE_LABEL:
|
|
249
|
+
# The judge declined to classify; that is a valid outcome when
|
|
250
|
+
# allow_none is on, surfaced to users as `label is None` with no error.
|
|
251
|
+
self.label = None
|
|
252
|
+
else:
|
|
253
|
+
self.label = label
|
|
254
|
+
self.reason = reason if self.include_reason else None
|
deepeval-4.2.4/deepeval/classifiers/classifier/templates/_experimental_system_one_classify.txt
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Which option best describes {% if multi_turn %}the conversation in `turns`{% else %}`test_case`{% endif %}? Each option is a label; where a description is given it is the authoritative boundary for that label.{% if multi_turn %} Consider the conversation as a whole, not just the last turn, unless a label description says otherwise.{% endif %}{% if allow_none %} Pick `NONE` only when no other label fits.{% else %} Pick the closest label even when the fit is imperfect.{% endif %}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
You are a classifier. A calibrated judge has already assigned a label to the {% if turns %}conversation{% else %}test case{% endif %} below from the closed set of labels provided. Write a brief explanation for that label and return a JSON object with one field, `"reason"`.
|
|
2
|
+
|
|
3
|
+
Your explanation should:
|
|
4
|
+
- Be specific and grounded in the label descriptions, referencing details from the {% if turns %}conversation{% else %}test case{% endif %}.
|
|
5
|
+
- Reflect the judge's probabilities: mention the labels it was most and least confident about when that helps.
|
|
6
|
+
- Be concise, clear, and focused on why the chosen label fits better than the alternatives.
|
|
7
|
+
- Not quote the numeric probabilities or confidence themselves.
|
|
8
|
+
- Not invent labels that are not in the list, and not dispute the judge's label.
|
|
9
|
+
{% if allow_none %}- If the label is `NONE`, explain why none of the listed labels apply.
|
|
10
|
+
{% endif %}
|
|
11
|
+
Only return valid JSON. Do **not** include any extra commentary or text.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
Labels:
|
|
16
|
+
{{ labels }}
|
|
17
|
+
|
|
18
|
+
Judge's Label: {{ label }}
|
|
19
|
+
|
|
20
|
+
Judge's Probabilities:
|
|
21
|
+
{{ probabilities }}
|
|
22
|
+
|
|
23
|
+
Judge's Confidence: {{ confidence }}
|
|
24
|
+
{% if turns %}{% if test_case_content %}
|
|
25
|
+
{{ test_case_content }}
|
|
26
|
+
{% endif %}
|
|
27
|
+
Turns:
|
|
28
|
+
{{ turns }}
|
|
29
|
+
{% else %}
|
|
30
|
+
Test Case:
|
|
31
|
+
{{ test_case_content }}
|
|
32
|
+
{% endif %}
|
|
33
|
+
---
|
|
34
|
+
**Example JSON:**
|
|
35
|
+
{
|
|
36
|
+
"reason": "your concise and informative reason here"
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
JSON:
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
Classifier
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
You are a classifier. Given the conversation below, assign it exactly ONE label from the closed set of labels provided and return a JSON object with two fields:
|
|
2
|
+
|
|
3
|
+
- `"label"`: the name of the single best-fitting label, copied exactly as written in the list of labels.{% if allow_none %} If none of the labels apply, return `"NONE"`.{% endif %}
|
|
4
|
+
- `"reason"`: a brief explanation for why this label was chosen. Reference specific turns or details from the conversation. Do **not** invent labels that are not in the list.
|
|
5
|
+
|
|
6
|
+
Rules:
|
|
7
|
+
- Use the label descriptions as the boundary for each label. When a description is given, it is authoritative.
|
|
8
|
+
- Consider the conversation as a whole, not just the last turn, unless a label description says otherwise.
|
|
9
|
+
- Choose exactly one label. Never return multiple labels.
|
|
10
|
+
{% if allow_none %}- Only return `"NONE"` when no label fits; do not use it to avoid a hard decision.
|
|
11
|
+
{% else %}- You must choose one of the listed labels, even when the fit is imperfect. Pick the closest one and explain the reservation in the reason.
|
|
12
|
+
{% endif %}- Only return valid JSON. Do **not** include any extra commentary or text.
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
Labels:
|
|
17
|
+
{{ labels }}
|
|
18
|
+
{% if test_case_content %}
|
|
19
|
+
{{ test_case_content }}
|
|
20
|
+
{% endif %}
|
|
21
|
+
Turns:
|
|
22
|
+
{{ turns }}
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
**Example JSON:**
|
|
26
|
+
{
|
|
27
|
+
"label": "one of the label names above{% if allow_none %}, or NONE{% endif %}",
|
|
28
|
+
"reason": "your concise and informative reason here"
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
JSON:
|