deepeval 3.5.1__py3-none-any.whl → 3.5.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
@@ -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])
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.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,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=xrdspux9T8axqghaRzqAZCb9C7a2XybhBmnSkenaUv0,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
@@ -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
@@ -363,7 +364,7 @@ deepeval/models/base_model.py,sha256=P7L7RAix7lxpUhYLMPdnmnkMeWspMuaTeZy175ZtdSk
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
366
  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/local_embedding_model.py,sha256=1a_2VkWpfxWDz0W0BiiB9gqQ2yM0V1H0Au31EkhFoFE,2018
367
368
  deepeval/models/embedding_models/ollama_embedding_model.py,sha256=kmJEVmo6nHdoDgLnKFJEZAoH4Wncg7143OkUGgoJVTk,2047
368
369
  deepeval/models/embedding_models/openai_embedding_model.py,sha256=n1ER4gb4PGE7J7HICNoHAync9w9VaSl4tiU0d36T6Fs,2249
369
370
  deepeval/models/hallucination_model.py,sha256=ABi978VKLE_jNHbDzM96kJ08EsZ5ZlvOlJHA_ptSkfQ,1003
@@ -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
@@ -458,9 +459,9 @@ deepeval/tracing/perf_epoch_bridge.py,sha256=iyAPddB6Op7NpMtPHJ29lDm53Btz9yLaN6x
458
459
  deepeval/tracing/tracing.py,sha256=Ot0wzUHxhaK4wZov8cgai-i6kiyZUvNzj9MyRhbjZUg,39191
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.2.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
464
+ deepeval-3.5.2.dist-info/METADATA,sha256=XcG2jqrQcOL-84Gwj5DM-Am_lNNrK6y1_36-NcYV53M,18682
465
+ deepeval-3.5.2.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
466
+ deepeval-3.5.2.dist-info/entry_points.txt,sha256=fVr8UphXTfJe9I2rObmUtfU3gkSrYeM0pLy-NbJYg10,94
467
+ deepeval-3.5.2.dist-info/RECORD,,