deepeval 3.6.7__py3-none-any.whl → 3.6.9__py3-none-any.whl

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 (90) hide show
  1. deepeval/_version.py +1 -1
  2. deepeval/config/settings.py +104 -36
  3. deepeval/config/utils.py +5 -0
  4. deepeval/dataset/dataset.py +162 -30
  5. deepeval/dataset/utils.py +41 -13
  6. deepeval/errors.py +20 -2
  7. deepeval/evaluate/execute.py +1662 -688
  8. deepeval/evaluate/types.py +1 -0
  9. deepeval/evaluate/utils.py +13 -3
  10. deepeval/integrations/crewai/__init__.py +2 -1
  11. deepeval/integrations/crewai/tool.py +71 -0
  12. deepeval/integrations/llama_index/__init__.py +0 -4
  13. deepeval/integrations/llama_index/handler.py +20 -21
  14. deepeval/integrations/pydantic_ai/instrumentator.py +125 -76
  15. deepeval/metrics/__init__.py +13 -0
  16. deepeval/metrics/base_metric.py +1 -0
  17. deepeval/metrics/contextual_precision/contextual_precision.py +27 -21
  18. deepeval/metrics/conversational_g_eval/__init__.py +3 -0
  19. deepeval/metrics/conversational_g_eval/conversational_g_eval.py +11 -7
  20. deepeval/metrics/dag/schema.py +1 -1
  21. deepeval/metrics/dag/templates.py +2 -2
  22. deepeval/metrics/goal_accuracy/__init__.py +1 -0
  23. deepeval/metrics/goal_accuracy/goal_accuracy.py +349 -0
  24. deepeval/metrics/goal_accuracy/schema.py +17 -0
  25. deepeval/metrics/goal_accuracy/template.py +235 -0
  26. deepeval/metrics/hallucination/hallucination.py +8 -8
  27. deepeval/metrics/indicator.py +21 -1
  28. deepeval/metrics/mcp/mcp_task_completion.py +7 -2
  29. deepeval/metrics/mcp/multi_turn_mcp_use_metric.py +16 -6
  30. deepeval/metrics/mcp_use_metric/mcp_use_metric.py +2 -1
  31. deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/multimodal_contextual_precision.py +32 -24
  32. deepeval/metrics/plan_adherence/__init__.py +1 -0
  33. deepeval/metrics/plan_adherence/plan_adherence.py +292 -0
  34. deepeval/metrics/plan_adherence/schema.py +11 -0
  35. deepeval/metrics/plan_adherence/template.py +170 -0
  36. deepeval/metrics/plan_quality/__init__.py +1 -0
  37. deepeval/metrics/plan_quality/plan_quality.py +292 -0
  38. deepeval/metrics/plan_quality/schema.py +11 -0
  39. deepeval/metrics/plan_quality/template.py +101 -0
  40. deepeval/metrics/step_efficiency/__init__.py +1 -0
  41. deepeval/metrics/step_efficiency/schema.py +11 -0
  42. deepeval/metrics/step_efficiency/step_efficiency.py +234 -0
  43. deepeval/metrics/step_efficiency/template.py +256 -0
  44. deepeval/metrics/task_completion/task_completion.py +1 -0
  45. deepeval/metrics/tool_correctness/schema.py +6 -0
  46. deepeval/metrics/tool_correctness/template.py +88 -0
  47. deepeval/metrics/tool_correctness/tool_correctness.py +226 -22
  48. deepeval/metrics/tool_use/__init__.py +1 -0
  49. deepeval/metrics/tool_use/schema.py +19 -0
  50. deepeval/metrics/tool_use/template.py +220 -0
  51. deepeval/metrics/tool_use/tool_use.py +458 -0
  52. deepeval/metrics/topic_adherence/__init__.py +1 -0
  53. deepeval/metrics/topic_adherence/schema.py +16 -0
  54. deepeval/metrics/topic_adherence/template.py +162 -0
  55. deepeval/metrics/topic_adherence/topic_adherence.py +355 -0
  56. deepeval/models/embedding_models/azure_embedding_model.py +37 -36
  57. deepeval/models/embedding_models/local_embedding_model.py +30 -32
  58. deepeval/models/embedding_models/ollama_embedding_model.py +18 -20
  59. deepeval/models/embedding_models/openai_embedding_model.py +22 -31
  60. deepeval/models/llms/amazon_bedrock_model.py +20 -17
  61. deepeval/models/llms/openai_model.py +10 -1
  62. deepeval/models/retry_policy.py +103 -20
  63. deepeval/openai/extractors.py +61 -16
  64. deepeval/openai/patch.py +8 -12
  65. deepeval/openai/types.py +1 -1
  66. deepeval/openai/utils.py +108 -1
  67. deepeval/prompt/prompt.py +1 -0
  68. deepeval/prompt/utils.py +43 -14
  69. deepeval/simulator/conversation_simulator.py +25 -18
  70. deepeval/synthesizer/chunking/context_generator.py +9 -1
  71. deepeval/synthesizer/synthesizer.py +11 -10
  72. deepeval/test_case/llm_test_case.py +6 -2
  73. deepeval/test_run/test_run.py +190 -207
  74. deepeval/tracing/__init__.py +2 -1
  75. deepeval/tracing/otel/exporter.py +3 -4
  76. deepeval/tracing/otel/utils.py +23 -4
  77. deepeval/tracing/trace_context.py +53 -38
  78. deepeval/tracing/tracing.py +23 -0
  79. deepeval/tracing/types.py +16 -14
  80. deepeval/utils.py +21 -0
  81. {deepeval-3.6.7.dist-info → deepeval-3.6.9.dist-info}/METADATA +1 -1
  82. {deepeval-3.6.7.dist-info → deepeval-3.6.9.dist-info}/RECORD +85 -63
  83. deepeval/integrations/llama_index/agent/patched.py +0 -68
  84. deepeval/tracing/message_types/__init__.py +0 -10
  85. deepeval/tracing/message_types/base.py +0 -6
  86. deepeval/tracing/message_types/messages.py +0 -14
  87. deepeval/tracing/message_types/tools.py +0 -18
  88. {deepeval-3.6.7.dist-info → deepeval-3.6.9.dist-info}/LICENSE.md +0 -0
  89. {deepeval-3.6.7.dist-info → deepeval-3.6.9.dist-info}/WHEEL +0 -0
  90. {deepeval-3.6.7.dist-info → deepeval-3.6.9.dist-info}/entry_points.txt +0 -0
@@ -11,7 +11,7 @@ from deepeval.test_case.llm_test_case import ToolCall
11
11
 
12
12
 
13
13
  @dataclass
14
- class LlmContext:
14
+ class LlmSpanContext:
15
15
  prompt: Optional[Prompt] = None
16
16
  metrics: Optional[List[BaseMetric]] = None
17
17
  metric_collection: Optional[str] = None
@@ -21,63 +21,78 @@ class LlmContext:
21
21
  retrieval_context: Optional[List[str]] = None
22
22
 
23
23
 
24
- current_llm_context: ContextVar[Optional[LlmContext]] = ContextVar(
25
- "current_llm_context", default=LlmContext()
24
+ @dataclass
25
+ class AgentSpanContext:
26
+ metrics: Optional[List[BaseMetric]] = None
27
+ metric_collection: Optional[str] = None
28
+ expected_output: Optional[str] = None
29
+ expected_tools: Optional[List[ToolCall]] = None
30
+ context: Optional[List[str]] = None
31
+ retrieval_context: Optional[List[str]] = None
32
+
33
+
34
+ current_llm_context: ContextVar[Optional[LlmSpanContext]] = ContextVar(
35
+ "current_llm_context", default=LlmSpanContext()
36
+ )
37
+
38
+ current_agent_context: ContextVar[Optional[AgentSpanContext]] = ContextVar(
39
+ "current_agent_context", default=AgentSpanContext()
26
40
  )
27
41
 
28
42
 
29
43
  @contextmanager
30
44
  def trace(
31
- prompt: Optional[Prompt] = None,
32
- llm_metrics: Optional[List[BaseMetric]] = None,
33
- llm_metric_collection: Optional[str] = None,
45
+ llm_span_context: Optional[LlmSpanContext] = None,
46
+ agent_span_context: Optional[AgentSpanContext] = None,
34
47
  name: Optional[str] = None,
35
48
  tags: Optional[List[str]] = None,
36
49
  metadata: Optional[Dict[str, Any]] = None,
37
- user_id: Optional[str] = None,
38
50
  thread_id: Optional[str] = None,
51
+ user_id: Optional[str] = None,
52
+ input: Optional[Any] = None,
53
+ output: Optional[Any] = None,
54
+ retrieval_context: Optional[List[str]] = None,
55
+ context: Optional[List[str]] = None,
39
56
  expected_output: Optional[str] = None,
57
+ tools_called: Optional[List[ToolCall]] = None,
40
58
  expected_tools: Optional[List[ToolCall]] = None,
41
- context: Optional[List[str]] = None,
42
- retrieval_context: Optional[List[str]] = None,
43
- trace_metric_collection: Optional[str] = None,
44
- trace_metrics: Optional[List[BaseMetric]] = None,
59
+ metrics: Optional[List[BaseMetric]] = None,
60
+ metric_collection: Optional[str] = None,
45
61
  ):
46
62
  current_trace = current_trace_context.get()
47
63
 
48
64
  if not current_trace:
49
65
  current_trace = trace_manager.start_new_trace()
50
66
 
51
- if trace_metrics:
52
- current_trace.metrics = trace_metrics
67
+ if metrics:
68
+ current_trace.metrics = metrics
53
69
 
54
- if trace_metric_collection:
55
- current_trace.metric_collection = trace_metric_collection
70
+ if metric_collection:
71
+ current_trace.metric_collection = metric_collection
56
72
 
57
73
  current_trace_context.set(current_trace)
58
74
 
59
- current_llm_context.set(
60
- LlmContext(
61
- prompt=prompt,
62
- metrics=llm_metrics,
63
- metric_collection=llm_metric_collection,
64
- expected_output=expected_output,
65
- expected_tools=expected_tools,
66
- context=context,
67
- retrieval_context=retrieval_context,
68
- )
75
+ update_current_trace(
76
+ name=name,
77
+ tags=tags,
78
+ metadata=metadata,
79
+ thread_id=thread_id,
80
+ user_id=user_id,
81
+ input=input,
82
+ output=output,
83
+ retrieval_context=retrieval_context,
84
+ context=context,
85
+ expected_output=expected_output,
86
+ tools_called=tools_called,
87
+ expected_tools=expected_tools,
69
88
  )
70
89
 
71
- # set the current trace attributes
72
- if name:
73
- update_current_trace(name=name)
74
- if tags:
75
- update_current_trace(tags=tags)
76
- if metadata:
77
- update_current_trace(metadata=metadata)
78
- if user_id:
79
- update_current_trace(user_id=user_id)
80
- if thread_id:
81
- update_current_trace(thread_id=thread_id)
82
-
83
- yield current_trace
90
+ if llm_span_context:
91
+ current_llm_context.set(llm_span_context)
92
+ if agent_span_context:
93
+ current_agent_context.set(agent_span_context)
94
+ try:
95
+ yield current_trace
96
+ finally:
97
+ current_llm_context.set(LlmSpanContext())
98
+ current_agent_context.set(AgentSpanContext())
@@ -1,3 +1,4 @@
1
+ import weakref
1
2
  from typing import (
2
3
  TYPE_CHECKING,
3
4
  Any,
@@ -92,6 +93,9 @@ class TraceManager:
92
93
  self._min_interval = 0.2 # Minimum time between API calls (seconds)
93
94
  self._last_post_time = 0
94
95
  self._in_flight_tasks: Set[asyncio.Task[Any]] = set()
96
+ self.task_bindings: "weakref.WeakKeyDictionary[asyncio.Task, dict]" = (
97
+ weakref.WeakKeyDictionary()
98
+ )
95
99
  self._flush_enabled = bool(settings.CONFIDENT_TRACE_FLUSH)
96
100
  self._daemon = not self._flush_enabled
97
101
 
@@ -852,6 +856,25 @@ class Observer:
852
856
  self._progress = parent_span.progress
853
857
  self._pbar_callback_id = parent_span.pbar_callback_id
854
858
 
859
+ try:
860
+ import asyncio
861
+
862
+ task = asyncio.current_task()
863
+ except Exception:
864
+ task = None
865
+
866
+ if task is not None:
867
+ binding = trace_manager.task_bindings.get(task) or {}
868
+ # record the trace the task is working on
869
+ binding["trace_uuid"] = span_instance.trace_uuid
870
+ # only set root_span_uuid when this span is a root. Don't do this for child or we will override our record.
871
+ if (
872
+ span_instance.parent_uuid is None
873
+ and "root_span_uuid" not in binding
874
+ ):
875
+ binding["root_span_uuid"] = span_instance.uuid
876
+ trace_manager.task_bindings[task] = binding
877
+
855
878
  if self._progress is not None and self._pbar_callback_id is not None:
856
879
  span_instance.progress = self._progress
857
880
  span_instance.pbar_callback_id = self._pbar_callback_id
deepeval/tracing/types.py CHANGED
@@ -1,14 +1,8 @@
1
1
  from enum import Enum
2
2
  from dataclasses import dataclass, field
3
3
  from pydantic import BaseModel, Field
4
- from typing import Any, Dict, List, Optional, Union
4
+ from typing import Any, Dict, List, Optional, Union, Literal
5
5
  from rich.progress import Progress
6
- from deepeval.tracing.message_types import (
7
- ToolSchema,
8
- ToolOutput,
9
- TextMessage,
10
- ToolCallMessage,
11
- )
12
6
 
13
7
  from deepeval.prompt.prompt import Prompt
14
8
  from deepeval.test_case.llm_test_case import ToolCall
@@ -16,6 +10,19 @@ from deepeval.test_case import LLMTestCase
16
10
  from deepeval.metrics import BaseMetric
17
11
 
18
12
 
13
+ class Message(BaseModel):
14
+ role: str
15
+ """To be displayed on the top of the message block."""
16
+
17
+ type: Literal["tool_calls", "tool_output", "thinking", "default"] = (
18
+ "default"
19
+ )
20
+ """Decides how the content is rendered."""
21
+
22
+ content: Any
23
+ """The content of the message."""
24
+
25
+
19
26
  class TraceWorkerStatus(Enum):
20
27
  SUCCESS = "success"
21
28
  FAILURE = "failure"
@@ -50,7 +57,7 @@ class LlmOutput(BaseModel):
50
57
  class BaseSpan(BaseModel):
51
58
  uuid: str
52
59
  status: TraceSpanStatus
53
- children: List["BaseSpan"]
60
+ children: List["BaseSpan"] = Field(default_factory=list)
54
61
  trace_uuid: str = Field(serialization_alias="traceUuid")
55
62
  parent_uuid: Optional[str] = Field(None, serialization_alias="parentUuid")
56
63
  start_time: float = Field(serialization_alias="startTime")
@@ -94,12 +101,7 @@ class AgentSpan(BaseSpan):
94
101
 
95
102
 
96
103
  class LlmSpan(BaseSpan):
97
- input: Optional[
98
- Union[Any, List[Union[TextMessage, ToolCallMessage, ToolOutput]]]
99
- ] = None
100
- output: Optional[Union[Any, List[Union[TextMessage, ToolCallMessage]]]] = (
101
- None
102
- )
104
+
103
105
  model: Optional[str] = None
104
106
  prompt: Optional[Prompt] = None
105
107
  input_token_count: Optional[float] = Field(
deepeval/utils.py CHANGED
@@ -10,6 +10,7 @@ import asyncio
10
10
  import nest_asyncio
11
11
  import uuid
12
12
  import math
13
+ import logging
13
14
 
14
15
  from contextvars import ContextVar
15
16
  from enum import Enum
@@ -747,3 +748,23 @@ my_theme = Theme(
747
748
  }
748
749
  )
749
750
  custom_console = Console(theme=my_theme)
751
+
752
+
753
+ def format_error_text(
754
+ exc: BaseException, *, with_stack: bool | None = None
755
+ ) -> str:
756
+ if with_stack is None:
757
+ with_stack = logging.getLogger("deepeval").isEnabledFor(logging.DEBUG)
758
+
759
+ text = f"{type(exc).__name__}: {exc}"
760
+
761
+ if with_stack:
762
+ import traceback
763
+
764
+ text += "\n" + "".join(
765
+ traceback.format_exception(type(exc), exc, exc.__traceback__)
766
+ )
767
+ elif get_settings().DEEPEVAL_VERBOSE_MODE:
768
+ text += " (Run with LOG_LEVEL=DEBUG for stack trace.)"
769
+
770
+ return text
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepeval
3
- Version: 3.6.7
3
+ Version: 3.6.9
4
4
  Summary: The LLM Evaluation Framework
5
5
  Home-page: https://github.com/confident-ai/deepeval
6
6
  License: Apache-2.0
@@ -1,5 +1,5 @@
1
1
  deepeval/__init__.py,sha256=IqShG98ALpA1gm_qL2Jq56AJoafAHpcUTSvpgH4HpZM,3062
2
- deepeval/_version.py,sha256=YI_RpVZwcnI0mL1Q52yzeFfvPwLM6jKjG7i478wPJzM,27
2
+ deepeval/_version.py,sha256=WydMbWwXQz50U1Fi-HlskQWK159gVx6D6BKpIHCo2A8,27
3
3
  deepeval/annotation/__init__.py,sha256=ZFhUVNNuH_YgQSZJ-m5E9iUb9TkAkEV33a6ouMDZ8EI,111
4
4
  deepeval/annotation/annotation.py,sha256=3j3-syeJepAcEj3u3e4T_BeRDzNr7yXGDIoNQGMKpwQ,2298
5
5
  deepeval/annotation/api.py,sha256=EYN33ACVzVxsFleRYm60KB4Exvff3rPJKt1VBuuX970,2147
@@ -142,31 +142,32 @@ deepeval/confident/api.py,sha256=V3TaJzbc7SEf9ZZCKyiSbK7rI6hzv2D7ojD54aVrvq4,856
142
142
  deepeval/confident/types.py,sha256=-slFhDof_1maMgpLxqDRZv6kz6ZVY2hP_0uj_aveJKU,533
143
143
  deepeval/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
144
  deepeval/config/logging.py,sha256=ivqmhOSB-oHOOU3MvnhImrZwkkxzxKJgoKxesnWfHjg,1314
145
- deepeval/config/settings.py,sha256=emMXA-0dIwoLLi-iYHoFYpkseVkZD28Jq4eINuvsU18,28122
145
+ deepeval/config/settings.py,sha256=FT9BtRQGMYrvI5-gV3a5HaNSZi0vEWqp2xi_gl56JQU,30920
146
146
  deepeval/config/settings_manager.py,sha256=enahSZN8krRu7-L94OBCt99fwUIqQtMRL97PlzsuKEY,4021
147
- deepeval/config/utils.py,sha256=gSOVv18Tx1R72GucbdQesbZLFL-Y9EzbS4p7qd2w_xE,3799
147
+ deepeval/config/utils.py,sha256=bWeXj3fhGnLHIr_GuYaTp30x_PUOSAWJeS3lbZ4i3R8,3972
148
148
  deepeval/constants.py,sha256=J5rNXGsMKTFYJ_9Wi49qchZXuUityZjnvuy3I3TO5zk,1667
149
149
  deepeval/contextvars.py,sha256=oqXtuYiKd4Zvc1rNoR1gcRBxzZYCGTMVn7XostwvkRI,524
150
150
  deepeval/dataset/__init__.py,sha256=N2c-rkuxWYiiJSOZArw0H02Cwo7cnfzFuNYJlvsIBEg,249
151
151
  deepeval/dataset/api.py,sha256=ZxkEqAF4nZH_Ys_1f5r9N2LFI_vBcAJxt8eJm7Mplpw,831
152
- deepeval/dataset/dataset.py,sha256=QX6jy3R2GIICdq3tGbPWnOiP_v22iugXskoSmlxXXyk,50894
152
+ deepeval/dataset/dataset.py,sha256=Nx0Nr12_AGjOOOmmAMaC6YIX62HgK8T86FtcL9IrsF4,57798
153
153
  deepeval/dataset/golden.py,sha256=T-rTk4Hw1tANx_Iimv977F6Y4QK3s5OIB4PecU5FJDM,2338
154
154
  deepeval/dataset/test_run_tracer.py,sha256=5CdpDvhzkEEBRyqWi6egocaxiN6IRS3XfbACxEQZQeM,2544
155
155
  deepeval/dataset/types.py,sha256=CWeOIBPK2WdmRUqjFa9gfN-w2da0r8Ilzl3ToDpJQoQ,558
156
- deepeval/dataset/utils.py,sha256=fbBtbalP3qoCF38DGZASVsz8eIVuYojt92ujDGXaIwM,6626
157
- deepeval/errors.py,sha256=_K5wywEw2gp0DDECyeY6UrSI9GgOtCBbfPxt5maIzSY,113
156
+ deepeval/dataset/utils.py,sha256=MRiqwt-3E5WNCHtP2kY7P1PeRtFMRpGoy3r75tJ2QFg,7910
157
+ deepeval/errors.py,sha256=FfhtULNIQqHpKVqCr-xlvTtLxkNj40qVU89sXYKuDrA,754
158
158
  deepeval/evaluate/__init__.py,sha256=315IaMiYEz7oJhZ4kPTBfeCNd1xF-wWVU6KOQnrKQpE,291
159
159
  deepeval/evaluate/api.py,sha256=rkblH0ZFAAdyuF0Ymh7JE1pIJPR9yFuPrn9SQaCEQp4,435
160
160
  deepeval/evaluate/compare.py,sha256=tdSJY4E7YJ_zO3dzvpwngZHLiUI2YQcTWJOLI83htsQ,9855
161
161
  deepeval/evaluate/configs.py,sha256=QfWjaWNxLsgEe8-5j4PIs5WcSyEckiWt0qdpXSpl57M,928
162
162
  deepeval/evaluate/evaluate.py,sha256=CLc-5rlHcBkJcakYXf9twaF6G8chp95gCBe8V4B-cVo,10684
163
- deepeval/evaluate/execute.py,sha256=a5H_q6KimTvGlHyaSx0QjlPm0VKd9tKAlljrlfVWSMI,90890
164
- deepeval/evaluate/types.py,sha256=zsL_lNbFMG20czzRQeWNDbLSzL8Uy7IIgvILe-X0kN0,918
165
- deepeval/evaluate/utils.py,sha256=ZbPdPC_RK0bKSa-VCfJrZXRlvkqtSIiR2zvxKXqS_Yk,20334
163
+ deepeval/evaluate/execute.py,sha256=cXX4W4jX_Uly73WBLEduLv6Dqs32AWHGsgyp9tZmV1Q,134219
164
+ deepeval/evaluate/types.py,sha256=6w-0v8Rh10-qceP4iWe0yMTlee4J3immWAuqDS8LF2o,939
165
+ deepeval/evaluate/utils.py,sha256=RRU6TOeRBq8jTfR1rgikybsMu4t8UZiDj2yqNQLhp8w,20631
166
166
  deepeval/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
- deepeval/integrations/crewai/__init__.py,sha256=g7m8mUJWCkMvkgn7ts9tyapLjvb7e1a1KLsPmy3gHys,196
167
+ deepeval/integrations/crewai/__init__.py,sha256=Uu7-MNV6uXnDoXlZJzt69Y73thJXlMM4xfQdv3mrlHw,227
168
168
  deepeval/integrations/crewai/handler.py,sha256=jizbwsMayqv1FNXo7BrycFNWewzYJt9Lg2WiusgDpRM,6478
169
169
  deepeval/integrations/crewai/subs.py,sha256=UP6aY8Nrl_lHDwxG84aRMNjxzP-X2QWTtOu9DgXMabM,1477
170
+ deepeval/integrations/crewai/tool.py,sha256=6Uw3XuJO0STDq3YAL6bp_xh5ZJcza0L4kkuotFYj79s,2558
170
171
  deepeval/integrations/crewai/wrapper.py,sha256=r4szLNUz1O7U9eMps7czMbHyIEEQ4lfPdBb417gYPfc,3726
171
172
  deepeval/integrations/hugging_face/__init__.py,sha256=MuHIf9im9Jypq4VkfLzhklxIrd7vSTGlT74iUNSPgvg,93
172
173
  deepeval/integrations/hugging_face/callback.py,sha256=15QQEzR34Cpdp5kUp5oVA6dEsShtiMNZ03akJWAh7lo,7911
@@ -177,17 +178,16 @@ deepeval/integrations/langchain/__init__.py,sha256=G1Qey5WkKou2-PA34KwWgmayQ_Tbv
177
178
  deepeval/integrations/langchain/callback.py,sha256=CZuhUqxy5pZDDoW9VKge87HI6k7aA9sbdKOWT912sAk,11032
178
179
  deepeval/integrations/langchain/patch.py,sha256=fCHfZXU9xX3IJ6SG8GEYzn3qrifyUkT0i_uUABTsmcs,1255
179
180
  deepeval/integrations/langchain/utils.py,sha256=6kuVsuepjPxj1sdlq1QgBeGhMByyXuNmb_FFflLVMhc,10070
180
- deepeval/integrations/llama_index/__init__.py,sha256=zBwUFQXDp6QFtp1cfANy8ucV08rjc93nyxM9o9hWjT0,216
181
- deepeval/integrations/llama_index/agent/patched.py,sha256=4JbH0WQmt4lct7xxIH0phj8_Y-V35dgVv7DEDXK0jZI,2149
182
- deepeval/integrations/llama_index/handler.py,sha256=eqI1n8E4MsvfKoFs5Zrm9IdCR7g9eBgNedISs7UkU_I,8947
181
+ deepeval/integrations/llama_index/__init__.py,sha256=Ujs9ZBJFkuCWUDBJOF88UbM1Y-S6QFQhxSo0oQnEWNw,90
182
+ deepeval/integrations/llama_index/handler.py,sha256=oVqX0m5ESZcuR8h7Fq8P7d1BlPx4ZzR-Pr-VYeVXqmc,8813
183
183
  deepeval/integrations/llama_index/utils.py,sha256=mxW71-3PjvBvJpLIU0kNWuTzCidy5l_-roLt8ZyWYA0,2599
184
184
  deepeval/integrations/pydantic_ai/__init__.py,sha256=UIkXn_g6h9LTQXG1PaWu1eCFkCssIwG48WSvN46UWgU,202
185
185
  deepeval/integrations/pydantic_ai/agent.py,sha256=4wRV25O1tC-txH2j3TNJWry6gDNBqqThj7zgFKBxJpw,606
186
- deepeval/integrations/pydantic_ai/instrumentator.py,sha256=RALOL7sz-DWgUe_fd8jWqjGzKnqgVvkoMToLfuk0u10,8493
186
+ deepeval/integrations/pydantic_ai/instrumentator.py,sha256=BJJkavaQkGelIFLAGeZFnvT1DFi5DGeos6H9AkzIl3I,10886
187
187
  deepeval/integrations/pydantic_ai/otel.py,sha256=0OuIpmaMtEt1dFWFZtYAiZ9hVCWweEWr1TRHYcDb4I8,1918
188
188
  deepeval/integrations/pydantic_ai/test_instrumentator.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
189
189
  deepeval/key_handler.py,sha256=damdQEBLGy4IVk5DR5-E3blIZdLbcMtyeGAFn_4_SG4,6505
190
- deepeval/metrics/__init__.py,sha256=nvO0Wv2JROjK1I9MDNIFUJlrRAZI2C0xbGYSBZK5q4g,4013
190
+ deepeval/metrics/__init__.py,sha256=w6QnIHyvhwEAKnFxcFbWqv0OMkEbeCzxwqsHmFOA35c,4547
191
191
  deepeval/metrics/answer_relevancy/__init__.py,sha256=WbZUpoSg2GQoqJ4VIRirVVQ1JDx5xwT-RskwqNKfWGM,46
192
192
  deepeval/metrics/answer_relevancy/answer_relevancy.py,sha256=bkh7_1YoV3BsGzERujzWg4UDDYkWpI1K1z_7mltTve8,11500
193
193
  deepeval/metrics/answer_relevancy/schema.py,sha256=N8wIBh4qwk4-BZOEyPJM-MB2_0dbkqXHv0aCfsIkROo,405
@@ -202,13 +202,13 @@ deepeval/metrics/argument_correctness/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCe
202
202
  deepeval/metrics/argument_correctness/argument_correctness.py,sha256=Z4XVPg9QklpyIpr_1QreoZRZe5ZR94AvBmkGVeyQkRw,10411
203
203
  deepeval/metrics/argument_correctness/schema.py,sha256=mN__hspSfrKikG9DUycivrP3fdC8EPPsSdh0Ev52kPQ,360
204
204
  deepeval/metrics/argument_correctness/template.py,sha256=NpuEFTsSFWh8UDJ4VhMoAA8tjC6aRWxFWT9G1iTwpmA,5401
205
- deepeval/metrics/base_metric.py,sha256=tRlEGLkXcf34paZagYR6kMHA9MBK0HPNi_lGkxJ0B4E,4670
205
+ deepeval/metrics/base_metric.py,sha256=p2GwJ20aigf7CpKTCTKgt73dgVj6zHVhtbLMql8ET8Y,4703
206
206
  deepeval/metrics/bias/__init__.py,sha256=10suWOJYISoIcz2fB-nSkP1qb0WMGVPjNakKO-CEr8w,35
207
207
  deepeval/metrics/bias/bias.py,sha256=Y6arSms28mPzxKd9V7_ZgTWTBWwq3XJMTmab9KV233s,10924
208
208
  deepeval/metrics/bias/schema.py,sha256=bjYFZAbIjxFAzc3-JOJ2i4H-EAF-EWhi2CL2CIzP3qw,446
209
209
  deepeval/metrics/bias/template.py,sha256=b18-kbFpAenZzcDbG4Nd0gIhcUG6GrYHkzcFIS6dpow,4217
210
210
  deepeval/metrics/contextual_precision/__init__.py,sha256=JI8VdPpwU1I6ifJeQGwDf2p85augwwYj5km3WJlWy8Y,50
211
- deepeval/metrics/contextual_precision/contextual_precision.py,sha256=5207M0Y9FueIO5ALhbM02xjQmTAqrGBIL5a_NsAzWm0,10937
211
+ deepeval/metrics/contextual_precision/contextual_precision.py,sha256=5dTYLlKj-KOQj5vLlIGlGkBgGJgI_LCnvxQO3mR-H-Q,11228
212
212
  deepeval/metrics/contextual_precision/schema.py,sha256=NVJjkfdEc72u9M0lx0EyHe8-J1XUkCPFwU3v3xdZK5A,278
213
213
  deepeval/metrics/contextual_precision/template.py,sha256=zDKbTLQGFutjL73qJD--TxJ3_JGmOgESDTfgiYk5K6U,3890
214
214
  deepeval/metrics/contextual_recall/__init__.py,sha256=WMaP3SE8g0oh6mdnfvLBmjjgYV0WkBMg0YRuYNrTxcI,47
@@ -227,16 +227,16 @@ deepeval/metrics/conversational_dag/__init__.py,sha256=QXIdS-GvaJgOrl9kesHMMx1rb
227
227
  deepeval/metrics/conversational_dag/conversational_dag.py,sha256=9QQHp__U9wFJMLy7yeqJXU4-Hi4Xk2nXDnChruQOLMY,5142
228
228
  deepeval/metrics/conversational_dag/nodes.py,sha256=zn4mOb6bvUOntpWyY1Ab8Y3X44MPqojUTw3iRrjWBpE,33983
229
229
  deepeval/metrics/conversational_dag/templates.py,sha256=-WvTE8Q-Aw0f91kxdgaPZWAh2qv1-KF6v4PbGR718rk,3801
230
- deepeval/metrics/conversational_g_eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
231
- deepeval/metrics/conversational_g_eval/conversational_g_eval.py,sha256=CenTNgby1mwasWo6qJO9jqFXgtKFvzo2ldM8yd3bm0M,17553
230
+ deepeval/metrics/conversational_g_eval/__init__.py,sha256=0whQUYv_qZx4nkz0V6TTjgg8gJVCmW8323WcXpj2EzI,93
231
+ deepeval/metrics/conversational_g_eval/conversational_g_eval.py,sha256=gLX1xcJgiKhe67lU5C-KvgvPyrRcuUKmLiZqfIrZdqM,17712
232
232
  deepeval/metrics/conversational_g_eval/schema.py,sha256=H_9-iA1BXJwbPKrGEZBqxDO_En4sjXI8_xKSNYc-hnk,167
233
233
  deepeval/metrics/conversational_g_eval/template.py,sha256=buwPuHfqn-9FRrW-j1Pc4W0XCAVmdPPa0wM8pQ9Q0N0,2917
234
234
  deepeval/metrics/dag/__init__.py,sha256=G5D9ngJ6nnbRBF2mfmNZymZId8gKD09QzTA1Y_bTrgM,157
235
235
  deepeval/metrics/dag/dag.py,sha256=fsT4ifuW73jPKebhQ_A_l9ii_wNammRrCqIRqKIrPrs,5038
236
236
  deepeval/metrics/dag/graph.py,sha256=djc-p_qJmKwQU4eDFoSRqyLM3x80LRbuiwpBbWP3uNU,2876
237
237
  deepeval/metrics/dag/nodes.py,sha256=tlVOySeflRHiM5j6vIyIP0hD0dsfySUvHnZrJ1TH5Lw,28062
238
- deepeval/metrics/dag/schema.py,sha256=rJaMlXeESN0L3Igw0FTmErqjF6s8oKkUBEjhVKyBkiI,382
239
- deepeval/metrics/dag/templates.py,sha256=7pVyE1exfpU5z2OcAF4fH4xOxxIqO7orK3SQyMqGqEQ,2090
238
+ deepeval/metrics/dag/schema.py,sha256=9C3CCqR1D9cdM_XiElKmen_ihxNECaxO11QC_4B4v8Q,366
239
+ deepeval/metrics/dag/templates.py,sha256=rJjjTeHqOcm9mZKchuuLsjxbuXbqEyowVgpS1h7udT4,2148
240
240
  deepeval/metrics/dag/utils.py,sha256=66D88fpjIUdVwZvYV8a1L9TlX1wvbCVuE6Y8BFTbpkE,6069
241
241
  deepeval/metrics/faithfulness/__init__.py,sha256=RffAtTOSdtWO1gHVMnPI-imJahf3JENOoJRiNw-Xv4g,43
242
242
  deepeval/metrics/faithfulness/faithfulness.py,sha256=1dpbDoSDF0pYlDxuDOHw-HdtlUAA-OnNhtmacKVROhU,13751
@@ -247,11 +247,15 @@ deepeval/metrics/g_eval/g_eval.py,sha256=OkMvddJEjTaBnCEa4RNhqkDULcjTxxqn1IIvexs
247
247
  deepeval/metrics/g_eval/schema.py,sha256=V629txuDrr_2IEKEsgJVYYZb_pkdfcltQV9ZjvxK5co,287
248
248
  deepeval/metrics/g_eval/template.py,sha256=mHj4-mr_HQwbCjpHg7lM_6UesoSatL3g8UGGQAOdT0U,4509
249
249
  deepeval/metrics/g_eval/utils.py,sha256=uUT86jRXVYvLDzcnZvvfWssDyGoBHb66nWcJSg4i1u4,8784
250
+ deepeval/metrics/goal_accuracy/__init__.py,sha256=SVvA5Py1iNQoLujNUptvckoLoR6XMs-W2jQ7b89v-Tc,46
251
+ deepeval/metrics/goal_accuracy/goal_accuracy.py,sha256=r8QoSK1qcMvF2ykdoyHlC_L0kl3jU2mmiAT9J0JBTv0,13191
252
+ deepeval/metrics/goal_accuracy/schema.py,sha256=WmP1nw5ugOAKCFrpjZpF4jjeJzLB3Ecdp-2VWfBJLAE,257
253
+ deepeval/metrics/goal_accuracy/template.py,sha256=bsx7vhiN09X7bDzim0HY3lNgfGtmMEqawx7tHRanCa8,10521
250
254
  deepeval/metrics/hallucination/__init__.py,sha256=rCVlHi2UGzDKmZKi0esFLafmshVBx2WZ0jiIb-KqcYQ,44
251
- deepeval/metrics/hallucination/hallucination.py,sha256=K0hNzxeaYFI-TCg1KVo-s0BDkTRQUwQ_F5r5uD5vStQ,10115
255
+ deepeval/metrics/hallucination/hallucination.py,sha256=3iBEw-tTpU_6RB80i2WQHMRwgPtq2nsO89ceOhuUf94,10148
252
256
  deepeval/metrics/hallucination/schema.py,sha256=V8xbrBLMwJfre-lPuDc7rMEdhHf_1hfgoW1jE_ULvAY,286
253
257
  deepeval/metrics/hallucination/template.py,sha256=hiss1soxSBFqzOt0KmHZdZUzoQsmXnslDyb8HsjALPs,2620
254
- deepeval/metrics/indicator.py,sha256=MmOi6dDAFXIz3xKfuu7nyooL_VckCoYKZByL1ZSNmCE,10446
258
+ deepeval/metrics/indicator.py,sha256=3Qj6eWHlyVpl5kxSozXJ6dDer64jVjZhaGD92Yse56s,11032
255
259
  deepeval/metrics/json_correctness/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
256
260
  deepeval/metrics/json_correctness/json_correctness.py,sha256=FmI_YSrSPhdUJ-G1txN1gD_--ACNcDWuI8yrV3OLslU,7833
257
261
  deepeval/metrics/json_correctness/schema.py,sha256=VenN3E6_abO3IdWGdTB1ZfcFpGR9suzNkMxjr-h4I0k,94
@@ -261,12 +265,12 @@ deepeval/metrics/knowledge_retention/knowledge_retention.py,sha256=Sqyz9C_Ze9uv0
261
265
  deepeval/metrics/knowledge_retention/schema.py,sha256=XQ33uA4hCWGe_cNVH9B8RTm8N-BDHJW9RseKdlCvb9E,287
262
266
  deepeval/metrics/knowledge_retention/template.py,sha256=LtANOvqaROUXIG5Bepz_N6tZlBlGbd8lI92g036xvVw,5403
263
267
  deepeval/metrics/mcp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
264
- deepeval/metrics/mcp/mcp_task_completion.py,sha256=UA5qYwqolhdDdqEkDbylOQrB7Mn_z3wrZhGFtQW9nL8,10635
265
- deepeval/metrics/mcp/multi_turn_mcp_use_metric.py,sha256=sd_pfksW70WDKNoAAzAV6Hz8QQi2bMduArQHmSqNBR4,14451
268
+ deepeval/metrics/mcp/mcp_task_completion.py,sha256=bZ_Z_-PDnAfASdrYzsRSLH7SNYX50yzOeLmLWW9qjao,10839
269
+ deepeval/metrics/mcp/multi_turn_mcp_use_metric.py,sha256=iXPOVLHnAxdeWy8QP5lCkQWnY8Of_KnY2ajEble5px0,14795
266
270
  deepeval/metrics/mcp/schema.py,sha256=e9_bFfI8uHeejaePu-YIX8qpAax1noPaKhpiD_NYlgg,310
267
271
  deepeval/metrics/mcp/template.py,sha256=iL1V9W40piCAlstk_qYOTHAy2aymqbMmujHempUk25s,5482
268
272
  deepeval/metrics/mcp_use_metric/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
269
- deepeval/metrics/mcp_use_metric/mcp_use_metric.py,sha256=VBg5Oy-jJA22VUonSp8R4ZaBf2eDT17wVnGA7ZzB8iY,14647
273
+ deepeval/metrics/mcp_use_metric/mcp_use_metric.py,sha256=rZp2_SYqyDRf68KVGXoHMNP-Ws_5hlGajEBL9LhdElo,14723
270
274
  deepeval/metrics/mcp_use_metric/schema.py,sha256=GAWacRNl0i7ir_AE_f1_OBEj0Q5xhcIwEytmTFpiwyw,169
271
275
  deepeval/metrics/mcp_use_metric/template.py,sha256=iUttypDHYPc_QPB8hvuPhmSodJMhqUpau3P53thnE_Y,5625
272
276
  deepeval/metrics/misuse/__init__.py,sha256=TqtaJf0zzFceJtb3BSTT_hTA6OzgnF3Y-XuWjR2bgVs,37
@@ -295,7 +299,7 @@ deepeval/metrics/multimodal_metrics/multimodal_answer_relevancy/multimodal_answe
295
299
  deepeval/metrics/multimodal_metrics/multimodal_answer_relevancy/schema.py,sha256=Tqo-qN94CV4ZB6n8I906elt-PL9aUk0ioeuu-KvIQc0,382
296
300
  deepeval/metrics/multimodal_metrics/multimodal_answer_relevancy/template.py,sha256=gb9NSVwGp2xI34BvNdY7AccIcoRZKHdP0Ku7JPPHFzs,5439
297
301
  deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
298
- deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/multimodal_contextual_precision.py,sha256=zLPxiFvDlkgKU0vpvBCibpSHYNbuA-HzpU7bgCfYwPY,10850
302
+ deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/multimodal_contextual_precision.py,sha256=momYMtblazOiKg6mv-OOuC7cMxfSO4FcnLdaq0YTu0k,11199
299
303
  deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/schema.py,sha256=Y0kOAfaaKCBmnvBPZXJLZK_C5FAWDyJC8fYbnNQx3eA,305
300
304
  deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/template.py,sha256=XcpXheJKQBo4Zu2eoir2AMCC-lIIdUzNook-vEp1yE4,6489
301
305
  deepeval/metrics/multimodal_metrics/multimodal_contextual_recall/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -329,6 +333,14 @@ deepeval/metrics/pii_leakage/__init__.py,sha256=tBc9OGp4gmgoYz6FA3ipr48fpsCMvq6W
329
333
  deepeval/metrics/pii_leakage/pii_leakage.py,sha256=s-NAj1Lb0MiXIuQz0lxM120enSdMCVG_ktbR65d9-6U,11418
330
334
  deepeval/metrics/pii_leakage/schema.py,sha256=Jk9jdf4HAa76J237mnosWOCV71pBBNdLfaVhf-4dKEg,313
331
335
  deepeval/metrics/pii_leakage/template.py,sha256=DEW21CyR2lEI1y2C_fXgZnGJlYw0fvnB-LF-HEKZnqo,2418
336
+ deepeval/metrics/plan_adherence/__init__.py,sha256=A3K0wba7CEprIggqWRyqtleX1xzx_PEB_omGuAftU6I,48
337
+ deepeval/metrics/plan_adherence/plan_adherence.py,sha256=FXtWqnIWK9T8sGjJE7-ZZMVjEntspquFwW-hU6c_6_c,11034
338
+ deepeval/metrics/plan_adherence/schema.py,sha256=4PguH2IAy3C3lGrY6nmhnC14xFNaxtqeXCWzcBxJuik,192
339
+ deepeval/metrics/plan_adherence/template.py,sha256=JOFSTFZdz-TlfJwcf_GCGAbxD3kW-Un0LEdSTEBjeJ8,7524
340
+ deepeval/metrics/plan_quality/__init__.py,sha256=0q6vqavxbyAHkno5IfXkPSS6TbvB-zZBAobhw_Ldugw,44
341
+ deepeval/metrics/plan_quality/plan_quality.py,sha256=-e4cHGAgnmbPK-mkBlUvaJgFKxEEH6sOEOE4L05WF88,10943
342
+ deepeval/metrics/plan_quality/schema.py,sha256=xfdN_qi0AM-pNIIci7JdDdFdr_XLrjPTBEtpOrXmgmM,190
343
+ deepeval/metrics/plan_quality/template.py,sha256=Ot0CbGYaGgac1PGqcwo0-v0Tarmw7s4A-Gh-jQuX-GA,4466
332
344
  deepeval/metrics/prompt_alignment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
333
345
  deepeval/metrics/prompt_alignment/prompt_alignment.py,sha256=ltSfNu8xAXutAauKtvwVx9CN6L3mObcklRAsS4BTuhg,10576
334
346
  deepeval/metrics/prompt_alignment/schema.py,sha256=ann3tH5XfZCLhePE2UXTSK_gkF-_udP0RP_IVHW4mF0,315
@@ -342,16 +354,30 @@ deepeval/metrics/role_violation/__init__.py,sha256=gozjXhSGNIfon-YlMNlk322momEgS
342
354
  deepeval/metrics/role_violation/role_violation.py,sha256=UwvUQ-uo2e_ycxKGh58FHLkveUZhvcR0EP3mllA8M6c,12181
343
355
  deepeval/metrics/role_violation/schema.py,sha256=3c1xqZ4UV1MmGa7rZrNfCaSbi-l9EXINL5Ropn5GeGY,326
344
356
  deepeval/metrics/role_violation/template.py,sha256=MzvEEu7_fBDgOAaQ0W3uWvntiQ08BwO4YgLsMq4GdVo,2472
357
+ deepeval/metrics/step_efficiency/__init__.py,sha256=pUO_0Z_9iXCXQODJoVSWG3Ss9aBvvX2vbw4IN435wCk,50
358
+ deepeval/metrics/step_efficiency/schema.py,sha256=b7WeARGDDtWHGPCX1HmGVyJhl7dRrTcbSy6EtyEerSE,180
359
+ deepeval/metrics/step_efficiency/step_efficiency.py,sha256=sjEs3a_F0Mu47E9jjis4k_XbPvNpfke0d0Dn_8Z67rc,8404
360
+ deepeval/metrics/step_efficiency/template.py,sha256=JtowL7aiXidevHomdF2TEHv2pIaCcmONTH1o1qQzH2c,12603
345
361
  deepeval/metrics/summarization/__init__.py,sha256=rANygwNZxqpBwPOkLAGNNn29eB3GNkiT-neApKfsiEA,44
346
362
  deepeval/metrics/summarization/schema.py,sha256=_mlC_nsHA4e1g6tQXzeKMP3nvBvPZOM07q0eP3oIqng,729
347
363
  deepeval/metrics/summarization/summarization.py,sha256=rYghwnMED-JqM9eQ6GDXmnn0hL_IBt31fQ52aeGm9jM,22661
348
364
  deepeval/metrics/summarization/template.py,sha256=ItMcwgxgMIgHEIc1FoSsCtgPbhMY48ZzD7kfq7et6KY,5465
349
365
  deepeval/metrics/task_completion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
350
366
  deepeval/metrics/task_completion/schema.py,sha256=JfnZkbCh7skWvrESy65GEo6Rvo0FDJUqP6H1uyBCks4,241
351
- deepeval/metrics/task_completion/task_completion.py,sha256=m5kHbEWi5nAWp4PuQJAfWAAk2K2XgCyK719nWw6L7DU,9147
367
+ deepeval/metrics/task_completion/task_completion.py,sha256=t7nbkCHLWhLDMgCh2PLS_ho45tdQcJpcXMmW1De-pN4,9182
352
368
  deepeval/metrics/task_completion/template.py,sha256=4xjTBcGrPQxInbf8iwJOZyok9SQex1aCkbxKmfkXoA4,10437
353
369
  deepeval/metrics/tool_correctness/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
354
- deepeval/metrics/tool_correctness/tool_correctness.py,sha256=Zz3tyobyIK8uku-GJ8gIQyEb2l9mF4M23Xm27oM0dRE,12424
370
+ deepeval/metrics/tool_correctness/schema.py,sha256=N0fmpYfCZm0AHSUg9UZkYYpYohDyJLSBETH9oSp9Z1g,103
371
+ deepeval/metrics/tool_correctness/template.py,sha256=M3wmMWRr53_5Zpw58utJvcA9QXwZzRMfUcPRGD86G0U,3517
372
+ deepeval/metrics/tool_correctness/tool_correctness.py,sha256=IXYACQqHKjQgMJ2P2mMfIppV8o94usoJKIoN46i8hDk,20970
373
+ deepeval/metrics/tool_use/__init__.py,sha256=sR0b1T0qLbJU-N_CLQB-pSliawRQa0v2CC0I89ws4Lo,36
374
+ deepeval/metrics/tool_use/schema.py,sha256=hQ3OarGWUeVXUJUaZOPiF8xROsdzT-BRzXCEPLof85k,338
375
+ deepeval/metrics/tool_use/template.py,sha256=jF9oESP7FKAP877yWh0xFS31PpquQbgpQIGQy4s0BEE,9598
376
+ deepeval/metrics/tool_use/tool_use.py,sha256=AkppRM3d2KbLxfMn2f31Hq4zQKTjagmTbpDvROIbQGk,16777
377
+ deepeval/metrics/topic_adherence/__init__.py,sha256=SJLIAqpwLglKBnfe5hfQQKUq-Q9ygqSe_lKjSNfiBeg,50
378
+ deepeval/metrics/topic_adherence/schema.py,sha256=nH3aeFIyI7KgNpbHqwktnAXTGWuM_qij3npDl0TPRfU,286
379
+ deepeval/metrics/topic_adherence/template.py,sha256=0XZRaWJ86f52nNFLR68-Nmxod2aTSDQy10n-zXNqBWk,7142
380
+ deepeval/metrics/topic_adherence/topic_adherence.py,sha256=0UvfbnbjnG11iSSz6W7FN1z7aO7u4a5ziGgA9bxUw3U,14155
355
381
  deepeval/metrics/toxicity/__init__.py,sha256=1lgt8BKxfBDd7bfSLu_5kMzmsr9b2_ahPK9oq5zLkMk,39
356
382
  deepeval/metrics/toxicity/schema.py,sha256=7uUdzXqTvIIz5nfahlllo_fzVRXg7UeMeXn7Hl32pKY,459
357
383
  deepeval/metrics/toxicity/template.py,sha256=zl4y4Tg9gXkxKJ8aXVwj0cJ94pvfYuP7MTeV3dvB5yQ,5045
@@ -367,13 +393,13 @@ deepeval/models/answer_relevancy_model.py,sha256=SLOA6uUImNOuxpPGfTg2AH7MIkf9Qso
367
393
  deepeval/models/base_model.py,sha256=P7L7RAix7lxpUhYLMPdnmnkMeWspMuaTeZy175ZtdSk,4033
368
394
  deepeval/models/detoxify_model.py,sha256=UY67y-3aL_ojY06aZEhD_dW9TEaV5LJ_GVDyP0_2fyQ,991
369
395
  deepeval/models/embedding_models/__init__.py,sha256=5nsvahw_sZj_8WTInPYyGJEQrxNYBhDf6lkYQMKlgRw,230
370
- deepeval/models/embedding_models/azure_embedding_model.py,sha256=6adG8dTohW4oNOSPnCecMRkkx0LWJXFuhzExesQpI90,3671
371
- deepeval/models/embedding_models/local_embedding_model.py,sha256=Dm35cvn8hynP5IEXyZVDljIXngr9FAqxXN5TUqlBWl0,3371
372
- deepeval/models/embedding_models/ollama_embedding_model.py,sha256=w3etdIdWvYfVIEjCZd_Q_VPsLLo64VEFbCtahWpbHAY,2582
373
- deepeval/models/embedding_models/openai_embedding_model.py,sha256=Z1--e3CnNNmwryqmUMxBCaTURjtgKWHqADuUeCqFlSc,3545
396
+ deepeval/models/embedding_models/azure_embedding_model.py,sha256=2tMlRh5k0BJkAesC5zXg3gyNcZ5N_yzN8fBLHXzTVdc,3917
397
+ deepeval/models/embedding_models/local_embedding_model.py,sha256=Qah7bmubusaSb0wUtlfC8wWvPVXcyD-pE3E3vyy9ryE,3561
398
+ deepeval/models/embedding_models/ollama_embedding_model.py,sha256=jW1fiAPi650WoUDFYtrAht9lYmo8Z0W3cn4b7LYdhVY,2687
399
+ deepeval/models/embedding_models/openai_embedding_model.py,sha256=XhtnWr-6uedxqI_iriTuKA2dyuB1MXylEnTkHbKVxwY,3463
374
400
  deepeval/models/hallucination_model.py,sha256=ABi978VKLE_jNHbDzM96kJ08EsZ5ZlvOlJHA_ptSkfQ,1003
375
401
  deepeval/models/llms/__init__.py,sha256=qmvv7wnmTDvys2uUTwQRo-_3DlFV3fGLiewPeQYRsAI,670
376
- deepeval/models/llms/amazon_bedrock_model.py,sha256=3yiUUGU_d_YK7Usq8v5iqG3yHa5VnqeDOoCLG_p8rtc,5185
402
+ deepeval/models/llms/amazon_bedrock_model.py,sha256=XOethRC3h5nHieawJQryawMdwGXT1OXzoFKNMMGr9zs,5314
377
403
  deepeval/models/llms/anthropic_model.py,sha256=5gYRNkYUD7Zl3U0SibBG2YGCQsD6DdTsaBhqdaJlKIw,6072
378
404
  deepeval/models/llms/azure_model.py,sha256=dqINcfoJNqdd9zh5iTPwQ_ToGMOF7iH6YUB-UWRSOlc,10730
379
405
  deepeval/models/llms/deepseek_model.py,sha256=EqBJkKa7rXppCmlnIt_D-Z_r9fbsOUsOAVvN2jWA-Hk,6404
@@ -383,21 +409,21 @@ deepeval/models/llms/kimi_model.py,sha256=ldTefdSVitZYJJQ-_ZsP87iiT5iZ4QCVdfi-Yz
383
409
  deepeval/models/llms/litellm_model.py,sha256=iu4-_JCpd9LdEa-eCWseD2iLTA-r7OSgYGWQ0IxB4eA,11527
384
410
  deepeval/models/llms/local_model.py,sha256=hEyKVA6pkQm9dICUKsMNgjVI3w6gnyMdmBt_EylkWDk,4473
385
411
  deepeval/models/llms/ollama_model.py,sha256=xPO4d4jMY-cQAyHAcMuFvWS8JMWwCUbKP9CMi838Nuc,3307
386
- deepeval/models/llms/openai_model.py,sha256=70fkSaL8GZ2ZtPJJX6DHiEElgIqnT9kZyaz0OGsSm8c,17208
412
+ deepeval/models/llms/openai_model.py,sha256=1rjwbyt87fK03pw7r5tq3PjUVfl2EWllAssGyy6Dt2A,17494
387
413
  deepeval/models/llms/utils.py,sha256=gFM_8eIvdSwN_D4Yqp-j7PkfoiRn_bgu7tlCHol3A6c,1324
388
414
  deepeval/models/mlllms/__init__.py,sha256=19nN6kUB5XI0nUWUQX0aD9GBUMM8WWGvsDgKjuT4EF4,144
389
415
  deepeval/models/mlllms/gemini_model.py,sha256=7tHIWD4w_fBz3L7jkKWygn1QpBPk9nl2Kw-yb0Jc3PI,10167
390
416
  deepeval/models/mlllms/ollama_model.py,sha256=_YtYtw8oIMVVI-CFsDicsdeEJUPhw_9ArPxB_1olsJA,4798
391
417
  deepeval/models/mlllms/openai_model.py,sha256=KgvYgQwWZ1A_Gcl6-4-W7IMqbUF9K8sNY37j5Ag7kQQ,9014
392
- deepeval/models/retry_policy.py,sha256=efMJwjQasAE_3fstfBBmxLOzxUxws26zHP5yvEBcPfQ,31458
418
+ deepeval/models/retry_policy.py,sha256=sCluLDM0kshOhGwQzeA80dDXXc2Oc8TXyWMCG1kEUGE,34384
393
419
  deepeval/models/summac_model.py,sha256=wKeH7pWQRXrTlzlIw_r1YCb8b7jUhWq6jUz9FiNUCSg,1992
394
420
  deepeval/models/unbias_model.py,sha256=umOMhQLTmnD7uOuhiQufEl4Wlti4q2s3EtKOpds7zhs,597
395
421
  deepeval/models/utils.py,sha256=-3XDgg1U7PZ0jpLFiYXxqdBhp7idvlo7RPZv5SoD8lc,1130
396
422
  deepeval/openai/__init__.py,sha256=8v_Xj790M5PwPc5hiwIp0cuVFMknwtnhq0twRoD-85Y,440
397
- deepeval/openai/extractors.py,sha256=QWMCwPFgn-QQ_UGvdkGgcioX5kxA2kAwJZyTnRWZnik,4856
398
- deepeval/openai/patch.py,sha256=QHWw2Va3EA14qRBRgZyiL4mtKkYoh7lkn53ne4vkTxc,9459
399
- deepeval/openai/types.py,sha256=ZvUHqWiegA1Ll8GfIyiYsXXvsGZ_NqWnBhZYjF1XhBs,630
400
- deepeval/openai/utils.py,sha256=z2muCG8_275Krge-xBYboaKb2stwFX2i_BNAZEMiPXo,4154
423
+ deepeval/openai/extractors.py,sha256=Ov0agbl61C-Vvw4RBL1yiMrH1uKqmLyDu5OhXfod1T8,6048
424
+ deepeval/openai/patch.py,sha256=yAreqmE3BTK2gih-4Ek6Adsakai85akvhlVvkrBWrz8,9332
425
+ deepeval/openai/types.py,sha256=rbVMhC_2yWwD6JqzkRO9D7aMVC_KtXN686G_S7de7S8,630
426
+ deepeval/openai/utils.py,sha256=Pw09BhZNmMJgjCJl38WsCR2-ClEgdQGxOnv6OPar3Rs,7565
401
427
  deepeval/openai_agents/__init__.py,sha256=F4c6MtsdV7LWj0YamQcMGs4_u5sOYZJXWOQP8kV5xUg,314
402
428
  deepeval/openai_agents/agent.py,sha256=_SQdd0JzZK-ZvpP7yPEi22Y7fVk16PC00ROahdDQdCQ,951
403
429
  deepeval/openai_agents/callback_handler.py,sha256=4Tt2OAGfYd35C5LBMekxz0SDivYryKGm3lxls1WT7cY,4842
@@ -409,25 +435,25 @@ deepeval/plugins/plugin.py,sha256=_dwsdx4Dg9DbXxK3f7zJY4QWTJQWc7QE1HmIg2Zjjag,15
409
435
  deepeval/progress_context.py,sha256=ZSKpxrE9sdgt9G3REKnVeXAv7GJXHHVGgLynpG1Pudw,3557
410
436
  deepeval/prompt/__init__.py,sha256=rDU99KjydxDRKhuQJCBs_bpDJrWb2mpHtvyv6AEwFC8,367
411
437
  deepeval/prompt/api.py,sha256=8EwWu4r44IUFOYqkQQiwyjAFFzmll11VnfXIF4n0rbc,6188
412
- deepeval/prompt/prompt.py,sha256=Ys6dW3LfC-xFQ0TBAMWkrYmBJvmMRCwx2te7hjpvJTA,31052
413
- deepeval/prompt/utils.py,sha256=m0a_NJ9NS_XWdNGz22S62HOrDnYqpSmdVowUqgYuBYY,6480
438
+ deepeval/prompt/prompt.py,sha256=hHZu4qywRoNHIvNcfGvWZ9X8QbetiOM_D6CmhKID6fg,31079
439
+ deepeval/prompt/utils.py,sha256=knjgPU2066OtYWMb3NqMPChr9zQgKfXo_QTLTtSkmYg,7620
414
440
  deepeval/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
415
441
  deepeval/red_teaming/README.md,sha256=BY5rAdpp3-sMMToEKwq0Nsd9ivkGDzPE16DeDb8GY7U,154
416
442
  deepeval/scorer/__init__.py,sha256=hTvtoV3a4l0dSBjERm-jX7jveTtKZXK0c9JerQo0T_w,27
417
443
  deepeval/scorer/scorer.py,sha256=EmXo1wEMMAL2it8WxNJ4cTqZLCH1ad4BY2VewoX6b10,18348
418
444
  deepeval/simulator/__init__.py,sha256=wkyevg9nh46rsVnVrBjY3K5bHlkqjwx4TtrTfyjDCO0,96
419
- deepeval/simulator/conversation_simulator.py,sha256=Ojng2ZoM31p7GVWEkiT44PE926eEzRoVJP5eRb1yrQI,24262
445
+ deepeval/simulator/conversation_simulator.py,sha256=DhpxlarJbf-CB-kID0pwN1AiWKzjtk4sEskcIddBst0,24639
420
446
  deepeval/simulator/schema.py,sha256=16X2-m92plP52YTd-dvECt_-6gsz0U4j7Ut3UdI6gKY,252
421
447
  deepeval/simulator/template.py,sha256=5QLrxvDjHJpcudg-rGeLaUKGCDdHf_2QhlYBL9FJKxE,5869
422
448
  deepeval/singleton.py,sha256=irNbt0-IRI7rD4t05OZHsrNovpeva0XPc8PoieFytG8,532
423
449
  deepeval/synthesizer/__init__.py,sha256=eMihIQH-NClWL-8CZ9HUs9GA1Cy_DV_YX_f1o4bpO2c,142
424
450
  deepeval/synthesizer/base_synthesizer.py,sha256=ua7HDq1lemeFH5FuWdGJxMGFH5QA2CSYkekk4bpOHcU,675
425
451
  deepeval/synthesizer/chunking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
426
- deepeval/synthesizer/chunking/context_generator.py,sha256=BWLJVamGhFRVyqLLTOr9l61n3NaWlr2q3pmyjDxKBWw,37713
452
+ deepeval/synthesizer/chunking/context_generator.py,sha256=ucwa-7BcPSHHf4Tu31dfyJ63Bg9HdNhGLAW5_QsfFX4,38052
427
453
  deepeval/synthesizer/chunking/doc_chunker.py,sha256=DvJmbA_NnZBGCZgxKQsxlIC29kca_d7J-Dxq9SyfzX0,10612
428
454
  deepeval/synthesizer/config.py,sha256=vcSi6upnmd667dAGANTTdPmY0z5sQ8Ctal7Xr4-tbhA,1934
429
455
  deepeval/synthesizer/schema.py,sha256=PIv3012VMg_v-Ylwn08-4tNjf4QShBSg-kaCkgtdA88,879
430
- deepeval/synthesizer/synthesizer.py,sha256=OEXksTCajtZ2spnXPEEYeVuBL3ay1CJb_ckKyRB2AGU,60216
456
+ deepeval/synthesizer/synthesizer.py,sha256=oa2m9ZqywNcSO1wUijrJ7HO-NC8-oU1g04NIS16dx6U,60306
431
457
  deepeval/synthesizer/templates/__init__.py,sha256=C-wSGQeMRxTdSBJbgeyAM5Iu6mkHVSYbNfz0AY9K5Yc,209
432
458
  deepeval/synthesizer/templates/template.py,sha256=nTH-k8XbvZQD_lagsaf6kmT6oylFjQ7gEseHYB1Zyso,39807
433
459
  deepeval/synthesizer/templates/template_extraction.py,sha256=NkpzP-MkoefokVJBZn9s1ErDvI3o9ocY5_ZY85zj4KE,1972
@@ -439,7 +465,7 @@ deepeval/test_case/__init__.py,sha256=hLkHxGH0-FFhx4MlJwIbzNHL4pgyLGquh8l0qD-z_c
439
465
  deepeval/test_case/api.py,sha256=aPghn6TFTR6TfsUSoY0WUZgLSnJtWkQuzqm_cKt08mc,4418
440
466
  deepeval/test_case/arena_test_case.py,sha256=PcfDxadlc4yW4AEDdvN32AeUpx2Sms1jvnbX31Xu65o,957
441
467
  deepeval/test_case/conversational_test_case.py,sha256=lF0V1yCGCInQetggm2wbXx-MkuMRs2ScwqIXCSwb1Fs,7534
442
- deepeval/test_case/llm_test_case.py,sha256=L-dCvJ4pMPPavZTyN9ZKN30h351DWI_TunmXfHPIjig,12180
468
+ deepeval/test_case/llm_test_case.py,sha256=AJ3xRZ_vp64rbXpWE838vvbKluFbs1pwdVJ46Ju9jUA,12280
443
469
  deepeval/test_case/mcp.py,sha256=Z625NLvz0E_UJpbyfyuAi_4nsqKH6DByBf0rfKd70xU,1879
444
470
  deepeval/test_case/mllm_test_case.py,sha256=8a0YoE72geX_fLI6yk_cObSxCPddwW-DOb-5OPE1-W8,5414
445
471
  deepeval/test_case/utils.py,sha256=5lT7QmhItsQHt44-qQfspuktilcrEyvl2cS0cgUJxds,809
@@ -448,33 +474,29 @@ deepeval/test_run/api.py,sha256=s8q2wBsE8rgOn_1GU84a8aFRjyDxMm6qQJmpl5CorCM,5484
448
474
  deepeval/test_run/cache.py,sha256=2bKXQ4GvHe2xowFGz4ekoheLno1Yv7O6PfuanFkWnA4,12786
449
475
  deepeval/test_run/hooks.py,sha256=Qnd06bk9RJN4WmFUzJrBAi3Xj261hzyzI2iRmG8wbKw,375
450
476
  deepeval/test_run/hyperparameters.py,sha256=JKuKLilfrzgmkS7UBugsyZeHeb53DreISae6FIfy1mE,3762
451
- deepeval/test_run/test_run.py,sha256=bPLMTBg3gXDDqkd4t1_72pWaZb75cz4YSuNjUtEgANI,40855
452
- deepeval/tracing/__init__.py,sha256=WpiWzIIAzPIk043Si1jwTwHWxqtaIzeHj_xq9CH08nk,576
477
+ deepeval/test_run/test_run.py,sha256=LQmyLdPgnYkKw4r5zjiOSRoRYsxRSiQRqugtGFaq5ac,40012
478
+ deepeval/tracing/__init__.py,sha256=aSOk_ZgL-K7CZzcyiaIa5peAiaPViDST5GhpHA3Adc8,614
453
479
  deepeval/tracing/api.py,sha256=VWs0M0wHk7Y8ReVOl9fo2ZDfVPVD08FlswvAlIKDZac,4926
454
480
  deepeval/tracing/context.py,sha256=rzm42zYzP7jmQJO08AV-Qmw86ik45qRfF4UQNpGcmJw,5338
455
- deepeval/tracing/message_types/__init__.py,sha256=ugBWRU3B66ePZXEXCktUpQjvtQshh_0qBXwrHhG9tYM,212
456
- deepeval/tracing/message_types/base.py,sha256=Ugx4XLwLYVmdYPTKbbGuQsPUTfDicYp1LPGctra_gcQ,129
457
- deepeval/tracing/message_types/messages.py,sha256=c_IfiCGUJ-IX1LatP65hCMsnxOs8YjRiBL89_zjK3Nc,320
458
- deepeval/tracing/message_types/tools.py,sha256=Fnp466rZIpZXa6pt5g7x_yGwOqHLALxsMPK7IEbFdm0,335
459
481
  deepeval/tracing/offline_evals/__init__.py,sha256=bEniJAl7PmS9u2ksiOTfHtlCPJ9_CJV5R6umrUOX5MM,102
460
482
  deepeval/tracing/offline_evals/api.py,sha256=eBfqh2uWyeRkIeGhjrN1bTQzAEow-XPubs-42WEZ2QQ,510
461
483
  deepeval/tracing/offline_evals/span.py,sha256=pXqTVXs-WnjRVpCYYEbNe0zSM6Wz9GsKHsM5ZcWxrmM,1802
462
484
  deepeval/tracing/offline_evals/thread.py,sha256=bcSGFcZJKnszArOLIlWvnCyt0zSmsd7Xsw5rl4RTVFg,1981
463
485
  deepeval/tracing/offline_evals/trace.py,sha256=vTflaTKysKRiYvKA-Nx6PUJ3J6NrRLXiIdWieVcm90E,1868
464
486
  deepeval/tracing/otel/__init__.py,sha256=HQsaF5yLPwyW5qg8AOV81_nG_7pFHnatOTHi9Wx3HEk,88
465
- deepeval/tracing/otel/exporter.py,sha256=eykoPzrRn3ljVO_JKzUeXThZ5iApyImGCDgnimIoUXs,28640
487
+ deepeval/tracing/otel/exporter.py,sha256=zXkM79kMzdmEr0DGifDgzm5U_OkMO5dD2yjzYAabcKs,28634
466
488
  deepeval/tracing/otel/test_exporter.py,sha256=bezihPGWJpwUEF3ZghxqhhorocVFTO2b43jRM-JHYMU,1076
467
- deepeval/tracing/otel/utils.py,sha256=mRqcvaYukrM2OexJuuLFuJ5QDaKwcflIf6psYDgQb9A,17189
489
+ deepeval/tracing/otel/utils.py,sha256=NVMN07JtxuvVPtdyTW7KFdTqQL3TpoCO-JdZeghQJBY,17859
468
490
  deepeval/tracing/patchers.py,sha256=DAPNkhrDtoeyJIVeQDUMhTz-xGcXu00eqjQZmov8FiU,3096
469
491
  deepeval/tracing/perf_epoch_bridge.py,sha256=iyAPddB6Op7NpMtPHJ29lDm53Btz9yLaN6xSCfTRQm4,1825
470
- deepeval/tracing/trace_context.py,sha256=qtJBYwH3wW9_kyGnz3dFPKuWM3Tl3q6RpjdIM2aVaYo,2552
492
+ deepeval/tracing/trace_context.py,sha256=QGKUO5LzP8sLSb3DH8GAQeAq0X25kmRZXduzunzlBZw,3050
471
493
  deepeval/tracing/trace_test_manager.py,sha256=wt4y7EWTRc4Bw938-UFFtXHkdFFOrnx6JaIk7J5Iulw,555
472
- deepeval/tracing/tracing.py,sha256=0vV4YRaQYUz14Wql0OH3XrmzdZS0UBHwpaza7CYrtGY,44818
473
- deepeval/tracing/types.py,sha256=5TENzy5sNQzktw5LgzFObRUJkkMFbcSggHZJmR9vCFI,5929
494
+ deepeval/tracing/tracing.py,sha256=iMpi5Q8e1VYuTLshzWEHuZC7ysuNFYwRCVBn1jX-qUg,45681
495
+ deepeval/tracing/types.py,sha256=QZdINiuLCT2oqaCoiaClOtL6m3Wzi8mN-ajZd09XHqw,5948
474
496
  deepeval/tracing/utils.py,sha256=pW_UJMzyeR1PWYZuZrPeVGGYiL6FRpFE3Ehbz9uhw_M,5525
475
- deepeval/utils.py,sha256=J1JNzjAlmn-UsFTK8-c5bhUuk5crwFGVCrRvle-nNmA,21533
476
- deepeval-3.6.7.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
477
- deepeval-3.6.7.dist-info/METADATA,sha256=02-rmeWwKjEyCIRTiOTLBC4pra44kuM-GHtwuSfZTqw,18754
478
- deepeval-3.6.7.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
479
- deepeval-3.6.7.dist-info/entry_points.txt,sha256=fVr8UphXTfJe9I2rObmUtfU3gkSrYeM0pLy-NbJYg10,94
480
- deepeval-3.6.7.dist-info/RECORD,,
497
+ deepeval/utils.py,sha256=g4vO7E6xvdKtp1x84NXXX5Ifm3c0OMIA0IaiP2U5a-s,22079
498
+ deepeval-3.6.9.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
499
+ deepeval-3.6.9.dist-info/METADATA,sha256=u-OgJTHDKHRn88hnnDfdkT_swHC4tJRc3S3crwFIiss,18754
500
+ deepeval-3.6.9.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
501
+ deepeval-3.6.9.dist-info/entry_points.txt,sha256=fVr8UphXTfJe9I2rObmUtfU3gkSrYeM0pLy-NbJYg10,94
502
+ deepeval-3.6.9.dist-info/RECORD,,