deepeval 3.8.0__py3-none-any.whl → 3.8.2__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/prompt/prompt.py CHANGED
@@ -114,6 +114,7 @@ class Prompt:
114
114
  output_type: Optional[OutputType] = None,
115
115
  output_schema: Optional[Type[BaseModel]] = None,
116
116
  interpolation_type: Optional[PromptInterpolationType] = None,
117
+ confident_api_key: Optional[str] = None,
117
118
  ):
118
119
  if text_template and messages_template:
119
120
  raise TypeError(
@@ -129,6 +130,7 @@ class Prompt:
129
130
  self.interpolation_type: PromptInterpolationType = (
130
131
  interpolation_type or PromptInterpolationType.FSTRING
131
132
  )
133
+ self.confident_api_key = confident_api_key
132
134
 
133
135
  self._version = None
134
136
  self._prompt_version_id: Optional[str] = None
@@ -244,7 +246,7 @@ class Prompt:
244
246
  raise ValueError(
245
247
  "Prompt alias is not set. Please set an alias to continue."
246
248
  )
247
- api = Api()
249
+ api = Api(api_key=self.confident_api_key)
248
250
  data, _ = api.send_request(
249
251
  method=HttpMethods.GET,
250
252
  endpoint=Endpoints.PROMPTS_VERSIONS_ENDPOINT,
@@ -496,7 +498,7 @@ class Prompt:
496
498
  except Exception:
497
499
  pass
498
500
 
499
- api = Api()
501
+ api = Api(api_key=self.confident_api_key)
500
502
  with Progress(
501
503
  SpinnerColumn(style="rgb(106,0,255)"),
502
504
  BarColumn(bar_width=60),
@@ -635,7 +637,7 @@ class Prompt:
635
637
  # Pydantic version below 2.0
636
638
  body = body.dict(by_alias=True, exclude_none=True)
637
639
 
638
- api = Api()
640
+ api = Api(api_key=self.confident_api_key)
639
641
  _, link = api.send_request(
640
642
  method=HttpMethods.POST,
641
643
  endpoint=Endpoints.PROMPTS_ENDPOINT,
@@ -692,7 +694,7 @@ class Prompt:
692
694
  )
693
695
  except AttributeError:
694
696
  body = body.dict(by_alias=True, exclude_none=True)
695
- api = Api()
697
+ api = Api(api_key=self.confident_api_key)
696
698
  data, _ = api.send_request(
697
699
  method=HttpMethods.PUT,
698
700
  endpoint=Endpoints.PROMPTS_VERSION_ID_ENDPOINT,
@@ -765,7 +767,7 @@ class Prompt:
765
767
  while True:
766
768
  await asyncio.sleep(self._refresh_map[CACHE_KEY][cache_value])
767
769
 
768
- api = Api()
770
+ api = Api(api_key=self.confident_api_key)
769
771
  try:
770
772
  if label:
771
773
  data, _ = api.send_request(
@@ -610,7 +610,8 @@ class ConversationSimulator:
610
610
  ) -> BaseModel:
611
611
  if self.using_native_model:
612
612
  res, cost = self.simulator_model.generate(prompt, schema=schema)
613
- self.simulation_cost += cost
613
+ if cost is not None:
614
+ self.simulation_cost += cost
614
615
  return res
615
616
  else:
616
617
  try:
@@ -630,7 +631,8 @@ class ConversationSimulator:
630
631
  res, cost = await self.simulator_model.a_generate(
631
632
  prompt, schema=schema
632
633
  )
633
- self.simulation_cost += cost
634
+ if cost is not None:
635
+ self.simulation_cost += cost
634
636
  return res
635
637
  else:
636
638
  try:
deepeval/telemetry.py CHANGED
@@ -1,5 +1,4 @@
1
1
  from contextlib import contextmanager
2
- import logging
3
2
  import os
4
3
  import socket
5
4
  import sys
@@ -85,13 +84,6 @@ if not telemetry_opt_out():
85
84
  anonymous_public_ip = None
86
85
 
87
86
  if not telemetry_opt_out():
88
- from opentelemetry import trace
89
- from opentelemetry.sdk.trace import TracerProvider
90
- from opentelemetry.sdk.trace.export import BatchSpanProcessor
91
- from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import (
92
- OTLPSpanExporter,
93
- )
94
-
95
87
  anonymous_public_ip = get_anonymous_public_ip()
96
88
  sentry_sdk.init(
97
89
  dsn="https://5ef587d58109ee45d6544f3657efdd1f@o4506098477236224.ingest.sentry.io/4506098479136768",
@@ -102,27 +94,6 @@ if not telemetry_opt_out():
102
94
  default_integrations=False, # Disable Sentry's default integrations
103
95
  )
104
96
 
105
- # Set up the Tracer Provider
106
- trace.set_tracer_provider(TracerProvider())
107
- tracer_provider = trace.get_tracer_provider()
108
-
109
- # New Relic License Key and OTLP Endpoint
110
- NEW_RELIC_LICENSE_KEY = "1711c684db8a30361a7edb0d0398772cFFFFNRAL"
111
- NEW_RELIC_OTLP_ENDPOINT = "https://otlp.nr-data.net:4317"
112
- otlp_exporter = OTLPSpanExporter(
113
- endpoint=NEW_RELIC_OTLP_ENDPOINT,
114
- headers={"api-key": NEW_RELIC_LICENSE_KEY},
115
- )
116
-
117
- # Add the OTLP exporter to the span processor
118
- span_processor = BatchSpanProcessor(otlp_exporter)
119
- tracer_provider.add_span_processor(span_processor)
120
-
121
- logging.getLogger("opentelemetry.exporter.otlp").setLevel(logging.CRITICAL)
122
-
123
- # Create a tracer for your application
124
- tracer = trace.get_tracer(__name__)
125
-
126
97
  # Initialize PostHog
127
98
  posthog = Posthog(
128
99
  project_api_key="phc_IXvGRcscJJoIb049PtjIZ65JnXQguOUZ5B5MncunFdB",
@@ -199,11 +170,7 @@ def capture_evaluation_run(type: str):
199
170
  posthog.capture(
200
171
  distinct_id=distinct_id, event=event, properties=properties
201
172
  )
202
- # capture new relic
203
- with tracer.start_as_current_span(event) as span:
204
- for property, value in properties.items():
205
- span.set_attribute(property, value)
206
- yield span
173
+ yield
207
174
 
208
175
 
209
176
  @contextmanager
@@ -227,11 +194,7 @@ def capture_recommend_metrics():
227
194
  posthog.capture(
228
195
  distinct_id=distinct_id, event=event, properties=properties
229
196
  )
230
- # capture new relic
231
- with tracer.start_as_current_span(event) as span:
232
- for property, value in properties.items():
233
- span.set_attribute(property, value)
234
- yield span
197
+ yield
235
198
 
236
199
 
237
200
  @contextmanager
@@ -259,11 +222,7 @@ def capture_metric_type(
259
222
  posthog.capture(
260
223
  distinct_id=distinct_id, event=event, properties=properties
261
224
  )
262
- # capture new relic
263
- with tracer.start_as_current_span(event) as span:
264
- for property, value in properties.items():
265
- span.set_attribute(property, value)
266
- yield span
225
+ yield
267
226
 
268
227
 
269
228
  @contextmanager
@@ -297,11 +256,7 @@ def capture_synthesizer_run(
297
256
  posthog.capture(
298
257
  distinct_id=distinct_id, event=event, properties=properties
299
258
  )
300
- # capture new relic
301
- with tracer.start_as_current_span(event) as span:
302
- for property, value in properties.items():
303
- span.set_attribute(property, value)
304
- yield span
259
+ yield
305
260
 
306
261
 
307
262
  @contextmanager
@@ -330,11 +285,7 @@ def capture_conversation_simulator_run(num_conversations: int):
330
285
  posthog.capture(
331
286
  distinct_id=distinct_id, event=event, properties=properties
332
287
  )
333
- # capture new relic
334
- with tracer.start_as_current_span(event) as span:
335
- for property, value in properties.items():
336
- span.set_attribute(property, value)
337
- yield span
288
+ yield
338
289
 
339
290
 
340
291
  @contextmanager
@@ -360,11 +311,7 @@ def capture_guardrails(guards: List[str]):
360
311
  posthog.capture(
361
312
  distinct_id=distinct_id, event=event, properties=properties
362
313
  )
363
- # capture new relic
364
- with tracer.start_as_current_span(event) as span:
365
- for property, value in properties.items():
366
- span.set_attribute(property, value)
367
- yield span
314
+ yield
368
315
 
369
316
 
370
317
  @contextmanager
@@ -391,11 +338,7 @@ def capture_benchmark_run(benchmark: str, num_tasks: int):
391
338
  posthog.capture(
392
339
  distinct_id=distinct_id, event=event, properties=properties
393
340
  )
394
- # capture new relic
395
- with tracer.start_as_current_span(event) as span:
396
- for property, value in properties.items():
397
- span.set_attribute(property, value)
398
- yield span
341
+ yield
399
342
 
400
343
 
401
344
  @contextmanager
@@ -421,11 +364,7 @@ def capture_login_event():
421
364
  posthog.capture(
422
365
  distinct_id=distinct_id, event=event, properties=properties
423
366
  )
424
- # capture new relic
425
- with tracer.start_as_current_span(event) as span:
426
- for property, value in properties.items():
427
- span.set_attribute(property, value)
428
- yield span
367
+ yield
429
368
 
430
369
 
431
370
  @contextmanager
@@ -451,11 +390,7 @@ def capture_view_event():
451
390
  posthog.capture(
452
391
  distinct_id=distinct_id, event=event, properties=properties
453
392
  )
454
- # capture new relic
455
- with tracer.start_as_current_span(event) as span:
456
- for property, value in properties.items():
457
- span.set_attribute(property, value)
458
- yield span
393
+ yield
459
394
 
460
395
 
461
396
  @contextmanager
@@ -478,11 +413,7 @@ def capture_pull_dataset():
478
413
  posthog.capture(
479
414
  distinct_id=distinct_id, event=event, properties=properties
480
415
  )
481
- # capture new relic
482
- with tracer.start_as_current_span(event) as span:
483
- for property, value in properties.items():
484
- span.set_attribute(property, value)
485
- yield span
416
+ yield
486
417
 
487
418
 
488
419
  # track metrics that are components and metrics that aren't components
@@ -509,11 +440,7 @@ def capture_send_trace():
509
440
  posthog.capture(
510
441
  distinct_id=distinct_id, event=event, properties=properties
511
442
  )
512
- # capture new relic
513
- with tracer.start_as_current_span(event) as span:
514
- for property, value in properties.items():
515
- span.set_attribute(property, value)
516
- yield span
443
+ yield
517
444
 
518
445
 
519
446
  # tracing integration
@@ -542,13 +469,7 @@ def capture_tracing_integration(integration_name: str):
542
469
  posthog.capture(
543
470
  distinct_id=distinct_id, event=event, properties=properties
544
471
  )
545
- # capture new relic
546
- with tracer.start_as_current_span(event) as span:
547
- for property, value in properties.items():
548
- span.set_attribute(property, value)
549
- # OTEL/New Relic filtering attributes
550
- span.set_attribute("integration.name", integration_name)
551
- yield span
472
+ yield
552
473
 
553
474
 
554
475
  #########################################################
@@ -386,6 +386,7 @@ class LLMTestCase(BaseModel):
386
386
  [
387
387
  re.search(pattern, self.input or "") is not None,
388
388
  re.search(pattern, self.actual_output or "") is not None,
389
+ re.search(pattern, self.expected_output or "") is not None,
389
390
  ]
390
391
  )
391
392
  if isinstance(self.input, str)
@@ -969,9 +969,9 @@ class Observer:
969
969
  else:
970
970
  current_trace = current_trace_context.get()
971
971
  if current_trace.input is None:
972
- current_trace.input = self.function_kwargs
972
+ current_trace.input = trace_manager.mask(self.function_kwargs)
973
973
  if current_trace.output is None:
974
- current_trace.output = self.result
974
+ current_trace.output = trace_manager.mask(self.result)
975
975
  if current_span.status == TraceSpanStatus.ERRORED:
976
976
  current_trace.status = TraceSpanStatus.ERRORED
977
977
  if current_trace and current_trace.uuid == current_span.trace_uuid:
@@ -1037,7 +1037,8 @@ class Observer:
1037
1037
  return RetrieverSpan(**span_kwargs, embedder=embedder)
1038
1038
 
1039
1039
  elif self.span_type == SpanType.TOOL.value:
1040
- return ToolSpan(**span_kwargs, **self.observe_kwargs)
1040
+ description = self.observe_kwargs.get("description", None)
1041
+ return ToolSpan(**span_kwargs, description=description)
1041
1042
  else:
1042
1043
  return BaseSpan(**span_kwargs)
1043
1044
 
@@ -1107,7 +1108,7 @@ def observe(
1107
1108
  yield chunk
1108
1109
  observer.__exit__(None, None, None)
1109
1110
  except Exception as e:
1110
- observer.__exit__(type(e), e, e.__traceback__)
1111
+ observer.__exit__(e.__class__, e, e.__traceback__)
1111
1112
  raise
1112
1113
 
1113
1114
  return gen()
@@ -1150,7 +1151,7 @@ def observe(
1150
1151
  yield from original_gen
1151
1152
  observer.__exit__(None, None, None)
1152
1153
  except Exception as e:
1153
- observer.__exit__(type(e), e, e.__traceback__)
1154
+ observer.__exit__(e.__class__, e, e.__traceback__)
1154
1155
  raise
1155
1156
 
1156
1157
  return gen()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepeval
3
- Version: 3.8.0
3
+ Version: 3.8.2
4
4
  Summary: The LLM Evaluation Framework
5
5
  Home-page: https://github.com/confident-ai/deepeval
6
6
  License: Apache-2.0
@@ -1,7 +1,7 @@
1
1
  deepeval/__init__.py,sha256=tle4lT4FONApg3OeztGPEdrpGMEGLWajyGTu7bEd3s0,2976
2
- deepeval/_version.py,sha256=zzwaJLAxT4xICJZz0E72TnWZ0UtmJr0uD8CK8vnXu6I,27
2
+ deepeval/_version.py,sha256=A8HjzlffHmJot3rBAExqN_D-QxaG8UT8zqiP26xCL2M,27
3
3
  deepeval/annotation/__init__.py,sha256=ZFhUVNNuH_YgQSZJ-m5E9iUb9TkAkEV33a6ouMDZ8EI,111
4
- deepeval/annotation/annotation.py,sha256=3j3-syeJepAcEj3u3e4T_BeRDzNr7yXGDIoNQGMKpwQ,2298
4
+ deepeval/annotation/annotation.py,sha256=WLFZRkx6wRJcNzaOMMGXuTfw6Q1_1Mv5A4jpD7Ea4sU,2300
5
5
  deepeval/annotation/api.py,sha256=EYN33ACVzVxsFleRYm60KB4Exvff3rPJKt1VBuuX970,2147
6
6
  deepeval/anthropic/__init__.py,sha256=D-ZcS8ifsHftChpoZaiCTCBr5oh7jHAP0SrufJx6rCU,595
7
7
  deepeval/anthropic/extractors.py,sha256=BKw8oVoyE3vxjO9IlZ2AeJ_CSM7viaCTFOqgu-4Vqik,2892
@@ -142,19 +142,19 @@ deepeval/cli/test.py,sha256=aoBPMfk0HTvOqb2xdvMykkx_s4SHst7lEnoUiSXo1lU,5483
142
142
  deepeval/cli/types.py,sha256=_7KdthstHNc-JKCWrfpDQCf_j8h9PMxh0qJCHmVXJr0,310
143
143
  deepeval/cli/utils.py,sha256=3fgH5WPTTe7Cz_QOLCHyflXB81kmFaSxXHJ2tnxvFLw,10649
144
144
  deepeval/confident/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
145
- deepeval/confident/api.py,sha256=3TpuZm59xo1_APsAPppreCRepf8pfGWksMmgxnwp764,8773
145
+ deepeval/confident/api.py,sha256=rxMNMK5VYPQKdEDSRsovlULV14QlGW3TNDkARLj_Pt4,9589
146
146
  deepeval/confident/types.py,sha256=9bgePDaU31yY7JGwCLZcc7pev9VGtNDZLbjsVpCLVdc,574
147
147
  deepeval/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
148
  deepeval/config/dotenv_handler.py,sha256=lOosoC7fm9RljriY8EFl5ywSGfSiQsVf_vmYqzpbZ8s,588
149
149
  deepeval/config/logging.py,sha256=ivqmhOSB-oHOOU3MvnhImrZwkkxzxKJgoKxesnWfHjg,1314
150
- deepeval/config/settings.py,sha256=l5wvTEyG7KgWoY6F4Gc0j19oZef151r20Z8fZsiXR_U,57004
150
+ deepeval/config/settings.py,sha256=rGigXXW5r50tyWtNhBYL_cZnTRGxsm71A6fBAmHawpk,57117
151
151
  deepeval/config/settings_manager.py,sha256=Ynebm2BKDrzajc6DEq2eYIwyRAAtUQOkTnl46albxLk,4187
152
152
  deepeval/config/utils.py,sha256=bJGljeAXoEYuUlYSvHSOsUnqINTwo6wOwfFHFpWxiaQ,4238
153
153
  deepeval/constants.py,sha256=MvwjLC1IHUY35FnnSsWVcHScmdbYBbPr8eTnsLWn40Y,1697
154
154
  deepeval/contextvars.py,sha256=oqXtuYiKd4Zvc1rNoR1gcRBxzZYCGTMVn7XostwvkRI,524
155
155
  deepeval/dataset/__init__.py,sha256=N2c-rkuxWYiiJSOZArw0H02Cwo7cnfzFuNYJlvsIBEg,249
156
156
  deepeval/dataset/api.py,sha256=bZ95HfIaxYB1IwTnp7x4AaKXWuII17T5uqVkhUXNc7I,1650
157
- deepeval/dataset/dataset.py,sha256=Y9U-hVoa5BbnlzwJiFiDTkDcp9E6VmKOd7NtyLmdpHY,59182
157
+ deepeval/dataset/dataset.py,sha256=0tZaMVzhgnyWkwEBLcDW-MQQjIx0zCWuFSJPkgcDNMY,59402
158
158
  deepeval/dataset/golden.py,sha256=zuUUih0PBuHGaXo0zNyzwGLL-PT-ScZ3vofexDBuBzY,7326
159
159
  deepeval/dataset/test_run_tracer.py,sha256=RiINq8743l0D1M0FKuQRN05v0-xO4BYdUp1xHjHSGAo,2514
160
160
  deepeval/dataset/types.py,sha256=CWeOIBPK2WdmRUqjFa9gfN-w2da0r8Ilzl3ToDpJQoQ,558
@@ -180,16 +180,16 @@ deepeval/integrations/hugging_face/rich_manager.py,sha256=WvFtPGpPmGeg2Ftsnojga6
180
180
  deepeval/integrations/hugging_face/tests/test_callbacks.py,sha256=88Wyg-aDaXujj9jHeGdFF3ITSl2-y7eaJGWgSyvvDi8,4607
181
181
  deepeval/integrations/hugging_face/utils.py,sha256=HUKdQcTIb76Ct69AS737oPxmlVxk5fw2UbT2pLn-o8k,1817
182
182
  deepeval/integrations/langchain/__init__.py,sha256=G1Qey5WkKou2-PA34KwWgmayQ_TbvXqPyotTbzmD8tw,84
183
- deepeval/integrations/langchain/callback.py,sha256=1K5KxpND6XEKCWnz-DWjhbO35AzmM3M8PIlk6bTYO2k,20360
183
+ deepeval/integrations/langchain/callback.py,sha256=uZrhmlzw2dcFunqQzNPfMo9vWkHCX7PbGbazKRhBbBY,32687
184
184
  deepeval/integrations/langchain/patch.py,sha256=fCHfZXU9xX3IJ6SG8GEYzn3qrifyUkT0i_uUABTsmcs,1255
185
- deepeval/integrations/langchain/utils.py,sha256=oYsQYO3Ucbmd1d7gkb5ARd60gm6BHtLy_5OOqUw8HIQ,11311
185
+ deepeval/integrations/langchain/utils.py,sha256=mhv0anU5ZnbBsESMuCooT9FSNPkx2ObrVLlq7QNEZOI,13104
186
186
  deepeval/integrations/llama_index/__init__.py,sha256=Ujs9ZBJFkuCWUDBJOF88UbM1Y-S6QFQhxSo0oQnEWNw,90
187
187
  deepeval/integrations/llama_index/handler.py,sha256=uTvNXmAF4xBh8t9bBm5sBFX6ETp8SrkOZlFlE_GWdmM,10771
188
188
  deepeval/integrations/llama_index/utils.py,sha256=onmmo1vpn6cpOY5EhfTc0Uui7X6l1M0HD3sq-KVAesg,3380
189
189
  deepeval/integrations/pydantic_ai/__init__.py,sha256=UIkXn_g6h9LTQXG1PaWu1eCFkCssIwG48WSvN46UWgU,202
190
190
  deepeval/integrations/pydantic_ai/agent.py,sha256=-NKvpTUw3AxRNhuxVFcx9mw5BWCujzOwsaC8u7K0ubc,1178
191
- deepeval/integrations/pydantic_ai/instrumentator.py,sha256=Us9LSYZWMfaeAc7PGXMDYWzjWKFVmhRvZrFhSvmk448,11922
192
- deepeval/integrations/pydantic_ai/otel.py,sha256=CCqwCJ5pHqCzHgujHQqZy7Jxo2PH1BT0kR7QxdtzutY,2060
191
+ deepeval/integrations/pydantic_ai/instrumentator.py,sha256=COqw4FJsUZacaP4Dfn1aaOXvUTvZOuhcqqQD-_sLD04,13047
192
+ deepeval/integrations/pydantic_ai/otel.py,sha256=xWYnMT1HwcAmyWdoJa6C1sHwd5frP9_IcR8dj9sKsG0,2386
193
193
  deepeval/integrations/pydantic_ai/test_instrumentator.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
194
194
  deepeval/key_handler.py,sha256=lajMBgF2lCzbQpW4e6Y7cD9FOw0Qk5UOKS4_kIIHj6Y,9562
195
195
  deepeval/metrics/__init__.py,sha256=19Df323r8aAlx2sRfV9BHJLicORhTLpogR8M1deJetw,4680
@@ -217,8 +217,8 @@ deepeval/metrics/contextual_precision/contextual_precision.py,sha256=hfjRzRCEjrq
217
217
  deepeval/metrics/contextual_precision/schema.py,sha256=NVJjkfdEc72u9M0lx0EyHe8-J1XUkCPFwU3v3xdZK5A,278
218
218
  deepeval/metrics/contextual_precision/template.py,sha256=OozJGaNGvBjMk87_-87PQN9Ky-OhBZjlYk_7HqJ_-Ts,6166
219
219
  deepeval/metrics/contextual_recall/__init__.py,sha256=WMaP3SE8g0oh6mdnfvLBmjjgYV0WkBMg0YRuYNrTxcI,47
220
- deepeval/metrics/contextual_recall/contextual_recall.py,sha256=_lBw6XR36y9nleJez4Z2HWXyHJGoH6gAaFTGEo6PE70,9977
221
- deepeval/metrics/contextual_recall/schema.py,sha256=3ZKUE-ec99R5wYYDwv8kFWfypfWZTqlfnTcO3Pt_DXA,269
220
+ deepeval/metrics/contextual_recall/contextual_recall.py,sha256=7OUHwaJ-YHxjDN_WXo90kWDPcromnChtikfLxj8JV6c,10692
221
+ deepeval/metrics/contextual_recall/schema.py,sha256=s9l50XUWa-GyDegB9oz9dGSHfRN43HkPciIzfqpyzRg,373
222
222
  deepeval/metrics/contextual_recall/template.py,sha256=00KHbcs9PF37MSBKAKoEd7LgIOLYP8NJnVI0ghiO7S8,6012
223
223
  deepeval/metrics/contextual_relevancy/__init__.py,sha256=u3k3j3-DsCX0cF59An-hGP6KT-dkINgDyDqDRKFdzTs,50
224
224
  deepeval/metrics/contextual_relevancy/contextual_relevancy.py,sha256=QeCYwMiUD9uo-pbigh3sBKDFTW_DkGs6nzfizUl2Q84,9850
@@ -286,7 +286,7 @@ deepeval/metrics/misuse/schema.py,sha256=UkPlbNXbDS8LyGfiEtMWv-odTG3q1ykzyXkXtmx
286
286
  deepeval/metrics/misuse/template.py,sha256=afVNb5JJyb_1WJPhfxmvn2bfAzUo8NPafO4S2eGWZyo,3116
287
287
  deepeval/metrics/multimodal_metrics/__init__.py,sha256=fXYb6Qm_iKjuZMFH8QO02LvDSwkkalmPnBK5iDSechk,323
288
288
  deepeval/metrics/multimodal_metrics/image_coherence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
289
- deepeval/metrics/multimodal_metrics/image_coherence/image_coherence.py,sha256=Xc80SZY-nxE49TNvJ6W6c-Lq3YNUXSDtPAp8gq2lrF8,13461
289
+ deepeval/metrics/multimodal_metrics/image_coherence/image_coherence.py,sha256=5UxUHIPQVUNpvaqSeDXioyTIezisPz6FtOG_SSVhdDM,13941
290
290
  deepeval/metrics/multimodal_metrics/image_coherence/schema.py,sha256=NB38VAmRE5bZtCeSbOWMa7_nHBSBdEWndyEYWFh0aUA,123
291
291
  deepeval/metrics/multimodal_metrics/image_coherence/template.py,sha256=bOXqf3xo3A6u6toFkFYFcIayYv1UsBtI6sK_hTQQuhA,1788
292
292
  deepeval/metrics/multimodal_metrics/image_editing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -294,11 +294,11 @@ deepeval/metrics/multimodal_metrics/image_editing/image_editing.py,sha256=35FRCQ
294
294
  deepeval/metrics/multimodal_metrics/image_editing/schema.py,sha256=ygt_RGnVlYh__mVCAMBsIFTQgLCk6hh0MPteomZX9UU,136
295
295
  deepeval/metrics/multimodal_metrics/image_editing/template.py,sha256=KuDaJZbNikn4Jw6U1tF6YbVzHp-nARW2iTw3zxaJNXI,3104
296
296
  deepeval/metrics/multimodal_metrics/image_helpfulness/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
297
- deepeval/metrics/multimodal_metrics/image_helpfulness/image_helpfulness.py,sha256=dAd5B3A0cHSvZTEBao2ptTsFoUmf1EiXCuvSZYxwVYg,13488
297
+ deepeval/metrics/multimodal_metrics/image_helpfulness/image_helpfulness.py,sha256=4AC1v641vhi_JcMCO5WtbbplMs8_4J9mgWzOdFgH5vA,13968
298
298
  deepeval/metrics/multimodal_metrics/image_helpfulness/schema.py,sha256=NB38VAmRE5bZtCeSbOWMa7_nHBSBdEWndyEYWFh0aUA,123
299
299
  deepeval/metrics/multimodal_metrics/image_helpfulness/template.py,sha256=mu2tDUN_IeGAGfyZ7q2YaFepsWr8KnlXRIOyXUI9O0s,1884
300
300
  deepeval/metrics/multimodal_metrics/image_reference/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
301
- deepeval/metrics/multimodal_metrics/image_reference/image_reference.py,sha256=xMyt4IcbNJe9v4mFxhdIZ1QHsx8sQb8F3fP83ugscQw,13462
301
+ deepeval/metrics/multimodal_metrics/image_reference/image_reference.py,sha256=hoYSTIkl5KEXfrVk6Og3XAZ9LRIP_lXt6bIjEp_ZRbY,13942
302
302
  deepeval/metrics/multimodal_metrics/image_reference/schema.py,sha256=NB38VAmRE5bZtCeSbOWMa7_nHBSBdEWndyEYWFh0aUA,123
303
303
  deepeval/metrics/multimodal_metrics/image_reference/template.py,sha256=GdBGZu6atdmPaZfolWXF26wbxVFR2CSNMsYXEHSzDnU,1787
304
304
  deepeval/metrics/multimodal_metrics/text_to_image/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -384,7 +384,7 @@ deepeval/metrics/turn_relevancy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
384
384
  deepeval/metrics/turn_relevancy/schema.py,sha256=om0zFJcM6qu2GWS9aJTP3lUmuEXX8KpoACEvCsJqfq4,234
385
385
  deepeval/metrics/turn_relevancy/template.py,sha256=k02QVclRtCTVBZ7Xd4f-LdTrSO_dBxquQiFYqRYmiSA,3245
386
386
  deepeval/metrics/turn_relevancy/turn_relevancy.py,sha256=gMx5o5vfPJjVKior96L_A-4o3IoAyxSoTgI8U9sJtRY,9468
387
- deepeval/metrics/utils.py,sha256=RS8gsEh__DaKhXjdDfNcw1iOVvN40Z1mbQHM21Q30Iw,21371
387
+ deepeval/metrics/utils.py,sha256=osdTrK0jMiMynfks3uUFx6KmhcbRmr41ZXoGMisx2xY,21932
388
388
  deepeval/model_integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
389
389
  deepeval/model_integrations/types.py,sha256=rbVMhC_2yWwD6JqzkRO9D7aMVC_KtXN686G_S7de7S8,630
390
390
  deepeval/model_integrations/utils.py,sha256=Zt9SYPgTxlGsQFZgpZvh_a5fWuL8mmIFVSe6uoQywZ4,3562
@@ -400,12 +400,12 @@ deepeval/models/embedding_models/ollama_embedding_model.py,sha256=4uxrzdBlpWT-SM
400
400
  deepeval/models/embedding_models/openai_embedding_model.py,sha256=S8uvWODbiTF4EYfeID5yEF0YvYkDs1dP_Kiur4sb67M,4477
401
401
  deepeval/models/hallucination_model.py,sha256=ABi978VKLE_jNHbDzM96kJ08EsZ5ZlvOlJHA_ptSkfQ,1003
402
402
  deepeval/models/llms/__init__.py,sha256=Mlkvw9eIbxJXJjTB9Nj0LoL-kSRCmewrEihDvFyzvJA,799
403
- deepeval/models/llms/amazon_bedrock_model.py,sha256=mgBdGhyZo0SU0OMzqWAF6pUlQMUuCCdDiordfinDNpM,10898
403
+ deepeval/models/llms/amazon_bedrock_model.py,sha256=iZR-T4DwXVHaWEJmcEKqjPOinS2ae9XZHie2P6I9CvU,12335
404
404
  deepeval/models/llms/anthropic_model.py,sha256=08_nGK5EoGpf_F0I6JkhrEAswDc9DjLQqGYMX3emsoQ,10542
405
- deepeval/models/llms/azure_model.py,sha256=Nc_LgA8rEhkldvdhccNojERaviaBg6jyfBVL9bGdKek,16673
405
+ deepeval/models/llms/azure_model.py,sha256=8MrcQLXp-f2-tXTcBQTF7yKGeCuoSJmPleG3WcfjaH4,17793
406
406
  deepeval/models/llms/constants.py,sha256=H6_FyTNkfF0wr3R8qUlvT2LuZGT5lbXFh9Hcq5T8A8k,72008
407
407
  deepeval/models/llms/deepseek_model.py,sha256=OzEs0hnSixqICurVFo6T5GBAUeDrnWOlooEyJrgi5zE,8565
408
- deepeval/models/llms/gemini_model.py,sha256=h01bJnLBnc1xaqoVSBOL-PwllCsHRkA88bp21BA0Mws,15552
408
+ deepeval/models/llms/gemini_model.py,sha256=drALKVMVtMRZGIrzbEhmL6x_6ztbSVhXsqRgrSCxVc0,15691
409
409
  deepeval/models/llms/grok_model.py,sha256=zGU1WzKADrgap5NQJTDb6BY4SZNNJqAZ6phnK_HFJqw,10703
410
410
  deepeval/models/llms/kimi_model.py,sha256=n5w2MeeKSMS7HvSpiDSQueZ2EQSv3c6pDb-C-ASHGwE,10441
411
411
  deepeval/models/llms/litellm_model.py,sha256=lWfJvzWia7XCrLiRTNF0fUQXYOalsLV1y3Tq03loDP4,16533
@@ -461,14 +461,14 @@ deepeval/plugins/plugin.py,sha256=_dwsdx4Dg9DbXxK3f7zJY4QWTJQWc7QE1HmIg2Zjjag,15
461
461
  deepeval/progress_context.py,sha256=ZSKpxrE9sdgt9G3REKnVeXAv7GJXHHVGgLynpG1Pudw,3557
462
462
  deepeval/prompt/__init__.py,sha256=rDU99KjydxDRKhuQJCBs_bpDJrWb2mpHtvyv6AEwFC8,367
463
463
  deepeval/prompt/api.py,sha256=DNhKouq3ntEKmN_VegNh5X1gu_2RGJwzBp07rEEyg6s,6359
464
- deepeval/prompt/prompt.py,sha256=waaQDrTXQQUzOIJbOYtUpoa4qsuXgmzObUwFH-wRx2Y,31654
464
+ deepeval/prompt/prompt.py,sha256=Ob1cIR2cLFoVzEpx2iCMDRIRT9rqAd3xQKnnOuZkg2A,31904
465
465
  deepeval/prompt/utils.py,sha256=knjgPU2066OtYWMb3NqMPChr9zQgKfXo_QTLTtSkmYg,7620
466
466
  deepeval/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
467
467
  deepeval/red_teaming/README.md,sha256=BY5rAdpp3-sMMToEKwq0Nsd9ivkGDzPE16DeDb8GY7U,154
468
468
  deepeval/scorer/__init__.py,sha256=hTvtoV3a4l0dSBjERm-jX7jveTtKZXK0c9JerQo0T_w,27
469
469
  deepeval/scorer/scorer.py,sha256=EmXo1wEMMAL2it8WxNJ4cTqZLCH1ad4BY2VewoX6b10,18348
470
470
  deepeval/simulator/__init__.py,sha256=wkyevg9nh46rsVnVrBjY3K5bHlkqjwx4TtrTfyjDCO0,96
471
- deepeval/simulator/conversation_simulator.py,sha256=I3YotQiAjPY8nvaC8pe_HDcwkzU78XTT88USj4D0Tr4,27208
471
+ deepeval/simulator/conversation_simulator.py,sha256=RfCZZmxiKNiSmd_g9CN-Un_ekkqeyDARP3aXcj3rUck,27282
472
472
  deepeval/simulator/schema.py,sha256=16X2-m92plP52YTd-dvECt_-6gsz0U4j7Ut3UdI6gKY,252
473
473
  deepeval/simulator/template.py,sha256=6wh6xiUaZQn-pvkBWgOK7pWfsv5nntgjGfTqUkcKn0A,6461
474
474
  deepeval/singleton.py,sha256=irNbt0-IRI7rD4t05OZHsrNovpeva0XPc8PoieFytG8,532
@@ -486,12 +486,12 @@ deepeval/synthesizer/templates/template_extraction.py,sha256=jmvr8AOOUzDgsHYIOsq
486
486
  deepeval/synthesizer/templates/template_prompt.py,sha256=bzfC71AXZqBrmoDWmBvuIQKD6hPJZ0ZAWX4hy-lPlnQ,21478
487
487
  deepeval/synthesizer/types.py,sha256=wUZntvCAE29sM9K8hk9RPwUpkTip1ObOCExyMEo3sME,493
488
488
  deepeval/synthesizer/utils.py,sha256=o-9z5gApQcHqDqusgrD0LagXWAju17LVc27BxtaA7og,1018
489
- deepeval/telemetry.py,sha256=0k6oVhRBi1Ap6JC6SNe_9-nBnlG-uReUoS3KTrPayhk,21716
489
+ deepeval/telemetry.py,sha256=VSPAv1XWS0jzDIjPzgAg42WDfYgqaR4Iwi8RrM_aPns,18041
490
490
  deepeval/test_case/__init__.py,sha256=i1hIGeE_J1Zm-KmDVFqmogvBKzyOlIsENrfhL-3B8_M,658
491
491
  deepeval/test_case/api.py,sha256=i9e1ggt4O9w_cu7tMSArw-LkiIZ_u_WPgpM2YAhfgks,3408
492
492
  deepeval/test_case/arena_test_case.py,sha256=ngEU5_-YVQ-qPSOVVuSUJ_nuvdQR-MGA_QZQst5c8MI,1482
493
493
  deepeval/test_case/conversational_test_case.py,sha256=kgZ3Ppj3dIKu_gERHEmqcU1AaKyBb7FOPUfoRksJmvY,10053
494
- deepeval/test_case/llm_test_case.py,sha256=92fc6c2bT1rMb8X2U9H76K6b8StgVtC6406cVZWtZBw,18893
494
+ deepeval/test_case/llm_test_case.py,sha256=pYyoNY-Q16LkQg9tj0OETMt9lIxTQ9feZI56MAfj2_g,18973
495
495
  deepeval/test_case/mcp.py,sha256=Z625NLvz0E_UJpbyfyuAi_4nsqKH6DByBf0rfKd70xU,1879
496
496
  deepeval/test_case/utils.py,sha256=uOeHza_H9epIMSmy63w9skrsmy0erGLFMDhtsd5_Hms,684
497
497
  deepeval/test_run/__init__.py,sha256=cwH9sqz821ifdcviZiO3EajsYbh7GaUxA4LFur8g2ms,787
@@ -516,12 +516,12 @@ deepeval/tracing/patchers.py,sha256=Oi9wao3oDYhcviv7p0KoWBeS9ne7rHLa2gh9AR9EyiU,
516
516
  deepeval/tracing/perf_epoch_bridge.py,sha256=iyAPddB6Op7NpMtPHJ29lDm53Btz9yLaN6xSCfTRQm4,1825
517
517
  deepeval/tracing/trace_context.py,sha256=Z0n0Cu1A5g9dXiZnzTFO5TzeOYHKeNuO6v3_EU_Gi_c,3568
518
518
  deepeval/tracing/trace_test_manager.py,sha256=wt4y7EWTRc4Bw938-UFFtXHkdFFOrnx6JaIk7J5Iulw,555
519
- deepeval/tracing/tracing.py,sha256=AkbmgjWzSQ2k2qeN9i8LT17MsafuBenzzkP0r31I950,46728
519
+ deepeval/tracing/tracing.py,sha256=ge3XXJkxlmCk5KfrqOOjxXIuA1CIXFOKJxhRTmXRSVQ,46849
520
520
  deepeval/tracing/types.py,sha256=3QkF0toQ6f0fEDARYOUV6Iv9UJFbg14kSpn3dL1H5CE,6040
521
521
  deepeval/tracing/utils.py,sha256=mdvhYAxDNsdnusaEXJd-c-_O2Jn6S3xSuzRvLO1Jz4U,5684
522
522
  deepeval/utils.py,sha256=Wsu95g6t1wdttxWIESVwuUxbml7C-9ZTsV7qHCQI3Xg,27259
523
- deepeval-3.8.0.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
524
- deepeval-3.8.0.dist-info/METADATA,sha256=z7OpguZITPdv0S9jhvE6CEq-zVCSq9fvbKChLKD9gwc,18752
525
- deepeval-3.8.0.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
526
- deepeval-3.8.0.dist-info/entry_points.txt,sha256=NoismUQfwLOojSGZmBrdcpwfaoFRAzUhBvZD3UwOKog,95
527
- deepeval-3.8.0.dist-info/RECORD,,
523
+ deepeval-3.8.2.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
524
+ deepeval-3.8.2.dist-info/METADATA,sha256=SUHVBa7pgBKF2XG3L3c_cItJWvuCdAQxzQSctzeAezQ,18752
525
+ deepeval-3.8.2.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
526
+ deepeval-3.8.2.dist-info/entry_points.txt,sha256=NoismUQfwLOojSGZmBrdcpwfaoFRAzUhBvZD3UwOKog,95
527
+ deepeval-3.8.2.dist-info/RECORD,,