deepeval 3.8.3__tar.gz → 3.8.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.
Files changed (527) hide show
  1. {deepeval-3.8.3 → deepeval-3.8.4}/PKG-INFO +1 -1
  2. deepeval-3.8.4/deepeval/_version.py +1 -0
  3. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/config/settings.py +12 -1
  4. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/constants.py +2 -1
  5. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/prompt/__init__.py +2 -0
  6. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/prompt/api.py +48 -2
  7. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/prompt/prompt.py +30 -0
  8. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/prompt/utils.py +72 -2
  9. {deepeval-3.8.3 → deepeval-3.8.4}/pyproject.toml +1 -1
  10. deepeval-3.8.3/deepeval/_version.py +0 -1
  11. {deepeval-3.8.3 → deepeval-3.8.4}/LICENSE.md +0 -0
  12. {deepeval-3.8.3 → deepeval-3.8.4}/README.md +0 -0
  13. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/__init__.py +0 -0
  14. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/annotation/__init__.py +0 -0
  15. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/annotation/annotation.py +0 -0
  16. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/annotation/api.py +0 -0
  17. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/anthropic/__init__.py +0 -0
  18. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/anthropic/extractors.py +0 -0
  19. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/anthropic/patch.py +0 -0
  20. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/anthropic/utils.py +0 -0
  21. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/__init__.py +0 -0
  22. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/arc/__init__.py +0 -0
  23. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/arc/arc.py +0 -0
  24. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/arc/mode.py +0 -0
  25. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/arc/template.py +0 -0
  26. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/base_benchmark.py +0 -0
  27. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/bbq/__init__.py +0 -0
  28. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/bbq/bbq.py +0 -0
  29. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/bbq/task.py +0 -0
  30. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/bbq/template.py +0 -0
  31. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/__init__.py +0 -0
  32. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/big_bench_hard.py +0 -0
  33. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/__init__.py +0 -0
  34. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/boolean_expressions.txt +0 -0
  35. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/causal_judgement.txt +0 -0
  36. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/date_understanding.txt +0 -0
  37. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/disambiguation_qa.txt +0 -0
  38. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/dyck_languages.txt +0 -0
  39. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/formal_fallacies.txt +0 -0
  40. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/geometric_shapes.txt +0 -0
  41. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/hyperbaton.txt +0 -0
  42. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/logical_deduction_five_objects.txt +0 -0
  43. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/logical_deduction_seven_objects.txt +0 -0
  44. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/logical_deduction_three_objects.txt +0 -0
  45. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/movie_recommendation.txt +0 -0
  46. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/multistep_arithmetic_two.txt +0 -0
  47. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/navigate.txt +0 -0
  48. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/object_counting.txt +0 -0
  49. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/penguins_in_a_table.txt +0 -0
  50. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/reasoning_about_colored_objects.txt +0 -0
  51. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/ruin_names.txt +0 -0
  52. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/salient_translation_error_detection.txt +0 -0
  53. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/snarks.txt +0 -0
  54. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/sports_understanding.txt +0 -0
  55. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/temporal_sequences.txt +0 -0
  56. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/tracking_shuffled_objects_five_objects.txt +0 -0
  57. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/tracking_shuffled_objects_seven_objects.txt +0 -0
  58. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/tracking_shuffled_objects_three_objects.txt +0 -0
  59. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/web_of_lies.txt +0 -0
  60. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/cot_prompts/word_sorting.txt +0 -0
  61. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/__init__.py +0 -0
  62. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/boolean_expressions.txt +0 -0
  63. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/causal_judgement.txt +0 -0
  64. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/date_understanding.txt +0 -0
  65. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/disambiguation_qa.txt +0 -0
  66. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/dyck_languages.txt +0 -0
  67. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/formal_fallacies.txt +0 -0
  68. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/geometric_shapes.txt +0 -0
  69. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/hyperbaton.txt +0 -0
  70. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/logical_deduction_five_objects.txt +0 -0
  71. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/logical_deduction_seven_objects.txt +0 -0
  72. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/logical_deduction_three_objects.txt +0 -0
  73. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/movie_recommendation.txt +0 -0
  74. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/multistep_arithmetic_two.txt +0 -0
  75. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/navigate.txt +0 -0
  76. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/object_counting.txt +0 -0
  77. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/penguins_in_a_table.txt +0 -0
  78. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/reasoning_about_colored_objects.txt +0 -0
  79. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/ruin_names.txt +0 -0
  80. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/salient_translation_error_detection.txt +0 -0
  81. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/snarks.txt +0 -0
  82. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/sports_understanding.txt +0 -0
  83. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/temporal_sequences.txt +0 -0
  84. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/tracking_shuffled_objects_five_objects.txt +0 -0
  85. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/tracking_shuffled_objects_seven_objects.txt +0 -0
  86. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/tracking_shuffled_objects_three_objects.txt +0 -0
  87. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/web_of_lies.txt +0 -0
  88. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/shot_prompts/word_sorting.txt +0 -0
  89. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/task.py +0 -0
  90. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/big_bench_hard/template.py +0 -0
  91. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/bool_q/__init__.py +0 -0
  92. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/bool_q/bool_q.py +0 -0
  93. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/bool_q/template.py +0 -0
  94. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/drop/__init__.py +0 -0
  95. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/drop/drop.py +0 -0
  96. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/drop/task.py +0 -0
  97. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/drop/template.py +0 -0
  98. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/equity_med_qa/__init__.py +0 -0
  99. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/equity_med_qa/equity_med_qa.py +0 -0
  100. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/equity_med_qa/task.py +0 -0
  101. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/equity_med_qa/template.py +0 -0
  102. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/gsm8k/__init__.py +0 -0
  103. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/gsm8k/gsm8k.py +0 -0
  104. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/gsm8k/template.py +0 -0
  105. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/hellaswag/__init__.py +0 -0
  106. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/hellaswag/hellaswag.py +0 -0
  107. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/hellaswag/task.py +0 -0
  108. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/hellaswag/template.py +0 -0
  109. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/human_eval/__init__.py +0 -0
  110. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/human_eval/human_eval.py +0 -0
  111. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/human_eval/task.py +0 -0
  112. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/human_eval/template.py +0 -0
  113. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/ifeval/__init__.py +0 -0
  114. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/ifeval/ifeval.py +0 -0
  115. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/ifeval/template.py +0 -0
  116. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/lambada/__init__.py +0 -0
  117. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/lambada/lambada.py +0 -0
  118. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/lambada/template.py +0 -0
  119. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/logi_qa/__init__.py +0 -0
  120. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/logi_qa/logi_qa.py +0 -0
  121. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/logi_qa/task.py +0 -0
  122. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/logi_qa/template.py +0 -0
  123. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/math_qa/__init__.py +0 -0
  124. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/math_qa/math_qa.py +0 -0
  125. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/math_qa/task.py +0 -0
  126. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/math_qa/template.py +0 -0
  127. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/mmlu/__init__.py +0 -0
  128. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/mmlu/mmlu.py +0 -0
  129. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/mmlu/task.py +0 -0
  130. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/mmlu/template.py +0 -0
  131. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/modes/__init__.py +0 -0
  132. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/results.py +0 -0
  133. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/schema.py +0 -0
  134. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/squad/__init__.py +0 -0
  135. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/squad/squad.py +0 -0
  136. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/squad/task.py +0 -0
  137. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/squad/template.py +0 -0
  138. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/tasks/__init__.py +0 -0
  139. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/truthful_qa/__init__.py +0 -0
  140. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/truthful_qa/mode.py +0 -0
  141. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/truthful_qa/task.py +0 -0
  142. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/truthful_qa/template.py +0 -0
  143. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/truthful_qa/truthful_qa.py +0 -0
  144. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/utils.py +0 -0
  145. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/winogrande/__init__.py +0 -0
  146. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/winogrande/template.py +0 -0
  147. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/benchmarks/winogrande/winogrande.py +0 -0
  148. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/cli/__init__.py +0 -0
  149. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/cli/dotenv_handler.py +0 -0
  150. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/cli/main.py +0 -0
  151. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/cli/server.py +0 -0
  152. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/cli/test.py +0 -0
  153. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/cli/types.py +0 -0
  154. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/cli/utils.py +0 -0
  155. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/confident/__init__.py +0 -0
  156. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/confident/api.py +0 -0
  157. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/confident/types.py +0 -0
  158. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/config/__init__.py +0 -0
  159. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/config/dotenv_handler.py +0 -0
  160. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/config/logging.py +0 -0
  161. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/config/settings_manager.py +0 -0
  162. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/config/utils.py +0 -0
  163. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/contextvars.py +0 -0
  164. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/dataset/__init__.py +0 -0
  165. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/dataset/api.py +0 -0
  166. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/dataset/dataset.py +0 -0
  167. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/dataset/golden.py +0 -0
  168. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/dataset/test_run_tracer.py +0 -0
  169. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/dataset/types.py +0 -0
  170. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/dataset/utils.py +0 -0
  171. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/errors.py +0 -0
  172. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/evaluate/__init__.py +0 -0
  173. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/evaluate/api.py +0 -0
  174. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/evaluate/compare.py +0 -0
  175. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/evaluate/configs.py +0 -0
  176. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/evaluate/evaluate.py +0 -0
  177. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/evaluate/execute.py +0 -0
  178. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/evaluate/types.py +0 -0
  179. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/evaluate/utils.py +0 -0
  180. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/__init__.py +0 -0
  181. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/crewai/__init__.py +0 -0
  182. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/crewai/handler.py +0 -0
  183. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/crewai/subs.py +0 -0
  184. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/crewai/tool.py +0 -0
  185. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/crewai/wrapper.py +0 -0
  186. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/hugging_face/__init__.py +0 -0
  187. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/hugging_face/callback.py +0 -0
  188. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/hugging_face/rich_manager.py +0 -0
  189. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/hugging_face/tests/test_callbacks.py +0 -0
  190. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/hugging_face/utils.py +0 -0
  191. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/langchain/__init__.py +0 -0
  192. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/langchain/callback.py +0 -0
  193. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/langchain/patch.py +0 -0
  194. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/langchain/utils.py +0 -0
  195. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/llama_index/__init__.py +0 -0
  196. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/llama_index/handler.py +0 -0
  197. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/llama_index/utils.py +0 -0
  198. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/pydantic_ai/__init__.py +0 -0
  199. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/pydantic_ai/agent.py +0 -0
  200. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/pydantic_ai/instrumentator.py +0 -0
  201. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/pydantic_ai/otel.py +0 -0
  202. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/integrations/pydantic_ai/test_instrumentator.py +0 -0
  203. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/key_handler.py +0 -0
  204. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/__init__.py +0 -0
  205. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/answer_relevancy/__init__.py +0 -0
  206. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/answer_relevancy/answer_relevancy.py +0 -0
  207. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/answer_relevancy/schema.py +0 -0
  208. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/answer_relevancy/template.py +0 -0
  209. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/api.py +0 -0
  210. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/arena_g_eval/__init__.py +0 -0
  211. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/arena_g_eval/arena_g_eval.py +0 -0
  212. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/arena_g_eval/schema.py +0 -0
  213. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/arena_g_eval/template.py +0 -0
  214. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/arena_g_eval/utils.py +0 -0
  215. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/argument_correctness/__init__.py +0 -0
  216. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/argument_correctness/argument_correctness.py +0 -0
  217. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/argument_correctness/schema.py +0 -0
  218. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/argument_correctness/template.py +0 -0
  219. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/base_metric.py +0 -0
  220. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/bias/__init__.py +0 -0
  221. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/bias/bias.py +0 -0
  222. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/bias/schema.py +0 -0
  223. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/bias/template.py +0 -0
  224. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_precision/__init__.py +0 -0
  225. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_precision/contextual_precision.py +0 -0
  226. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_precision/schema.py +0 -0
  227. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_precision/template.py +0 -0
  228. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_recall/__init__.py +0 -0
  229. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_recall/contextual_recall.py +0 -0
  230. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_recall/schema.py +0 -0
  231. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_recall/template.py +0 -0
  232. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_relevancy/__init__.py +0 -0
  233. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_relevancy/contextual_relevancy.py +0 -0
  234. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_relevancy/schema.py +0 -0
  235. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/contextual_relevancy/template.py +0 -0
  236. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversation_completeness/__init__.py +0 -0
  237. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversation_completeness/conversation_completeness.py +0 -0
  238. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversation_completeness/schema.py +0 -0
  239. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversation_completeness/template.py +0 -0
  240. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversational_dag/__init__.py +0 -0
  241. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversational_dag/conversational_dag.py +0 -0
  242. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversational_dag/nodes.py +0 -0
  243. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversational_dag/templates.py +0 -0
  244. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversational_g_eval/__init__.py +0 -0
  245. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversational_g_eval/conversational_g_eval.py +0 -0
  246. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversational_g_eval/schema.py +0 -0
  247. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/conversational_g_eval/template.py +0 -0
  248. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/dag/__init__.py +0 -0
  249. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/dag/dag.py +0 -0
  250. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/dag/graph.py +0 -0
  251. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/dag/nodes.py +0 -0
  252. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/dag/schema.py +0 -0
  253. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/dag/templates.py +0 -0
  254. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/dag/utils.py +0 -0
  255. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/exact_match/__init__.py +0 -0
  256. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/exact_match/exact_match.py +0 -0
  257. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/faithfulness/__init__.py +0 -0
  258. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/faithfulness/faithfulness.py +0 -0
  259. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/faithfulness/schema.py +0 -0
  260. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/faithfulness/template.py +0 -0
  261. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/g_eval/__init__.py +0 -0
  262. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/g_eval/g_eval.py +0 -0
  263. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/g_eval/schema.py +0 -0
  264. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/g_eval/template.py +0 -0
  265. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/g_eval/utils.py +0 -0
  266. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/goal_accuracy/__init__.py +0 -0
  267. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/goal_accuracy/goal_accuracy.py +0 -0
  268. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/goal_accuracy/schema.py +0 -0
  269. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/goal_accuracy/template.py +0 -0
  270. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/hallucination/__init__.py +0 -0
  271. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/hallucination/hallucination.py +0 -0
  272. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/hallucination/schema.py +0 -0
  273. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/hallucination/template.py +0 -0
  274. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/indicator.py +0 -0
  275. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/json_correctness/__init__.py +0 -0
  276. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/json_correctness/json_correctness.py +0 -0
  277. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/json_correctness/schema.py +0 -0
  278. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/json_correctness/template.py +0 -0
  279. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/knowledge_retention/__init__.py +0 -0
  280. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/knowledge_retention/knowledge_retention.py +0 -0
  281. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/knowledge_retention/schema.py +0 -0
  282. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/knowledge_retention/template.py +0 -0
  283. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/mcp/__init__.py +0 -0
  284. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/mcp/mcp_task_completion.py +0 -0
  285. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/mcp/multi_turn_mcp_use_metric.py +0 -0
  286. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/mcp/schema.py +0 -0
  287. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/mcp/template.py +0 -0
  288. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/mcp_use_metric/__init__.py +0 -0
  289. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/mcp_use_metric/mcp_use_metric.py +0 -0
  290. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/mcp_use_metric/schema.py +0 -0
  291. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/mcp_use_metric/template.py +0 -0
  292. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/misuse/__init__.py +0 -0
  293. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/misuse/misuse.py +0 -0
  294. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/misuse/schema.py +0 -0
  295. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/misuse/template.py +0 -0
  296. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/__init__.py +0 -0
  297. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_coherence/__init__.py +0 -0
  298. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_coherence/image_coherence.py +0 -0
  299. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_coherence/schema.py +0 -0
  300. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_coherence/template.py +0 -0
  301. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_editing/__init__.py +0 -0
  302. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_editing/image_editing.py +0 -0
  303. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_editing/schema.py +0 -0
  304. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_editing/template.py +0 -0
  305. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/__init__.py +0 -0
  306. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/image_helpfulness.py +0 -0
  307. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/schema.py +0 -0
  308. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_helpfulness/template.py +0 -0
  309. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_reference/__init__.py +0 -0
  310. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_reference/image_reference.py +0 -0
  311. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_reference/schema.py +0 -0
  312. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/image_reference/template.py +0 -0
  313. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/text_to_image/__init__.py +0 -0
  314. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/text_to_image/schema.py +0 -0
  315. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/text_to_image/template.py +0 -0
  316. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/multimodal_metrics/text_to_image/text_to_image.py +0 -0
  317. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/non_advice/__init__.py +0 -0
  318. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/non_advice/non_advice.py +0 -0
  319. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/non_advice/schema.py +0 -0
  320. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/non_advice/template.py +0 -0
  321. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/pattern_match/__init__.py +0 -0
  322. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/pattern_match/pattern_match.py +0 -0
  323. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/pii_leakage/__init__.py +0 -0
  324. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/pii_leakage/pii_leakage.py +0 -0
  325. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/pii_leakage/schema.py +0 -0
  326. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/pii_leakage/template.py +0 -0
  327. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/plan_adherence/__init__.py +0 -0
  328. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/plan_adherence/plan_adherence.py +0 -0
  329. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/plan_adherence/schema.py +0 -0
  330. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/plan_adherence/template.py +0 -0
  331. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/plan_quality/__init__.py +0 -0
  332. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/plan_quality/plan_quality.py +0 -0
  333. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/plan_quality/schema.py +0 -0
  334. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/plan_quality/template.py +0 -0
  335. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/prompt_alignment/__init__.py +0 -0
  336. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/prompt_alignment/prompt_alignment.py +0 -0
  337. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/prompt_alignment/schema.py +0 -0
  338. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/prompt_alignment/template.py +0 -0
  339. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/ragas.py +0 -0
  340. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/role_adherence/__init__.py +0 -0
  341. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/role_adherence/role_adherence.py +0 -0
  342. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/role_adherence/schema.py +0 -0
  343. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/role_adherence/template.py +0 -0
  344. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/role_violation/__init__.py +0 -0
  345. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/role_violation/role_violation.py +0 -0
  346. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/role_violation/schema.py +0 -0
  347. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/role_violation/template.py +0 -0
  348. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/step_efficiency/__init__.py +0 -0
  349. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/step_efficiency/schema.py +0 -0
  350. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/step_efficiency/step_efficiency.py +0 -0
  351. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/step_efficiency/template.py +0 -0
  352. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/summarization/__init__.py +0 -0
  353. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/summarization/schema.py +0 -0
  354. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/summarization/summarization.py +0 -0
  355. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/summarization/template.py +0 -0
  356. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/task_completion/__init__.py +0 -0
  357. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/task_completion/schema.py +0 -0
  358. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/task_completion/task_completion.py +0 -0
  359. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/task_completion/template.py +0 -0
  360. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/tool_correctness/__init__.py +0 -0
  361. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/tool_correctness/schema.py +0 -0
  362. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/tool_correctness/template.py +0 -0
  363. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/tool_correctness/tool_correctness.py +0 -0
  364. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/tool_use/__init__.py +0 -0
  365. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/tool_use/schema.py +0 -0
  366. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/tool_use/template.py +0 -0
  367. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/tool_use/tool_use.py +0 -0
  368. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/topic_adherence/__init__.py +0 -0
  369. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/topic_adherence/schema.py +0 -0
  370. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/topic_adherence/template.py +0 -0
  371. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/topic_adherence/topic_adherence.py +0 -0
  372. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/toxicity/__init__.py +0 -0
  373. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/toxicity/schema.py +0 -0
  374. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/toxicity/template.py +0 -0
  375. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/toxicity/toxicity.py +0 -0
  376. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_precision/__init__.py +0 -0
  377. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_precision/schema.py +0 -0
  378. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_precision/template.py +0 -0
  379. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_precision/turn_contextual_precision.py +0 -0
  380. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_recall/__init__.py +0 -0
  381. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_recall/schema.py +0 -0
  382. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_recall/template.py +0 -0
  383. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_recall/turn_contextual_recall.py +0 -0
  384. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_relevancy/__init__.py +0 -0
  385. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_relevancy/schema.py +0 -0
  386. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_relevancy/template.py +0 -0
  387. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_contextual_relevancy/turn_contextual_relevancy.py +0 -0
  388. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_faithfulness/__init__.py +0 -0
  389. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_faithfulness/schema.py +0 -0
  390. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_faithfulness/template.py +0 -0
  391. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_faithfulness/turn_faithfulness.py +0 -0
  392. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_relevancy/__init__.py +0 -0
  393. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_relevancy/schema.py +0 -0
  394. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_relevancy/template.py +0 -0
  395. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/turn_relevancy/turn_relevancy.py +0 -0
  396. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/metrics/utils.py +0 -0
  397. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/model_integrations/__init__.py +0 -0
  398. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/model_integrations/types.py +0 -0
  399. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/model_integrations/utils.py +0 -0
  400. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/__init__.py +0 -0
  401. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/_summac_model.py +0 -0
  402. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/answer_relevancy_model.py +0 -0
  403. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/base_model.py +0 -0
  404. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/detoxify_model.py +0 -0
  405. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/embedding_models/__init__.py +0 -0
  406. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/embedding_models/azure_embedding_model.py +0 -0
  407. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/embedding_models/local_embedding_model.py +0 -0
  408. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/embedding_models/ollama_embedding_model.py +0 -0
  409. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/embedding_models/openai_embedding_model.py +0 -0
  410. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/hallucination_model.py +0 -0
  411. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/__init__.py +0 -0
  412. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/amazon_bedrock_model.py +0 -0
  413. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/anthropic_model.py +0 -0
  414. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/azure_model.py +0 -0
  415. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/constants.py +0 -0
  416. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/deepseek_model.py +0 -0
  417. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/gemini_model.py +0 -0
  418. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/grok_model.py +0 -0
  419. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/kimi_model.py +0 -0
  420. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/litellm_model.py +0 -0
  421. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/local_model.py +0 -0
  422. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/ollama_model.py +0 -0
  423. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/openai_model.py +0 -0
  424. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/openrouter_model.py +0 -0
  425. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/portkey_model.py +0 -0
  426. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/llms/utils.py +0 -0
  427. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/retry_policy.py +0 -0
  428. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/summac_model.py +0 -0
  429. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/unbias_model.py +0 -0
  430. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/models/utils.py +0 -0
  431. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/openai/__init__.py +0 -0
  432. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/openai/extractors.py +0 -0
  433. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/openai/patch.py +0 -0
  434. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/openai/utils.py +0 -0
  435. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/openai_agents/__init__.py +0 -0
  436. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/openai_agents/agent.py +0 -0
  437. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/openai_agents/callback_handler.py +0 -0
  438. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/openai_agents/extractors.py +0 -0
  439. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/openai_agents/patch.py +0 -0
  440. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/openai_agents/runner.py +0 -0
  441. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/__init__.py +0 -0
  442. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/__init__.py +0 -0
  443. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/base.py +0 -0
  444. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/configs.py +0 -0
  445. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/copro/__init__.py +0 -0
  446. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/copro/copro.py +0 -0
  447. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/gepa/__init__.py +0 -0
  448. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/gepa/gepa.py +0 -0
  449. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/miprov2/__init__.py +0 -0
  450. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/miprov2/bootstrapper.py +0 -0
  451. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/miprov2/miprov2.py +0 -0
  452. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/miprov2/proposer.py +0 -0
  453. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/simba/__init__.py +0 -0
  454. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/simba/simba.py +0 -0
  455. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/algorithms/simba/types.py +0 -0
  456. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/configs.py +0 -0
  457. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/policies.py +0 -0
  458. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/prompt_optimizer.py +0 -0
  459. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/rewriter/__init__.py +0 -0
  460. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/rewriter/rewriter.py +0 -0
  461. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/rewriter/utils.py +0 -0
  462. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/scorer/__init__.py +0 -0
  463. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/scorer/base.py +0 -0
  464. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/scorer/scorer.py +0 -0
  465. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/scorer/utils.py +0 -0
  466. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/types.py +0 -0
  467. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/optimizer/utils.py +0 -0
  468. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/plugins/__init__.py +0 -0
  469. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/plugins/plugin.py +0 -0
  470. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/progress_context.py +0 -0
  471. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/py.typed +0 -0
  472. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/red_teaming/README.md +0 -0
  473. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/scorer/__init__.py +0 -0
  474. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/scorer/scorer.py +0 -0
  475. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/simulator/__init__.py +0 -0
  476. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/simulator/conversation_simulator.py +0 -0
  477. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/simulator/schema.py +0 -0
  478. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/simulator/template.py +0 -0
  479. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/singleton.py +0 -0
  480. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/__init__.py +0 -0
  481. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/base_synthesizer.py +0 -0
  482. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/chunking/__init__.py +0 -0
  483. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/chunking/context_generator.py +0 -0
  484. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/chunking/doc_chunker.py +0 -0
  485. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/config.py +0 -0
  486. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/schema.py +0 -0
  487. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/synthesizer.py +0 -0
  488. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/templates/__init__.py +0 -0
  489. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/templates/template.py +0 -0
  490. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/templates/template_extraction.py +0 -0
  491. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/templates/template_prompt.py +0 -0
  492. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/types.py +0 -0
  493. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/synthesizer/utils.py +0 -0
  494. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/telemetry.py +0 -0
  495. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_case/__init__.py +0 -0
  496. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_case/api.py +0 -0
  497. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_case/arena_test_case.py +0 -0
  498. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_case/conversational_test_case.py +0 -0
  499. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_case/llm_test_case.py +0 -0
  500. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_case/mcp.py +0 -0
  501. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_case/utils.py +0 -0
  502. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_run/__init__.py +0 -0
  503. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_run/api.py +0 -0
  504. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_run/cache.py +0 -0
  505. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_run/hooks.py +0 -0
  506. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_run/hyperparameters.py +0 -0
  507. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/test_run/test_run.py +0 -0
  508. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/__init__.py +0 -0
  509. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/api.py +0 -0
  510. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/context.py +0 -0
  511. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/offline_evals/__init__.py +0 -0
  512. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/offline_evals/api.py +0 -0
  513. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/offline_evals/span.py +0 -0
  514. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/offline_evals/thread.py +0 -0
  515. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/offline_evals/trace.py +0 -0
  516. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/otel/__init__.py +0 -0
  517. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/otel/exporter.py +0 -0
  518. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/otel/test_exporter.py +0 -0
  519. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/otel/utils.py +0 -0
  520. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/patchers.py +0 -0
  521. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/perf_epoch_bridge.py +0 -0
  522. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/trace_context.py +0 -0
  523. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/trace_test_manager.py +0 -0
  524. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/tracing.py +0 -0
  525. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/types.py +0 -0
  526. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/tracing/utils.py +0 -0
  527. {deepeval-3.8.3 → deepeval-3.8.4}/deepeval/utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepeval
3
- Version: 3.8.3
3
+ Version: 3.8.4
4
4
  Summary: The LLM Evaluation Framework
5
5
  Home-page: https://github.com/confident-ai/deepeval
6
6
  License: Apache-2.0
@@ -0,0 +1 @@
1
+ __version__: str = "3.8.4"
@@ -316,6 +316,12 @@ class Settings(BaseSettings):
316
316
  description="If set, export a timestamped JSON of the latest test run into this folder (created if missing).",
317
317
  )
318
318
 
319
+ # When set, overrides the default DeepEval cache directory
320
+ DEEPEVAL_CACHE_FOLDER: Optional[Path] = Field(
321
+ ".deepeval",
322
+ description="Path to the directory used by DeepEval to store cache files. If set, this overrides the default cache location. The directory will be created if it does not exist.",
323
+ )
324
+
319
325
  # Display / Truncation
320
326
  DEEPEVAL_MAXLEN_TINY: Optional[int] = Field(
321
327
  40,
@@ -1015,7 +1021,12 @@ class Settings(BaseSettings):
1015
1021
  def _coerce_yes_no(cls, v):
1016
1022
  return None if v is None else parse_bool(v, default=False)
1017
1023
 
1018
- @field_validator("DEEPEVAL_RESULTS_FOLDER", "ENV_DIR_PATH", mode="before")
1024
+ @field_validator(
1025
+ "DEEPEVAL_RESULTS_FOLDER",
1026
+ "ENV_DIR_PATH",
1027
+ "DEEPEVAL_CACHE_FOLDER",
1028
+ mode="before",
1029
+ )
1019
1030
  @classmethod
1020
1031
  def _coerce_path(cls, v):
1021
1032
  if v is None:
@@ -1,8 +1,9 @@
1
1
  from enum import Enum
2
2
  from typing import Union
3
+ import os
3
4
 
4
5
  KEY_FILE: str = ".deepeval"
5
- HIDDEN_DIR: str = ".deepeval"
6
+ HIDDEN_DIR: str = os.getenv("DEEPEVAL_CACHE_FOLDER", ".deepeval")
6
7
  PYTEST_RUN_TEST_NAME: str = "CONFIDENT_AI_RUN_TEST_NAME"
7
8
  LOGIN_PROMPT = "\n✨👀 Looking for a place for your LLM test data to live 🏡❤️ ? Use [rgb(106,0,255)]Confident AI[/rgb(106,0,255)] to get & share testing reports, experiment with models/prompts, and catch regressions for your LLM system. Just run [cyan]'deepeval login'[/cyan] in the CLI."
8
9
 
@@ -7,6 +7,7 @@ from .api import (
7
7
  ReasoningEffort,
8
8
  OutputType,
9
9
  PromptInterpolationType,
10
+ Tool,
10
11
  )
11
12
 
12
13
  __all__ = [
@@ -18,4 +19,5 @@ __all__ = [
18
19
  "ReasoningEffort",
19
20
  "OutputType",
20
21
  "PromptInterpolationType",
22
+ "Tool",
21
23
  ]
@@ -1,6 +1,14 @@
1
- from pydantic import BaseModel, Field, AliasChoices, ConfigDict
1
+ from pydantic import (
2
+ BaseModel,
3
+ Field,
4
+ AliasChoices,
5
+ ConfigDict,
6
+ model_validator,
7
+ model_serializer,
8
+ )
2
9
  from enum import Enum
3
- from typing import List, Optional
10
+ import uuid
11
+ from typing import List, Optional, Dict, Any, Union, Type
4
12
  from pydantic import TypeAdapter
5
13
 
6
14
  from deepeval.utils import make_model_config
@@ -33,6 +41,12 @@ class ModelProvider(Enum):
33
41
  OPENROUTER = "OPENROUTER"
34
42
 
35
43
 
44
+ class ToolMode(str, Enum):
45
+ ALLOW_ADDITIONAL = "ALLOW_ADDITIONAL"
46
+ NO_ADDITIONAL = "NO_ADDITIONAL"
47
+ STRICT = "STRICT"
48
+
49
+
36
50
  class ModelSettings(BaseModel):
37
51
  provider: Optional[ModelProvider] = None
38
52
  name: Optional[str] = None
@@ -100,6 +114,7 @@ class OutputSchemaField(BaseModel):
100
114
  id: str
101
115
  type: SchemaDataType
102
116
  name: str
117
+ description: Optional[str] = None
103
118
  required: Optional[bool] = False
104
119
  parent_id: Optional[str] = Field(
105
120
  default=None,
@@ -109,8 +124,36 @@ class OutputSchemaField(BaseModel):
109
124
 
110
125
 
111
126
  class OutputSchema(BaseModel):
127
+ id: Optional[str] = None
112
128
  fields: Optional[List[OutputSchemaField]] = None
129
+ name: Optional[str] = None
130
+
131
+
132
+ class Tool(BaseModel):
133
+ id: str = Field(default_factory=lambda: str(uuid.uuid4()))
113
134
  name: str
135
+ description: Optional[str] = None
136
+ mode: ToolMode
137
+ structured_schema: Optional[Union[Type[BaseModel], OutputSchema]] = Field(
138
+ serialization_alias="structuredSchema",
139
+ validation_alias=AliasChoices("structured_schema", "structuredSchema"),
140
+ )
141
+
142
+ @model_validator(mode="after")
143
+ def update_schema(self):
144
+ if not isinstance(self.structured_schema, OutputSchema):
145
+ from deepeval.prompt.utils import construct_output_schema
146
+
147
+ self.structured_schema = construct_output_schema(
148
+ self.structured_schema
149
+ )
150
+ return self
151
+
152
+ @property
153
+ def input_schema(self) -> Dict[str, Any]:
154
+ from deepeval.prompt.utils import output_schema_to_json_schema
155
+
156
+ return output_schema_to_json_schema(self.structured_schema)
114
157
 
115
158
 
116
159
  ###################################
@@ -186,6 +229,7 @@ class PromptHttpResponse(BaseModel):
186
229
  serialization_alias="outputSchema",
187
230
  validation_alias=AliasChoices("output_schema", "outputSchema"),
188
231
  )
232
+ tools: Optional[List[Tool]] = None
189
233
 
190
234
 
191
235
  class PromptPushRequest(BaseModel):
@@ -196,6 +240,7 @@ class PromptPushRequest(BaseModel):
196
240
  alias: str
197
241
  text: Optional[str] = None
198
242
  messages: Optional[List[PromptMessage]] = None
243
+ tools: Optional[List[Tool]] = None
199
244
  interpolation_type: PromptInterpolationType = Field(
200
245
  serialization_alias="interpolationType"
201
246
  )
@@ -215,6 +260,7 @@ class PromptUpdateRequest(BaseModel):
215
260
 
216
261
  text: Optional[str] = None
217
262
  messages: Optional[List[PromptMessage]] = None
263
+ tools: Optional[List[Tool]] = None
218
264
  interpolation_type: PromptInterpolationType = Field(
219
265
  serialization_alias="interpolationType"
220
266
  )
@@ -25,6 +25,7 @@ from deepeval.prompt.api import (
25
25
  ModelSettings,
26
26
  OutputSchema,
27
27
  OutputType,
28
+ Tool,
28
29
  )
29
30
  from deepeval.prompt.utils import (
30
31
  interpolate_text,
@@ -101,6 +102,7 @@ class CachedPrompt(BaseModel):
101
102
  model_settings: Optional[ModelSettings]
102
103
  output_type: Optional[OutputType]
103
104
  output_schema: Optional[OutputSchema]
105
+ tools: Optional[List[Tool]] = None
104
106
 
105
107
 
106
108
  class Prompt:
@@ -131,6 +133,7 @@ class Prompt:
131
133
  interpolation_type or PromptInterpolationType.FSTRING
132
134
  )
133
135
  self.confident_api_key = confident_api_key
136
+ self.tools: Optional[List[Tool]] = None
134
137
 
135
138
  self._version = None
136
139
  self._prompt_version_id: Optional[str] = None
@@ -308,6 +311,7 @@ class Prompt:
308
311
  model_settings: Optional[ModelSettings] = None,
309
312
  output_type: Optional[OutputType] = None,
310
313
  output_schema: Optional[OutputSchema] = None,
314
+ tools: Optional[List[Tool]] = None,
311
315
  ):
312
316
  if portalocker is None or not self.alias:
313
317
  return
@@ -354,6 +358,7 @@ class Prompt:
354
358
  "model_settings": model_settings,
355
359
  "output_type": output_type,
356
360
  "output_schema": output_schema,
361
+ "tools": tools,
357
362
  }
358
363
 
359
364
  if cache_key == VERSION_CACHE_KEY:
@@ -415,6 +420,7 @@ class Prompt:
415
420
  self.output_schema = construct_base_model(
416
421
  cached_prompt.output_schema
417
422
  )
423
+ self.tools = cached_prompt.tools
418
424
 
419
425
  end_time = time.perf_counter()
420
426
  time_taken = format(end_time - start_time, ".2f")
@@ -494,6 +500,7 @@ class Prompt:
494
500
  self.output_schema = construct_base_model(
495
501
  cached_prompt.output_schema
496
502
  )
503
+ self.tools = cached_prompt.tools
497
504
  return
498
505
  except Exception:
499
506
  pass
@@ -547,6 +554,7 @@ class Prompt:
547
554
  model_settings=data.get("modelSettings", None),
548
555
  output_type=data.get("outputType", None),
549
556
  output_schema=data.get("outputSchema", None),
557
+ tools=data.get("tools", None),
550
558
  )
551
559
  except Exception:
552
560
  if fallback_to_cache:
@@ -573,6 +581,7 @@ class Prompt:
573
581
  self.output_schema = construct_base_model(
574
582
  response.output_schema
575
583
  )
584
+ self.tools = response.tools
576
585
 
577
586
  end_time = time.perf_counter()
578
587
  time_taken = format(end_time - start_time, ".2f")
@@ -594,6 +603,7 @@ class Prompt:
594
603
  model_settings=response.model_settings,
595
604
  output_type=response.output_type,
596
605
  output_schema=response.output_schema,
606
+ tools=response.tools,
597
607
  )
598
608
 
599
609
  def push(
@@ -606,6 +616,7 @@ class Prompt:
606
616
  model_settings: Optional[ModelSettings] = None,
607
617
  output_type: Optional[OutputType] = None,
608
618
  output_schema: Optional[Type[BaseModel]] = None,
619
+ tools: Optional[List[Tool]] = None,
609
620
  _verbose: Optional[bool] = True,
610
621
  ):
611
622
  if self.alias is None:
@@ -628,6 +639,7 @@ class Prompt:
628
639
  output_type=output_type or self.output_type,
629
640
  output_schema=construct_output_schema(output_schema)
630
641
  or construct_output_schema(self.output_schema),
642
+ tools=tools or self.tools,
631
643
  )
632
644
  try:
633
645
  body = body.model_dump(
@@ -655,6 +667,7 @@ class Prompt:
655
667
  self.model_settings = model_settings or self.model_settings
656
668
  self.output_type = output_type or self.output_type
657
669
  self.output_schema = output_schema or self.output_schema
670
+ self.tools = tools or self.tools
658
671
  self.type = PromptType.TEXT if text_template else PromptType.LIST
659
672
  if _verbose:
660
673
  console = Console()
@@ -674,6 +687,7 @@ class Prompt:
674
687
  model_settings: Optional[ModelSettings] = None,
675
688
  output_type: Optional[OutputType] = None,
676
689
  output_schema: Optional[Type[BaseModel]] = None,
690
+ tools: Optional[List[Tool]] = None,
677
691
  ):
678
692
  if self.alias is None:
679
693
  raise ValueError(
@@ -687,6 +701,7 @@ class Prompt:
687
701
  model_settings=model_settings,
688
702
  output_type=output_type,
689
703
  output_schema=construct_output_schema(output_schema),
704
+ tools=tools,
690
705
  )
691
706
  try:
692
707
  body = body.model_dump(
@@ -712,6 +727,7 @@ class Prompt:
712
727
  self.model_settings = model_settings
713
728
  self.output_type = output_type
714
729
  self.output_schema = output_schema
730
+ self.tools = tools
715
731
  self.type = PromptType.TEXT if text else PromptType.LIST
716
732
  console = Console()
717
733
  console.print("✅ Prompt successfully updated on Confident AI!")
@@ -796,6 +812,10 @@ class Prompt:
796
812
  messages=data.get("messages", None),
797
813
  type=data["type"],
798
814
  interpolation_type=data["interpolationType"],
815
+ model_settings=data.get("modelSettings", None),
816
+ output_type=data.get("outputType", None),
817
+ output_schema=data.get("outputSchema", None),
818
+ tools=data.get("tools", None),
799
819
  )
800
820
 
801
821
  # Update the cache with fresh data from server
@@ -808,6 +828,10 @@ class Prompt:
808
828
  prompt_version_id=response.id,
809
829
  type=response.type,
810
830
  interpolation_type=response.interpolation_type,
831
+ model_settings=response.model_settings,
832
+ output_type=response.output_type,
833
+ output_schema=response.output_schema,
834
+ tools=response.tools,
811
835
  )
812
836
 
813
837
  # Update in-memory properties with fresh data (thread-safe)
@@ -819,6 +843,12 @@ class Prompt:
819
843
  self._prompt_version_id = response.id
820
844
  self.type = response.type
821
845
  self.interpolation_type = response.interpolation_type
846
+ self.model_settings = response.model_settings
847
+ self.output_type = response.output_type
848
+ self.output_schema = construct_base_model(
849
+ response.output_schema
850
+ )
851
+ self.tools = response.tools
822
852
 
823
853
  except Exception:
824
854
  pass
@@ -130,7 +130,7 @@ def construct_base_model(
130
130
  if not schema:
131
131
  return None
132
132
  if not schema.fields:
133
- return create_model(schema.name)
133
+ return create_model(schema.name or "EmptySchema")
134
134
 
135
135
  parent_id_map: Dict[Optional[str], List[OutputSchemaField]] = {}
136
136
  for field in schema.fields:
@@ -153,7 +153,7 @@ def construct_base_model(
153
153
  default = ... if field.required else None
154
154
  root_fields[field.name] = (python_type, default)
155
155
 
156
- return create_model(schema.name, **root_fields)
156
+ return create_model(schema.name or "Schema", **root_fields)
157
157
 
158
158
 
159
159
  ###################################
@@ -219,3 +219,73 @@ def construct_output_schema(
219
219
  return None
220
220
  all_fields = _process_model(base_model_class)
221
221
  return OutputSchema(fields=all_fields, name=base_model_class.__name__)
222
+
223
+
224
+ def output_schema_to_json_schema(
225
+ schema: Optional[OutputSchema] = None,
226
+ ) -> Dict[str, Any]:
227
+ if not schema or not schema.fields:
228
+ return {
229
+ "type": "object",
230
+ "properties": {},
231
+ "additionalProperties": False,
232
+ }
233
+
234
+ # Build parent-child mapping
235
+ children_map: Dict[Optional[str], List[OutputSchemaField]] = {}
236
+ for field in schema.fields:
237
+ parent_id = field.parent_id
238
+ children_map.setdefault(parent_id, []).append(field)
239
+
240
+ # Map SchemaDataType to JSON Schema types
241
+ def map_type(dtype: SchemaDataType) -> str:
242
+ return {
243
+ SchemaDataType.STRING: "string",
244
+ SchemaDataType.INTEGER: "integer",
245
+ SchemaDataType.FLOAT: "number",
246
+ SchemaDataType.BOOLEAN: "boolean",
247
+ SchemaDataType.OBJECT: "object",
248
+ SchemaDataType.NULL: "null",
249
+ }.get(dtype, "string")
250
+
251
+ def build_node(field_list: List[OutputSchemaField]) -> Dict[str, Any]:
252
+ properties = {}
253
+ required_fields = []
254
+
255
+ for field in field_list:
256
+ field_type = (
257
+ field.type.value if hasattr(field.type, "value") else field.type
258
+ )
259
+ field_schema = {"type": map_type(field.type)}
260
+
261
+ # Add description if available
262
+ if field.description:
263
+ field_schema["description"] = field.description
264
+
265
+ # Handle nested objects
266
+ if field_type == SchemaDataType.OBJECT.value:
267
+ children = children_map.get(field.id, [])
268
+ if children:
269
+ nested = build_node(children)
270
+ field_schema.update(nested)
271
+ else:
272
+ field_schema["properties"] = {}
273
+ field_schema["additionalProperties"] = False
274
+
275
+ properties[field.name] = field_schema
276
+ if field.required:
277
+ required_fields.append(field.name)
278
+
279
+ schema_dict = {
280
+ "type": "object",
281
+ "properties": properties,
282
+ "additionalProperties": False,
283
+ }
284
+
285
+ if required_fields:
286
+ schema_dict["required"] = required_fields
287
+
288
+ return schema_dict
289
+
290
+ root_fields = children_map.get(None, [])
291
+ return build_node(root_fields)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "deepeval"
3
- version = "3.8.3"
3
+ version = "3.8.4"
4
4
  description = "The LLM Evaluation Framework"
5
5
  authors = ["Jeffrey Ip <jeffreyip@confident-ai.com>"]
6
6
  license = "Apache-2.0"
@@ -1 +0,0 @@
1
- __version__: str = "3.8.3"
File without changes
File without changes
File without changes