deepeval 3.6.7__py3-none-any.whl → 3.6.8__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.
- deepeval/_version.py +1 -1
- deepeval/errors.py +20 -2
- deepeval/evaluate/execute.py +725 -217
- deepeval/evaluate/types.py +1 -0
- deepeval/evaluate/utils.py +13 -3
- deepeval/integrations/crewai/__init__.py +2 -1
- deepeval/integrations/crewai/tool.py +71 -0
- deepeval/integrations/llama_index/__init__.py +0 -4
- deepeval/integrations/llama_index/handler.py +20 -21
- deepeval/integrations/pydantic_ai/instrumentator.py +125 -76
- deepeval/metrics/__init__.py +13 -0
- deepeval/metrics/base_metric.py +1 -0
- deepeval/metrics/contextual_precision/contextual_precision.py +27 -21
- deepeval/metrics/conversational_g_eval/__init__.py +3 -0
- deepeval/metrics/conversational_g_eval/conversational_g_eval.py +11 -7
- deepeval/metrics/dag/schema.py +1 -1
- deepeval/metrics/dag/templates.py +2 -2
- deepeval/metrics/goal_accuracy/__init__.py +1 -0
- deepeval/metrics/goal_accuracy/goal_accuracy.py +349 -0
- deepeval/metrics/goal_accuracy/schema.py +17 -0
- deepeval/metrics/goal_accuracy/template.py +235 -0
- deepeval/metrics/hallucination/hallucination.py +8 -8
- deepeval/metrics/mcp/mcp_task_completion.py +7 -2
- deepeval/metrics/mcp/multi_turn_mcp_use_metric.py +16 -6
- deepeval/metrics/mcp_use_metric/mcp_use_metric.py +2 -1
- deepeval/metrics/multimodal_metrics/multimodal_contextual_precision/multimodal_contextual_precision.py +32 -24
- deepeval/metrics/plan_adherence/__init__.py +1 -0
- deepeval/metrics/plan_adherence/plan_adherence.py +292 -0
- deepeval/metrics/plan_adherence/schema.py +11 -0
- deepeval/metrics/plan_adherence/template.py +170 -0
- deepeval/metrics/plan_quality/__init__.py +1 -0
- deepeval/metrics/plan_quality/plan_quality.py +292 -0
- deepeval/metrics/plan_quality/schema.py +11 -0
- deepeval/metrics/plan_quality/template.py +101 -0
- deepeval/metrics/step_efficiency/__init__.py +1 -0
- deepeval/metrics/step_efficiency/schema.py +11 -0
- deepeval/metrics/step_efficiency/step_efficiency.py +234 -0
- deepeval/metrics/step_efficiency/template.py +256 -0
- deepeval/metrics/task_completion/task_completion.py +1 -0
- deepeval/metrics/tool_correctness/schema.py +6 -0
- deepeval/metrics/tool_correctness/template.py +88 -0
- deepeval/metrics/tool_correctness/tool_correctness.py +226 -22
- deepeval/metrics/tool_use/__init__.py +1 -0
- deepeval/metrics/tool_use/schema.py +19 -0
- deepeval/metrics/tool_use/template.py +220 -0
- deepeval/metrics/tool_use/tool_use.py +458 -0
- deepeval/metrics/topic_adherence/__init__.py +1 -0
- deepeval/metrics/topic_adherence/schema.py +16 -0
- deepeval/metrics/topic_adherence/template.py +162 -0
- deepeval/metrics/topic_adherence/topic_adherence.py +355 -0
- deepeval/models/embedding_models/azure_embedding_model.py +37 -36
- deepeval/models/embedding_models/local_embedding_model.py +30 -32
- deepeval/models/embedding_models/ollama_embedding_model.py +18 -20
- deepeval/models/embedding_models/openai_embedding_model.py +22 -31
- deepeval/openai/extractors.py +61 -16
- deepeval/openai/patch.py +8 -12
- deepeval/openai/types.py +1 -1
- deepeval/openai/utils.py +108 -1
- deepeval/prompt/prompt.py +1 -0
- deepeval/prompt/utils.py +43 -14
- deepeval/synthesizer/synthesizer.py +11 -10
- deepeval/test_case/llm_test_case.py +6 -2
- deepeval/test_run/test_run.py +190 -207
- deepeval/tracing/__init__.py +2 -1
- deepeval/tracing/otel/exporter.py +3 -4
- deepeval/tracing/otel/utils.py +23 -4
- deepeval/tracing/trace_context.py +53 -38
- deepeval/tracing/tracing.py +23 -0
- deepeval/tracing/types.py +16 -14
- deepeval/utils.py +21 -0
- {deepeval-3.6.7.dist-info → deepeval-3.6.8.dist-info}/METADATA +1 -1
- {deepeval-3.6.7.dist-info → deepeval-3.6.8.dist-info}/RECORD +75 -53
- deepeval/integrations/llama_index/agent/patched.py +0 -68
- deepeval/tracing/message_types/__init__.py +0 -10
- deepeval/tracing/message_types/base.py +0 -6
- deepeval/tracing/message_types/messages.py +0 -14
- deepeval/tracing/message_types/tools.py +0 -18
- {deepeval-3.6.7.dist-info → deepeval-3.6.8.dist-info}/LICENSE.md +0 -0
- {deepeval-3.6.7.dist-info → deepeval-3.6.8.dist-info}/WHEEL +0 -0
- {deepeval-3.6.7.dist-info → deepeval-3.6.8.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
|
|
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
|
-
|
|
25
|
-
|
|
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
|
-
|
|
32
|
-
|
|
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
|
-
|
|
42
|
-
|
|
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
|
|
52
|
-
current_trace.metrics =
|
|
67
|
+
if metrics:
|
|
68
|
+
current_trace.metrics = metrics
|
|
53
69
|
|
|
54
|
-
if
|
|
55
|
-
current_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
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
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
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
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())
|
deepeval/tracing/tracing.py
CHANGED
|
@@ -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
|
-
|
|
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,5 +1,5 @@
|
|
|
1
1
|
deepeval/__init__.py,sha256=IqShG98ALpA1gm_qL2Jq56AJoafAHpcUTSvpgH4HpZM,3062
|
|
2
|
-
deepeval/_version.py,sha256=
|
|
2
|
+
deepeval/_version.py,sha256=C5bgvFdado3VzAu3M_L96js3YY-GEFop8Ji2mSKvCRo,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
|
|
@@ -154,19 +154,20 @@ deepeval/dataset/golden.py,sha256=T-rTk4Hw1tANx_Iimv977F6Y4QK3s5OIB4PecU5FJDM,23
|
|
|
154
154
|
deepeval/dataset/test_run_tracer.py,sha256=5CdpDvhzkEEBRyqWi6egocaxiN6IRS3XfbACxEQZQeM,2544
|
|
155
155
|
deepeval/dataset/types.py,sha256=CWeOIBPK2WdmRUqjFa9gfN-w2da0r8Ilzl3ToDpJQoQ,558
|
|
156
156
|
deepeval/dataset/utils.py,sha256=fbBtbalP3qoCF38DGZASVsz8eIVuYojt92ujDGXaIwM,6626
|
|
157
|
-
deepeval/errors.py,sha256=
|
|
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=
|
|
164
|
-
deepeval/evaluate/types.py,sha256=
|
|
165
|
-
deepeval/evaluate/utils.py,sha256=
|
|
163
|
+
deepeval/evaluate/execute.py,sha256=B1mjwfquKMGkcrfypU798-T598kBhdCfl9s-symYgxM,111805
|
|
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=
|
|
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=
|
|
181
|
-
deepeval/integrations/llama_index/
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
231
|
-
deepeval/metrics/conversational_g_eval/conversational_g_eval.py,sha256=
|
|
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=
|
|
239
|
-
deepeval/metrics/dag/templates.py,sha256=
|
|
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,8 +247,12 @@ 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=
|
|
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
258
|
deepeval/metrics/indicator.py,sha256=MmOi6dDAFXIz3xKfuu7nyooL_VckCoYKZByL1ZSNmCE,10446
|
|
@@ -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=
|
|
265
|
-
deepeval/metrics/mcp/multi_turn_mcp_use_metric.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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/
|
|
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,10 +393,10 @@ 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=
|
|
371
|
-
deepeval/models/embedding_models/local_embedding_model.py,sha256=
|
|
372
|
-
deepeval/models/embedding_models/ollama_embedding_model.py,sha256=
|
|
373
|
-
deepeval/models/embedding_models/openai_embedding_model.py,sha256=
|
|
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
402
|
deepeval/models/llms/amazon_bedrock_model.py,sha256=3yiUUGU_d_YK7Usq8v5iqG3yHa5VnqeDOoCLG_p8rtc,5185
|
|
@@ -394,10 +420,10 @@ deepeval/models/summac_model.py,sha256=wKeH7pWQRXrTlzlIw_r1YCb8b7jUhWq6jUz9FiNUC
|
|
|
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=
|
|
398
|
-
deepeval/openai/patch.py,sha256=
|
|
399
|
-
deepeval/openai/types.py,sha256=
|
|
400
|
-
deepeval/openai/utils.py,sha256=
|
|
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,8 +435,8 @@ 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=
|
|
413
|
-
deepeval/prompt/utils.py,sha256=
|
|
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
|
|
@@ -427,7 +453,7 @@ deepeval/synthesizer/chunking/context_generator.py,sha256=BWLJVamGhFRVyqLLTOr9l6
|
|
|
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=
|
|
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=
|
|
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=
|
|
452
|
-
deepeval/tracing/__init__.py,sha256=
|
|
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=
|
|
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=
|
|
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=
|
|
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=
|
|
473
|
-
deepeval/tracing/types.py,sha256=
|
|
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=
|
|
476
|
-
deepeval-3.6.
|
|
477
|
-
deepeval-3.6.
|
|
478
|
-
deepeval-3.6.
|
|
479
|
-
deepeval-3.6.
|
|
480
|
-
deepeval-3.6.
|
|
497
|
+
deepeval/utils.py,sha256=g4vO7E6xvdKtp1x84NXXX5Ifm3c0OMIA0IaiP2U5a-s,22079
|
|
498
|
+
deepeval-3.6.8.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
|
|
499
|
+
deepeval-3.6.8.dist-info/METADATA,sha256=dsuWjQk91lxxGx6x61udvFR2pUrBGBTSH1Vp9DrPVYI,18754
|
|
500
|
+
deepeval-3.6.8.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
|
|
501
|
+
deepeval-3.6.8.dist-info/entry_points.txt,sha256=fVr8UphXTfJe9I2rObmUtfU3gkSrYeM0pLy-NbJYg10,94
|
|
502
|
+
deepeval-3.6.8.dist-info/RECORD,,
|
|
@@ -1,68 +0,0 @@
|
|
|
1
|
-
from typing import TypeVar, cast, Optional, List
|
|
2
|
-
from pydantic import Field
|
|
3
|
-
from deepeval.metrics import BaseMetric
|
|
4
|
-
from deepeval.telemetry import capture_tracing_integration
|
|
5
|
-
|
|
6
|
-
try:
|
|
7
|
-
from llama_index.core.agent.workflow import (
|
|
8
|
-
FunctionAgent,
|
|
9
|
-
ReActAgent,
|
|
10
|
-
CodeActAgent,
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
is_llama_index_installed = True
|
|
14
|
-
except:
|
|
15
|
-
is_llama_index_installed = False
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
def is_llama_index_agent_installed():
|
|
19
|
-
if not is_llama_index_installed:
|
|
20
|
-
raise ImportError(
|
|
21
|
-
"llama-index is neccesary for this functionality. Please install it with `pip install llama-index` or with package manager of choice."
|
|
22
|
-
)
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
T = TypeVar("T", bound=type)
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
def with_metrics(cls: T) -> T:
|
|
29
|
-
class SubClassWithMetric(cls): # type: ignore
|
|
30
|
-
metric_collection: Optional[str] = Field(default=None)
|
|
31
|
-
metrics: Optional[List[BaseMetric]] = Field(default_factory=list)
|
|
32
|
-
|
|
33
|
-
SubClassWithMetric.__name__ = cls.__name__
|
|
34
|
-
SubClassWithMetric.__qualname__ = cls.__qualname__
|
|
35
|
-
return cast(T, SubClassWithMetric)
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
@with_metrics
|
|
39
|
-
class FunctionAgent(FunctionAgent):
|
|
40
|
-
def __init__(self, *args, metric_collection=None, metrics=None, **kwargs):
|
|
41
|
-
with capture_tracing_integration(
|
|
42
|
-
"llama_index.agent.patched.FunctionAgent"
|
|
43
|
-
):
|
|
44
|
-
super().__init__(*args, **kwargs)
|
|
45
|
-
self.metric_collection = metric_collection
|
|
46
|
-
self.metrics = metrics
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
@with_metrics
|
|
50
|
-
class ReActAgent(ReActAgent):
|
|
51
|
-
def __init__(self, *args, metric_collection=None, metrics=None, **kwargs):
|
|
52
|
-
with capture_tracing_integration(
|
|
53
|
-
"llama_index.agent.patched.ReActAgent"
|
|
54
|
-
):
|
|
55
|
-
super().__init__(*args, **kwargs)
|
|
56
|
-
self.metric_collection = metric_collection
|
|
57
|
-
self.metrics = metrics
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
@with_metrics
|
|
61
|
-
class CodeActAgent(CodeActAgent):
|
|
62
|
-
def __init__(self, *args, metric_collection=None, metrics=None, **kwargs):
|
|
63
|
-
with capture_tracing_integration(
|
|
64
|
-
"llama_index.agent.patched.CodeActAgent"
|
|
65
|
-
):
|
|
66
|
-
super().__init__(*args, **kwargs)
|
|
67
|
-
self.metric_collection = metric_collection
|
|
68
|
-
self.metrics = metrics
|