deepeval 3.5.1__py3-none-any.whl → 3.5.3__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 (39) hide show
  1. deepeval/_version.py +1 -1
  2. deepeval/config/settings.py +94 -2
  3. deepeval/config/utils.py +54 -1
  4. deepeval/constants.py +27 -0
  5. deepeval/integrations/langchain/__init__.py +2 -3
  6. deepeval/integrations/langchain/callback.py +126 -301
  7. deepeval/integrations/langchain/patch.py +24 -13
  8. deepeval/integrations/langchain/utils.py +203 -1
  9. deepeval/integrations/pydantic_ai/patcher.py +220 -185
  10. deepeval/integrations/pydantic_ai/utils.py +86 -0
  11. deepeval/metrics/conversational_g_eval/conversational_g_eval.py +1 -0
  12. deepeval/metrics/pii_leakage/pii_leakage.py +1 -1
  13. deepeval/models/embedding_models/azure_embedding_model.py +40 -9
  14. deepeval/models/embedding_models/local_embedding_model.py +54 -11
  15. deepeval/models/embedding_models/ollama_embedding_model.py +25 -7
  16. deepeval/models/embedding_models/openai_embedding_model.py +47 -5
  17. deepeval/models/llms/amazon_bedrock_model.py +31 -4
  18. deepeval/models/llms/anthropic_model.py +39 -13
  19. deepeval/models/llms/azure_model.py +37 -38
  20. deepeval/models/llms/deepseek_model.py +36 -7
  21. deepeval/models/llms/gemini_model.py +10 -0
  22. deepeval/models/llms/grok_model.py +50 -3
  23. deepeval/models/llms/kimi_model.py +37 -7
  24. deepeval/models/llms/local_model.py +38 -12
  25. deepeval/models/llms/ollama_model.py +15 -3
  26. deepeval/models/llms/openai_model.py +37 -44
  27. deepeval/models/mlllms/gemini_model.py +21 -3
  28. deepeval/models/mlllms/ollama_model.py +38 -13
  29. deepeval/models/mlllms/openai_model.py +18 -42
  30. deepeval/models/retry_policy.py +548 -64
  31. deepeval/prompt/api.py +13 -9
  32. deepeval/prompt/prompt.py +19 -9
  33. deepeval/tracing/tracing.py +87 -0
  34. deepeval/utils.py +12 -0
  35. {deepeval-3.5.1.dist-info → deepeval-3.5.3.dist-info}/METADATA +1 -1
  36. {deepeval-3.5.1.dist-info → deepeval-3.5.3.dist-info}/RECORD +39 -38
  37. {deepeval-3.5.1.dist-info → deepeval-3.5.3.dist-info}/LICENSE.md +0 -0
  38. {deepeval-3.5.1.dist-info → deepeval-3.5.3.dist-info}/WHEEL +0 -0
  39. {deepeval-3.5.1.dist-info → deepeval-3.5.3.dist-info}/entry_points.txt +0 -0
deepeval/prompt/api.py CHANGED
@@ -19,26 +19,29 @@ class PromptType(Enum):
19
19
  TEXT = "TEXT"
20
20
  LIST = "LIST"
21
21
 
22
+
22
23
  class PromptVersion(BaseModel):
23
24
  id: str
24
25
  version: str
25
26
  commit_message: str = Field(
26
- serialization_alias="commitMessage",
27
- validation_alias=AliasChoices("commit_message", "commitMessage")
27
+ serialization_alias="commitMessage",
28
+ validation_alias=AliasChoices("commit_message", "commitMessage"),
28
29
  )
29
30
 
31
+
30
32
  class PromptVersionsHttpResponse(BaseModel):
31
33
  text_versions: Optional[List[PromptVersion]] = Field(
32
- None,
33
- serialization_alias="textVersions",
34
- validation_alias=AliasChoices("text_versions", "textVersions")
34
+ None,
35
+ serialization_alias="textVersions",
36
+ validation_alias=AliasChoices("text_versions", "textVersions"),
35
37
  )
36
38
  messages_versions: Optional[List[PromptVersion]] = Field(
37
- None,
38
- serialization_alias="messagesVersions",
39
- validation_alias=AliasChoices("messages_versions", "messagesVersions")
39
+ None,
40
+ serialization_alias="messagesVersions",
41
+ validation_alias=AliasChoices("messages_versions", "messagesVersions"),
40
42
  )
41
43
 
44
+
42
45
  class PromptHttpResponse(BaseModel):
43
46
  id: str
44
47
  text: Optional[str] = None
@@ -48,6 +51,7 @@ class PromptHttpResponse(BaseModel):
48
51
  )
49
52
  type: PromptType
50
53
 
54
+
51
55
  class PromptPushRequest(BaseModel):
52
56
  alias: str
53
57
  text: Optional[str] = None
@@ -62,4 +66,4 @@ class PromptPushRequest(BaseModel):
62
66
 
63
67
  class PromptApi(BaseModel):
64
68
  id: str
65
- type: PromptType
69
+ type: PromptType
deepeval/prompt/prompt.py CHANGED
@@ -19,7 +19,10 @@ from deepeval.prompt.api import (
19
19
  from deepeval.prompt.utils import interpolate_text
20
20
  from deepeval.confident.api import Api, Endpoints, HttpMethods
21
21
  from deepeval.constants import HIDDEN_DIR
22
- from deepeval.utils import get_or_create_event_loop
22
+ from deepeval.utils import (
23
+ get_or_create_event_loop,
24
+ get_or_create_general_event_loop,
25
+ )
23
26
 
24
27
  CACHE_FILE_NAME = f"{HIDDEN_DIR}/.deepeval-prompt-cache.json"
25
28
 
@@ -111,7 +114,7 @@ class Prompt:
111
114
  return interpolated_messages
112
115
  else:
113
116
  raise ValueError(f"Unsupported prompt type: {self._type}")
114
-
117
+
115
118
  def _get_versions(self) -> List:
116
119
  if self.alias is None:
117
120
  raise ValueError(
@@ -214,10 +217,11 @@ class Prompt:
214
217
  )
215
218
 
216
219
  # Manage background prompt polling
217
- loop = get_or_create_event_loop()
218
- loop.run_until_complete(
219
- self.create_polling_task(version, refresh)
220
- )
220
+ loop = get_or_create_general_event_loop()
221
+ if loop.is_running():
222
+ loop.create_task(self.create_polling_task(version, refresh))
223
+ else:
224
+ loop.run_until_complete(self.create_polling_task(version, refresh))
221
225
 
222
226
  if default_to_cache:
223
227
  try:
@@ -251,7 +255,10 @@ class Prompt:
251
255
  data, _ = api.send_request(
252
256
  method=HttpMethods.GET,
253
257
  endpoint=Endpoints.PROMPTS_VERSION_ID_ENDPOINT,
254
- url_params={"alias": self.alias, "versionId": version or "latest"},
258
+ url_params={
259
+ "alias": self.alias,
260
+ "versionId": version or "latest",
261
+ },
255
262
  )
256
263
  response = PromptHttpResponse(
257
264
  id=data["id"],
@@ -393,7 +400,10 @@ class Prompt:
393
400
  data, _ = api.send_request(
394
401
  method=HttpMethods.GET,
395
402
  endpoint=Endpoints.PROMPTS_VERSION_ID_ENDPOINT,
396
- url_params={"alias": self.alias, "versionId": version or "latest"},
403
+ url_params={
404
+ "alias": self.alias,
405
+ "versionId": version or "latest",
406
+ },
397
407
  )
398
408
  response = PromptHttpResponse(
399
409
  id=data["id"],
@@ -413,4 +423,4 @@ class Prompt:
413
423
  except Exception as e:
414
424
  pass
415
425
 
416
- await asyncio.sleep(self._refresh_map[version])
426
+ await asyncio.sleep(self._refresh_map[version])
@@ -967,6 +967,93 @@ def observe(
967
967
  def decorator(func):
968
968
  func_name = func.__name__ # Get func_name outside wrappers
969
969
 
970
+ # Async generator function
971
+ if inspect.isasyncgenfunction(func):
972
+
973
+ @functools.wraps(func)
974
+ def asyncgen_wrapper(*args, **func_kwargs):
975
+
976
+ sig = inspect.signature(func)
977
+ bound = sig.bind(*args, **func_kwargs)
978
+ bound.apply_defaults()
979
+
980
+ complete_kwargs = dict(bound.arguments)
981
+ if "self" in complete_kwargs:
982
+ complete_kwargs["self"] = replace_self_with_class_name(
983
+ complete_kwargs["self"]
984
+ )
985
+ observer_kwargs = {
986
+ "observe_kwargs": observe_kwargs,
987
+ "function_kwargs": complete_kwargs,
988
+ }
989
+
990
+ observer = Observer(
991
+ type,
992
+ metrics=metrics,
993
+ metric_collection=metric_collection,
994
+ func_name=func_name,
995
+ **observer_kwargs,
996
+ )
997
+ observer.__enter__()
998
+ agen = func(*args, **func_kwargs)
999
+
1000
+ async def gen():
1001
+ try:
1002
+ async for chunk in agen:
1003
+ yield chunk
1004
+ observer.__exit__(None, None, None)
1005
+ except Exception as e:
1006
+ observer.__exit__(type(e), e, e.__traceback__)
1007
+ raise
1008
+
1009
+ return gen()
1010
+
1011
+ setattr(asyncgen_wrapper, "_is_deepeval_observed", True)
1012
+ return asyncgen_wrapper
1013
+
1014
+ # Sync generator function
1015
+ if inspect.isgeneratorfunction(func):
1016
+
1017
+ @functools.wraps(func)
1018
+ def gen_wrapper(*args, **func_kwargs):
1019
+
1020
+ sig = inspect.signature(func)
1021
+ bound = sig.bind(*args, **func_kwargs)
1022
+ bound.apply_defaults()
1023
+ complete_kwargs = dict(bound.arguments)
1024
+
1025
+ if "self" in complete_kwargs:
1026
+ complete_kwargs["self"] = replace_self_with_class_name(
1027
+ complete_kwargs["self"]
1028
+ )
1029
+ observer_kwargs = {
1030
+ "observe_kwargs": observe_kwargs,
1031
+ "function_kwargs": make_json_serializable(complete_kwargs),
1032
+ }
1033
+
1034
+ observer = Observer(
1035
+ type,
1036
+ metrics=metrics,
1037
+ metric_collection=metric_collection,
1038
+ func_name=func_name,
1039
+ **observer_kwargs,
1040
+ )
1041
+ observer.__enter__()
1042
+ original_gen = func(*args, **func_kwargs)
1043
+
1044
+ def gen():
1045
+ try:
1046
+ yield from original_gen
1047
+ observer.__exit__(None, None, None)
1048
+ except Exception as e:
1049
+ observer.__exit__(type(e), e, e.__traceback__)
1050
+ raise
1051
+
1052
+ return gen()
1053
+
1054
+ setattr(gen_wrapper, "_is_deepeval_observed", True)
1055
+ return gen_wrapper
1056
+
970
1057
  if asyncio.iscoroutinefunction(func):
971
1058
 
972
1059
  @functools.wraps(func)
deepeval/utils.py CHANGED
@@ -148,6 +148,18 @@ def get_or_create_event_loop() -> asyncio.AbstractEventLoop:
148
148
  return loop
149
149
 
150
150
 
151
+ def get_or_create_general_event_loop() -> asyncio.AbstractEventLoop:
152
+ try:
153
+ loop = asyncio.get_event_loop()
154
+ if loop.is_closed():
155
+ raise RuntimeError
156
+ return loop
157
+ except RuntimeError:
158
+ loop = asyncio.new_event_loop()
159
+ asyncio.set_event_loop(loop)
160
+ return loop
161
+
162
+
151
163
  def set_should_skip_on_missing_params(yes: bool):
152
164
  s = get_settings()
153
165
  with s.edit(persist=False):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepeval
3
- Version: 3.5.1
3
+ Version: 3.5.3
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=6fsb813LD_jNhqR-xZnSdE5E-KsBbC3tc4oIg5ZMgTw,2115
2
- deepeval/_version.py,sha256=4-DIaf0_guINnwTWGKRHVcep723FM_T7p_K6jccjok0,27
2
+ deepeval/_version.py,sha256=FauBIJ2kq1CmkcSxNhoO0BZN8gc3azHQFgdBkDjya18,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
@@ -141,10 +141,10 @@ deepeval/confident/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVG
141
141
  deepeval/confident/api.py,sha256=bOC71TaVAEgoXFtJ9yMo0-atmUUdBuvaclMGczMcR6o,8455
142
142
  deepeval/confident/types.py,sha256=-slFhDof_1maMgpLxqDRZv6kz6ZVY2hP_0uj_aveJKU,533
143
143
  deepeval/config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
- deepeval/config/settings.py,sha256=e7sk6_3I14hG457e75DoJd9Ojo3rOkpBZzsMYlj4gKQ,18139
144
+ deepeval/config/settings.py,sha256=h-hHrzTItfMkR1ZnMCF6xUeJ3DBwdOgO354QaEH-VaE,20861
145
145
  deepeval/config/settings_manager.py,sha256=PsBS_5dRJASak2AUDwjhjLSiezNz1fje0R3onoFCKC0,4014
146
- deepeval/config/utils.py,sha256=EG2MwGlUEb7bGuZ77jUo7QLoMeqkcK5gl7Wgk-pcS4g,2443
147
- deepeval/constants.py,sha256=XNcTEdhtO4aDnQaHi815A_24iEE9o09Vxnthm7xlfnw,796
146
+ deepeval/config/utils.py,sha256=gSOVv18Tx1R72GucbdQesbZLFL-Y9EzbS4p7qd2w_xE,3799
147
+ deepeval/constants.py,sha256=ZXIA1Hsjy03SvfaIx2hbj_oxHp-gJ-kYIyktnFD1AGg,1337
148
148
  deepeval/dataset/__init__.py,sha256=rcum_VjBXu8eisCdr6sl84BgoZUs3x0tYbB2PnPtHGY,212
149
149
  deepeval/dataset/api.py,sha256=ZxkEqAF4nZH_Ys_1f5r9N2LFI_vBcAJxt8eJm7Mplpw,831
150
150
  deepeval/dataset/dataset.py,sha256=dkUDYtK1z9sDn6A-HOohoHHUobWuaCiuHEABLAfP4kQ,49396
@@ -171,17 +171,18 @@ deepeval/integrations/hugging_face/callback.py,sha256=15QQEzR34Cpdp5kUp5oVA6dEsS
171
171
  deepeval/integrations/hugging_face/rich_manager.py,sha256=WvFtPGpPmGeg2Ftsnojga6yvbBLiZv_tvNbnFcGb6og,3630
172
172
  deepeval/integrations/hugging_face/tests/test_callbacks.py,sha256=88Wyg-aDaXujj9jHeGdFF3ITSl2-y7eaJGWgSyvvDi8,4607
173
173
  deepeval/integrations/hugging_face/utils.py,sha256=HUKdQcTIb76Ct69AS737oPxmlVxk5fw2UbT2pLn-o8k,1817
174
- deepeval/integrations/langchain/__init__.py,sha256=EJz0UvoLjBG5cftOJNJQ5qLawwHHRnSQLgBu_SaqZ1Q,94
175
- deepeval/integrations/langchain/callback.py,sha256=hps3eq8rYZIvxbGtCyAxmb0VTTgAX1HqDBxQLGxZYho,16450
176
- deepeval/integrations/langchain/patch.py,sha256=yWkdGMzRVggBcPFx__HRlUoYtASLh7Vef6mqOIZ9LDY,992
177
- deepeval/integrations/langchain/utils.py,sha256=gSs4VOIzftVS9VLbQSs94R-Pi7D6CGFt84SzccwOsWg,3209
174
+ deepeval/integrations/langchain/__init__.py,sha256=G1Qey5WkKou2-PA34KwWgmayQ_TbvXqPyotTbzmD8tw,84
175
+ deepeval/integrations/langchain/callback.py,sha256=CZuhUqxy5pZDDoW9VKge87HI6k7aA9sbdKOWT912sAk,11032
176
+ deepeval/integrations/langchain/patch.py,sha256=fCHfZXU9xX3IJ6SG8GEYzn3qrifyUkT0i_uUABTsmcs,1255
177
+ deepeval/integrations/langchain/utils.py,sha256=6kuVsuepjPxj1sdlq1QgBeGhMByyXuNmb_FFflLVMhc,10070
178
178
  deepeval/integrations/llama_index/__init__.py,sha256=zBwUFQXDp6QFtp1cfANy8ucV08rjc93nyxM9o9hWjT0,216
179
179
  deepeval/integrations/llama_index/agent/patched.py,sha256=4JbH0WQmt4lct7xxIH0phj8_Y-V35dgVv7DEDXK0jZI,2149
180
180
  deepeval/integrations/llama_index/handler.py,sha256=eqI1n8E4MsvfKoFs5Zrm9IdCR7g9eBgNedISs7UkU_I,8947
181
181
  deepeval/integrations/llama_index/utils.py,sha256=mxW71-3PjvBvJpLIU0kNWuTzCidy5l_-roLt8ZyWYA0,2599
182
182
  deepeval/integrations/pydantic_ai/__init__.py,sha256=36fBKBLRo1y5jFlj0Y4xhDJsiq4ZnqtmFO32R90Azo4,96
183
183
  deepeval/integrations/pydantic_ai/otel.py,sha256=2DpO3RapdztXPlT9BWhQfF4dJDMyp2X7YvuplJ0SwC8,1661
184
- deepeval/integrations/pydantic_ai/patcher.py,sha256=wszU2YROZAQovyz1ZNRvTtsuJ5By_x4SF6yjtmItcNk,12210
184
+ deepeval/integrations/pydantic_ai/patcher.py,sha256=C8CpY6UTO9oaai36l5C_GMT0Lqx9UVoJQYRPF0u0tMc,13127
185
+ deepeval/integrations/pydantic_ai/utils.py,sha256=0BT3v1heuAnfhd9_FSp4XL8818MGdaI6oY2sTQtotfs,3211
185
186
  deepeval/key_handler.py,sha256=damdQEBLGy4IVk5DR5-E3blIZdLbcMtyeGAFn_4_SG4,6505
186
187
  deepeval/metrics/__init__.py,sha256=nvO0Wv2JROjK1I9MDNIFUJlrRAZI2C0xbGYSBZK5q4g,4013
187
188
  deepeval/metrics/answer_relevancy/__init__.py,sha256=WbZUpoSg2GQoqJ4VIRirVVQ1JDx5xwT-RskwqNKfWGM,46
@@ -223,7 +224,7 @@ deepeval/metrics/conversational_dag/conversational_dag.py,sha256=P1v8epAZled3G2O
223
224
  deepeval/metrics/conversational_dag/nodes.py,sha256=P32yb5Is7DJavXigxhQp2rTYZmY43xNRvlQC-uVKdVQ,33691
224
225
  deepeval/metrics/conversational_dag/templates.py,sha256=-WvTE8Q-Aw0f91kxdgaPZWAh2qv1-KF6v4PbGR718rk,3801
225
226
  deepeval/metrics/conversational_g_eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
- deepeval/metrics/conversational_g_eval/conversational_g_eval.py,sha256=h7OlNEye0wbebkovB7ppOmc2DDfDws-ZjEDA8VjKIYY,16775
227
+ deepeval/metrics/conversational_g_eval/conversational_g_eval.py,sha256=dLVqae6_hyBDfQjqyIWgU488G-SOjg97EHlvrN79sqU,16828
227
228
  deepeval/metrics/conversational_g_eval/schema.py,sha256=H_9-iA1BXJwbPKrGEZBqxDO_En4sjXI8_xKSNYc-hnk,167
228
229
  deepeval/metrics/conversational_g_eval/template.py,sha256=buwPuHfqn-9FRrW-j1Pc4W0XCAVmdPPa0wM8pQ9Q0N0,2917
229
230
  deepeval/metrics/dag/__init__.py,sha256=G5D9ngJ6nnbRBF2mfmNZymZId8gKD09QzTA1Y_bTrgM,157
@@ -321,7 +322,7 @@ deepeval/metrics/non_advice/non_advice.py,sha256=DebtVrzAdwvoJ1eWovC6ahjY1qdsxUC
321
322
  deepeval/metrics/non_advice/schema.py,sha256=bODTV8jfjIYTwnYRHz32p47tqdXkTRqLXj_s5ZUxYAQ,299
322
323
  deepeval/metrics/non_advice/template.py,sha256=KiRoU_Re3JFHylKZ1O8hztZ3yEQf3vW_HWwHxQjDb6o,2864
323
324
  deepeval/metrics/pii_leakage/__init__.py,sha256=tBc9OGp4gmgoYz6FA3ipr48fpsCMvq6WtlwOjMqhCD0,42
324
- deepeval/metrics/pii_leakage/pii_leakage.py,sha256=5Bf-85g4eENObCwEj0z1Mf3TPkh-ZlJ7ftLAfqcJ7_0,10838
325
+ deepeval/metrics/pii_leakage/pii_leakage.py,sha256=sZPCjlegbs_djexoOGg5WEiYUgEYZQFPPYlRDk_FRUc,10851
325
326
  deepeval/metrics/pii_leakage/schema.py,sha256=Jk9jdf4HAa76J237mnosWOCV71pBBNdLfaVhf-4dKEg,313
326
327
  deepeval/metrics/pii_leakage/template.py,sha256=DEW21CyR2lEI1y2C_fXgZnGJlYw0fvnB-LF-HEKZnqo,2418
327
328
  deepeval/metrics/prompt_alignment/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -362,29 +363,29 @@ deepeval/models/answer_relevancy_model.py,sha256=SLOA6uUImNOuxpPGfTg2AH7MIkf9Qso
362
363
  deepeval/models/base_model.py,sha256=P7L7RAix7lxpUhYLMPdnmnkMeWspMuaTeZy175ZtdSk,4033
363
364
  deepeval/models/detoxify_model.py,sha256=UY67y-3aL_ojY06aZEhD_dW9TEaV5LJ_GVDyP0_2fyQ,991
364
365
  deepeval/models/embedding_models/__init__.py,sha256=5nsvahw_sZj_8WTInPYyGJEQrxNYBhDf6lkYQMKlgRw,230
365
- deepeval/models/embedding_models/azure_embedding_model.py,sha256=BvERq8zcHkcsqPjRYJx_BVFT_lPx7eAzpludr4QVSoo,2738
366
- deepeval/models/embedding_models/local_embedding_model.py,sha256=-cgIPM32gXaf4VQKMpx4LprZRPlSJkJIz-WRr5Jnp64,2006
367
- deepeval/models/embedding_models/ollama_embedding_model.py,sha256=kmJEVmo6nHdoDgLnKFJEZAoH4Wncg7143OkUGgoJVTk,2047
368
- deepeval/models/embedding_models/openai_embedding_model.py,sha256=n1ER4gb4PGE7J7HICNoHAync9w9VaSl4tiU0d36T6Fs,2249
366
+ deepeval/models/embedding_models/azure_embedding_model.py,sha256=6adG8dTohW4oNOSPnCecMRkkx0LWJXFuhzExesQpI90,3671
367
+ deepeval/models/embedding_models/local_embedding_model.py,sha256=Dm35cvn8hynP5IEXyZVDljIXngr9FAqxXN5TUqlBWl0,3371
368
+ deepeval/models/embedding_models/ollama_embedding_model.py,sha256=w3etdIdWvYfVIEjCZd_Q_VPsLLo64VEFbCtahWpbHAY,2582
369
+ deepeval/models/embedding_models/openai_embedding_model.py,sha256=Z1--e3CnNNmwryqmUMxBCaTURjtgKWHqADuUeCqFlSc,3545
369
370
  deepeval/models/hallucination_model.py,sha256=ABi978VKLE_jNHbDzM96kJ08EsZ5ZlvOlJHA_ptSkfQ,1003
370
371
  deepeval/models/llms/__init__.py,sha256=qmvv7wnmTDvys2uUTwQRo-_3DlFV3fGLiewPeQYRsAI,670
371
- deepeval/models/llms/amazon_bedrock_model.py,sha256=0AxdftPxYs86y2ILbRYhWRP38vP_yZl8E-ZrSLIlrOQ,5373
372
- deepeval/models/llms/anthropic_model.py,sha256=T55-jKRbM3_B3Db9M3ruklm2cVVU1JDGAzicLTCBtgU,5151
373
- deepeval/models/llms/azure_model.py,sha256=MG6sVGUgIy2RURwFWvRP7O_RF6QAg2dpqXIJhIsgY60,10994
374
- deepeval/models/llms/deepseek_model.py,sha256=mz0U0uqazAVr8vv8SF74GRTr4ZEVc3Q1v9o5TVbmz_8,5440
375
- deepeval/models/llms/gemini_model.py,sha256=QXf9mjopfWwJxpm0gbkXo6op_Wtu1GaIt1BfzS3OU8Q,8174
376
- deepeval/models/llms/grok_model.py,sha256=zPBmPnNCRGrtg_709gFv5A4iz7WilTmDpAyOpjXTa_M,5986
377
- deepeval/models/llms/kimi_model.py,sha256=ZcvEwWgnv1dtmbq7LgMQJAjpkjxZr-l5eBi9KGqRbb0,6726
372
+ deepeval/models/llms/amazon_bedrock_model.py,sha256=xaNV7BnqcsH31ghIKBcacKzetORlFRGHtuBlfr8vbnQ,6183
373
+ deepeval/models/llms/anthropic_model.py,sha256=5gYRNkYUD7Zl3U0SibBG2YGCQsD6DdTsaBhqdaJlKIw,6072
374
+ deepeval/models/llms/azure_model.py,sha256=dqINcfoJNqdd9zh5iTPwQ_ToGMOF7iH6YUB-UWRSOlc,10730
375
+ deepeval/models/llms/deepseek_model.py,sha256=EqBJkKa7rXppCmlnIt_D-Z_r9fbsOUsOAVvN2jWA-Hk,6404
376
+ deepeval/models/llms/gemini_model.py,sha256=aGiD-hEgknctlqi7WdRwPNw9w76D6KMdNS-DIGpovLc,8409
377
+ deepeval/models/llms/grok_model.py,sha256=iZPFCmRbrK9yUdADn3oNeA-ysPMaJdnFDqorNP6wkAk,7492
378
+ deepeval/models/llms/kimi_model.py,sha256=ldTefdSVitZYJJQ-_ZsP87iiT5iZ4QCVdfi-YzdSMtU,7691
378
379
  deepeval/models/llms/litellm_model.py,sha256=iu4-_JCpd9LdEa-eCWseD2iLTA-r7OSgYGWQ0IxB4eA,11527
379
- deepeval/models/llms/local_model.py,sha256=PeF6ofMR8jBMTLzkCkgmkBJix9kHbWV5vTKGx8nehFs,3605
380
- deepeval/models/llms/ollama_model.py,sha256=foL6sMza37Z0HH8qPStyIr1g-xEaD6Ce53L2C8Er-P8,3055
381
- deepeval/models/llms/openai_model.py,sha256=84c_g6jegbQwncrqYYaodJqDgj1SIfoSy2p44ghZfR8,17231
380
+ deepeval/models/llms/local_model.py,sha256=hEyKVA6pkQm9dICUKsMNgjVI3w6gnyMdmBt_EylkWDk,4473
381
+ deepeval/models/llms/ollama_model.py,sha256=xPO4d4jMY-cQAyHAcMuFvWS8JMWwCUbKP9CMi838Nuc,3307
382
+ deepeval/models/llms/openai_model.py,sha256=F02N8BgbiEXH7F6y-a6DkjVcBXFEzr87SEB2gVn4xlU,17192
382
383
  deepeval/models/llms/utils.py,sha256=ZMZ02kjXAAleq0bIEyjj-gZwe6Gp0b0mK8YMuid2-20,722
383
384
  deepeval/models/mlllms/__init__.py,sha256=19nN6kUB5XI0nUWUQX0aD9GBUMM8WWGvsDgKjuT4EF4,144
384
- deepeval/models/mlllms/gemini_model.py,sha256=bWJe5x_ayHvxtZffKFcrFWkc4_W-hcLu8ErFjecoF_0,9593
385
- deepeval/models/mlllms/ollama_model.py,sha256=3i79vflDPS1f4R105VMi26SwlZVkyQFCTJT4OJtU5q4,3823
386
- deepeval/models/mlllms/openai_model.py,sha256=q1pe6UfQ39IUFrPSRYyM1h-kz4L5YNkqtzHQsNqAl9M,9786
387
- deepeval/models/retry_policy.py,sha256=AQWACiUfs8ud-etXUMhd0NKxB6NmDlGvHmTcbT6SxS8,9072
385
+ deepeval/models/mlllms/gemini_model.py,sha256=7tHIWD4w_fBz3L7jkKWygn1QpBPk9nl2Kw-yb0Jc3PI,10167
386
+ deepeval/models/mlllms/ollama_model.py,sha256=_YtYtw8oIMVVI-CFsDicsdeEJUPhw_9ArPxB_1olsJA,4798
387
+ deepeval/models/mlllms/openai_model.py,sha256=KgvYgQwWZ1A_Gcl6-4-W7IMqbUF9K8sNY37j5Ag7kQQ,9014
388
+ deepeval/models/retry_policy.py,sha256=U7DjJJcCPei14Ws_7U6-JK8ZZYCGVx9YgMPySYr0HtM,24545
388
389
  deepeval/models/summac_model.py,sha256=wKeH7pWQRXrTlzlIw_r1YCb8b7jUhWq6jUz9FiNUCSg,1992
389
390
  deepeval/models/unbias_model.py,sha256=umOMhQLTmnD7uOuhiQufEl4Wlti4q2s3EtKOpds7zhs,597
390
391
  deepeval/models/utils.py,sha256=-3XDgg1U7PZ0jpLFiYXxqdBhp7idvlo7RPZv5SoD8lc,1130
@@ -402,8 +403,8 @@ deepeval/plugins/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,
402
403
  deepeval/plugins/plugin.py,sha256=_dwsdx4Dg9DbXxK3f7zJY4QWTJQWc7QE1HmIg2Zjjag,1515
403
404
  deepeval/progress_context.py,sha256=ZSKpxrE9sdgt9G3REKnVeXAv7GJXHHVGgLynpG1Pudw,3557
404
405
  deepeval/prompt/__init__.py,sha256=M99QTWdxOfiNeySGCSqN873Q80PPxqRvjLq4_Mw-X1w,49
405
- deepeval/prompt/api.py,sha256=q0CU57eGZkCL3CYIFS6HG-JLyptRhqJRLU9Al8roCRk,1705
406
- deepeval/prompt/prompt.py,sha256=XVGFOK4eQfjWKm-N1GtRilWqtjLM3JNmIqeuYxQx6Xk,15170
406
+ deepeval/prompt/api.py,sha256=ccrMT6_Otuef9zrRm9iQsmZ-Apkjj3nypvw3wc8-eW0,1708
407
+ deepeval/prompt/prompt.py,sha256=DlUPib0EAVC2T54SQB1xxEQBNSpEirL5x-CtrKE1rek,15463
407
408
  deepeval/prompt/utils.py,sha256=Gk0zj_9BK8MQccs8GmiC8o-YVtkou6ZJEz8kWgW5Mog,1678
408
409
  deepeval/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
409
410
  deepeval/red_teaming/README.md,sha256=BY5rAdpp3-sMMToEKwq0Nsd9ivkGDzPE16DeDb8GY7U,154
@@ -455,12 +456,12 @@ deepeval/tracing/otel/exporter.py,sha256=dXQd834zm5rm1ss9pWkBBlk-JSdtiw7aFLso2hM
455
456
  deepeval/tracing/otel/utils.py,sha256=g8yAzhqbPh1fOKCWkfNekC6AVotLfu1SUcfNMo6zii8,9786
456
457
  deepeval/tracing/patchers.py,sha256=DAPNkhrDtoeyJIVeQDUMhTz-xGcXu00eqjQZmov8FiU,3096
457
458
  deepeval/tracing/perf_epoch_bridge.py,sha256=iyAPddB6Op7NpMtPHJ29lDm53Btz9yLaN6xSCfTRQm4,1825
458
- deepeval/tracing/tracing.py,sha256=Ot0wzUHxhaK4wZov8cgai-i6kiyZUvNzj9MyRhbjZUg,39191
459
+ deepeval/tracing/tracing.py,sha256=vOVFdN6fVMW53XhyqTZSfp4vI7DCqRez4TKNhdhr-sg,42277
459
460
  deepeval/tracing/types.py,sha256=l_utWKerNlE5H3mOKpeUJLsvpP3cMyjH7HRANNgTmSQ,5306
460
461
  deepeval/tracing/utils.py,sha256=w_kdhuyBCygllnbqLpDdKJqpJo42t3ZMlGhNicV2A8c,6467
461
- deepeval/utils.py,sha256=EimWDwI1pKCE8vl6kuTnGbGT6ep9zHL5sZ0o-gj49XI,16857
462
- deepeval-3.5.1.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
463
- deepeval-3.5.1.dist-info/METADATA,sha256=KDVwTo18ZlKNfIb_f8oomBUiceMMj7NqvVSKNvN1wbk,18682
464
- deepeval-3.5.1.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
465
- deepeval-3.5.1.dist-info/entry_points.txt,sha256=fVr8UphXTfJe9I2rObmUtfU3gkSrYeM0pLy-NbJYg10,94
466
- deepeval-3.5.1.dist-info/RECORD,,
462
+ deepeval/utils.py,sha256=r8tV_NYJSi6ib-oQw6cLw3L7ZSe4KIJVJc1ng6-kDX4,17179
463
+ deepeval-3.5.3.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
464
+ deepeval-3.5.3.dist-info/METADATA,sha256=WDYyYAc2YdYGWufFtlvsEFsV___80J_xPPCMkvlwau8,18682
465
+ deepeval-3.5.3.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
466
+ deepeval-3.5.3.dist-info/entry_points.txt,sha256=fVr8UphXTfJe9I2rObmUtfU3gkSrYeM0pLy-NbJYg10,94
467
+ deepeval-3.5.3.dist-info/RECORD,,