deepeval 3.8.1__py3-none-any.whl → 3.8.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.
@@ -74,6 +74,7 @@ def update_current_trace(
74
74
  expected_tools: Optional[List[ToolCall]] = None,
75
75
  test_case: Optional[LLMTestCase] = None,
76
76
  confident_api_key: Optional[str] = None,
77
+ test_case_id: Optional[str] = None,
77
78
  ):
78
79
  current_trace = current_trace_context.get()
79
80
  if not current_trace:
@@ -112,6 +113,8 @@ def update_current_trace(
112
113
  current_trace.expected_tools = expected_tools
113
114
  if confident_api_key:
114
115
  current_trace.confident_api_key = confident_api_key
116
+ if test_case_id:
117
+ current_trace.test_case_id = test_case_id
115
118
 
116
119
 
117
120
  def update_llm_span(
@@ -69,9 +69,11 @@ def trace(
69
69
  )
70
70
 
71
71
  current_trace = current_trace_context.get()
72
+ started_new_trace = False
72
73
 
73
74
  if not current_trace:
74
75
  current_trace = trace_manager.start_new_trace()
76
+ started_new_trace = True
75
77
 
76
78
  if metrics:
77
79
  current_trace.metrics = metrics
@@ -103,5 +105,8 @@ def trace(
103
105
  try:
104
106
  yield current_trace
105
107
  finally:
108
+ if started_new_trace:
109
+ trace_manager.end_trace(current_trace.uuid)
110
+
106
111
  current_llm_context.set(LlmSpanContext())
107
112
  current_agent_context.set(AgentSpanContext())
@@ -690,6 +690,7 @@ class TraceManager:
690
690
  expectedOutput=trace.expected_output,
691
691
  toolsCalled=trace.tools_called,
692
692
  expectedTools=trace.expected_tools,
693
+ testCaseId=trace.test_case_id,
693
694
  confident_api_key=trace.confident_api_key,
694
695
  environment=(
695
696
  self.environment if not trace.environment else trace.environment
@@ -969,9 +970,9 @@ class Observer:
969
970
  else:
970
971
  current_trace = current_trace_context.get()
971
972
  if current_trace.input is None:
972
- current_trace.input = self.function_kwargs
973
+ current_trace.input = trace_manager.mask(self.function_kwargs)
973
974
  if current_trace.output is None:
974
- current_trace.output = self.result
975
+ current_trace.output = trace_manager.mask(self.result)
975
976
  if current_span.status == TraceSpanStatus.ERRORED:
976
977
  current_trace.status = TraceSpanStatus.ERRORED
977
978
  if current_trace and current_trace.uuid == current_span.trace_uuid:
@@ -1037,7 +1038,8 @@ class Observer:
1037
1038
  return RetrieverSpan(**span_kwargs, embedder=embedder)
1038
1039
 
1039
1040
  elif self.span_type == SpanType.TOOL.value:
1040
- return ToolSpan(**span_kwargs, **self.observe_kwargs)
1041
+ description = self.observe_kwargs.get("description", None)
1042
+ return ToolSpan(**span_kwargs, description=description)
1041
1043
  else:
1042
1044
  return BaseSpan(**span_kwargs)
1043
1045
 
@@ -1107,7 +1109,7 @@ def observe(
1107
1109
  yield chunk
1108
1110
  observer.__exit__(None, None, None)
1109
1111
  except Exception as e:
1110
- observer.__exit__(type(e), e, e.__traceback__)
1112
+ observer.__exit__(e.__class__, e, e.__traceback__)
1111
1113
  raise
1112
1114
 
1113
1115
  return gen()
@@ -1150,7 +1152,7 @@ def observe(
1150
1152
  yield from original_gen
1151
1153
  observer.__exit__(None, None, None)
1152
1154
  except Exception as e:
1153
- observer.__exit__(type(e), e, e.__traceback__)
1155
+ observer.__exit__(e.__class__, e, e.__traceback__)
1154
1156
  raise
1155
1157
 
1156
1158
  return gen()
deepeval/tracing/types.py CHANGED
@@ -157,6 +157,7 @@ class Trace(BaseModel):
157
157
  output: Optional[Any] = None
158
158
  metrics: Optional[List[BaseMetric]] = None
159
159
  metric_collection: Optional[str] = None
160
+ test_case_id: Optional[str] = Field(None, serialization_alias="testCaseId")
160
161
 
161
162
  # Don't serialize these
162
163
  confident_api_key: Optional[str] = Field(None, exclude=True)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepeval
3
- Version: 3.8.1
3
+ Version: 3.8.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=tle4lT4FONApg3OeztGPEdrpGMEGLWajyGTu7bEd3s0,2976
2
- deepeval/_version.py,sha256=s5IY-4O1-t7edS5QfrE_aVtx7pzfmiAZYhpUiCZuYuY,27
2
+ deepeval/_version.py,sha256=DuZF4w5M7-EVzWNXFxp8yJIQADpdXSQSjeWW87pqtn4,27
3
3
  deepeval/annotation/__init__.py,sha256=ZFhUVNNuH_YgQSZJ-m5E9iUb9TkAkEV33a6ouMDZ8EI,111
4
4
  deepeval/annotation/annotation.py,sha256=WLFZRkx6wRJcNzaOMMGXuTfw6Q1_1Mv5A4jpD7Ea4sU,2300
5
5
  deepeval/annotation/api.py,sha256=EYN33ACVzVxsFleRYm60KB4Exvff3rPJKt1VBuuX970,2147
@@ -142,7 +142,7 @@ 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
@@ -169,27 +169,27 @@ deepeval/evaluate/execute.py,sha256=5RZrTRfe-AnwO5aS16LL-iBqT3fciun9zt3wbXp70v8,
169
169
  deepeval/evaluate/types.py,sha256=jf424xPHgdJcvgG2l_wTMskJBOEe9tl55c3v3B-SLNU,1071
170
170
  deepeval/evaluate/utils.py,sha256=STYyJCvVkewU5iigKnAsUDcVtJuFU_Qefi-aoyv2elA,20740
171
171
  deepeval/integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
172
- deepeval/integrations/crewai/__init__.py,sha256=Uu7-MNV6uXnDoXlZJzt69Y73thJXlMM4xfQdv3mrlHw,227
173
- deepeval/integrations/crewai/handler.py,sha256=SbwosamuRQXOSmKPKKV7MMQ9vn-sDFiufCIHw-xxYKk,7882
174
- deepeval/integrations/crewai/subs.py,sha256=UP6aY8Nrl_lHDwxG84aRMNjxzP-X2QWTtOu9DgXMabM,1477
175
- deepeval/integrations/crewai/tool.py,sha256=6Uw3XuJO0STDq3YAL6bp_xh5ZJcza0L4kkuotFYj79s,2558
176
- deepeval/integrations/crewai/wrapper.py,sha256=r4szLNUz1O7U9eMps7czMbHyIEEQ4lfPdBb417gYPfc,3726
172
+ deepeval/integrations/crewai/__init__.py,sha256=8bkOWfzrqETEYWMB9nCKbqMd7nlU-TGvNH0CIrqtlps,316
173
+ deepeval/integrations/crewai/handler.py,sha256=dgzfWwHw94ro28-h8RyYfNQ8cOmnXCwEoWOZatxcbVk,15178
174
+ deepeval/integrations/crewai/subs.py,sha256=wcMJVBNf69dqFO8L1kMTvm4n1GsO2S-nopQn924JdU4,1974
175
+ deepeval/integrations/crewai/tool.py,sha256=thdDXt-dA2B4LmUuQipAcOiR6H19KA7zzqjlsfTyn3s,3210
176
+ deepeval/integrations/crewai/wrapper.py,sha256=w3NsXHe1M4BhjGcpMA7grUCdSAjlu2zBk9daLeTRluc,5615
177
177
  deepeval/integrations/hugging_face/__init__.py,sha256=MuHIf9im9Jypq4VkfLzhklxIrd7vSTGlT74iUNSPgvg,93
178
178
  deepeval/integrations/hugging_face/callback.py,sha256=15QQEzR34Cpdp5kUp5oVA6dEsShtiMNZ03akJWAh7lo,7911
179
179
  deepeval/integrations/hugging_face/rich_manager.py,sha256=WvFtPGpPmGeg2Ftsnojga6yvbBLiZv_tvNbnFcGb6og,3630
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=HzeSDvSanjVRe7kquFdRUG9f88QmzU0y3prdUqF8O3g,20361
183
+ deepeval/integrations/langchain/callback.py,sha256=-Ip1PU84YqKbf4j17qV925GHsW5mRJN9b-d7V4fOuP8,32892
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
- deepeval/integrations/llama_index/handler.py,sha256=uTvNXmAF4xBh8t9bBm5sBFX6ETp8SrkOZlFlE_GWdmM,10771
187
+ deepeval/integrations/llama_index/handler.py,sha256=uVfMs9VC2vp5J_A8lxy1OmVtha31wvkJGzkp5GKhf-A,12367
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=PPoGeJzkuoCerrjc-s_Nv8hn9DC54Jp-uXgJU0OI1Ug,13081
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
@@ -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=kEWt0iKsBmABBtkHnk3vbHoOkYdU5hhAhBkx9-0k0Fc,21370
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
@@ -468,7 +468,7 @@ deepeval/red_teaming/README.md,sha256=BY5rAdpp3-sMMToEKwq0Nsd9ivkGDzPE16DeDb8GY7
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,7 +486,7 @@ 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
@@ -501,8 +501,8 @@ deepeval/test_run/hooks.py,sha256=Qnd06bk9RJN4WmFUzJrBAi3Xj261hzyzI2iRmG8wbKw,37
501
501
  deepeval/test_run/hyperparameters.py,sha256=4yJkNgwL2y6eyWDTmUV62f5RUlfOui4R22wsJ5uTbto,3874
502
502
  deepeval/test_run/test_run.py,sha256=csbj0KVsp1QDCFKEqthQzPSmxusjNQkoVfsWBnq2Z_s,41549
503
503
  deepeval/tracing/__init__.py,sha256=aSOk_ZgL-K7CZzcyiaIa5peAiaPViDST5GhpHA3Adc8,614
504
- deepeval/tracing/api.py,sha256=GbtpUDdGpchl6rPXtZT6IBKjAhwux6qOlKLdP3dRVHU,4996
505
- deepeval/tracing/context.py,sha256=v4uzd0N2H8mNntPwZvL49ya2kW9FvjqQqWXJFgE5d0c,5469
504
+ deepeval/tracing/api.py,sha256=x6Ze5ruPDbuRsR8rS0524cvUkCQ7CxLoT0up1gMQWMk,5062
505
+ deepeval/tracing/context.py,sha256=KKP0Wp7zpzTzISyDceI7fndpVnehawI8rBMyRYEwb9U,5580
506
506
  deepeval/tracing/offline_evals/__init__.py,sha256=bEniJAl7PmS9u2ksiOTfHtlCPJ9_CJV5R6umrUOX5MM,102
507
507
  deepeval/tracing/offline_evals/api.py,sha256=eBfqh2uWyeRkIeGhjrN1bTQzAEow-XPubs-42WEZ2QQ,510
508
508
  deepeval/tracing/offline_evals/span.py,sha256=pXqTVXs-WnjRVpCYYEbNe0zSM6Wz9GsKHsM5ZcWxrmM,1802
@@ -514,14 +514,14 @@ deepeval/tracing/otel/test_exporter.py,sha256=bezihPGWJpwUEF3ZghxqhhorocVFTO2b43
514
514
  deepeval/tracing/otel/utils.py,sha256=NVMN07JtxuvVPtdyTW7KFdTqQL3TpoCO-JdZeghQJBY,17859
515
515
  deepeval/tracing/patchers.py,sha256=Oi9wao3oDYhcviv7p0KoWBeS9ne7rHLa2gh9AR9EyiU,6882
516
516
  deepeval/tracing/perf_epoch_bridge.py,sha256=iyAPddB6Op7NpMtPHJ29lDm53Btz9yLaN6xSCfTRQm4,1825
517
- deepeval/tracing/trace_context.py,sha256=Z0n0Cu1A5g9dXiZnzTFO5TzeOYHKeNuO6v3_EU_Gi_c,3568
517
+ deepeval/tracing/trace_context.py,sha256=RkXSlAWuMzuRrvepsM0PlGaWwX7QBstkWv_frYn_7CE,3718
518
518
  deepeval/tracing/trace_test_manager.py,sha256=wt4y7EWTRc4Bw938-UFFtXHkdFFOrnx6JaIk7J5Iulw,555
519
- deepeval/tracing/tracing.py,sha256=AkbmgjWzSQ2k2qeN9i8LT17MsafuBenzzkP0r31I950,46728
520
- deepeval/tracing/types.py,sha256=3QkF0toQ6f0fEDARYOUV6Iv9UJFbg14kSpn3dL1H5CE,6040
519
+ deepeval/tracing/tracing.py,sha256=RS3mBV-63_vDyz-WxYPir34u0BF3mPnAJWee1aCc1sc,46892
520
+ deepeval/tracing/types.py,sha256=PUXDC1JZDaAalPc3uUHywkt2GE2hZ-2ocGP0Fe4sB2E,6120
521
521
  deepeval/tracing/utils.py,sha256=mdvhYAxDNsdnusaEXJd-c-_O2Jn6S3xSuzRvLO1Jz4U,5684
522
522
  deepeval/utils.py,sha256=Wsu95g6t1wdttxWIESVwuUxbml7C-9ZTsV7qHCQI3Xg,27259
523
- deepeval-3.8.1.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
524
- deepeval-3.8.1.dist-info/METADATA,sha256=Gnf6RPJE1gh6N5HJlJAEEPZvRTGVE_g57hkAeAnPzvE,18752
525
- deepeval-3.8.1.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
526
- deepeval-3.8.1.dist-info/entry_points.txt,sha256=NoismUQfwLOojSGZmBrdcpwfaoFRAzUhBvZD3UwOKog,95
527
- deepeval-3.8.1.dist-info/RECORD,,
523
+ deepeval-3.8.3.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
524
+ deepeval-3.8.3.dist-info/METADATA,sha256=BXj2MMYGn2usVl9VX5fcXNOHK-gp2DEY5uUDlP4kObQ,18752
525
+ deepeval-3.8.3.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
526
+ deepeval-3.8.3.dist-info/entry_points.txt,sha256=NoismUQfwLOojSGZmBrdcpwfaoFRAzUhBvZD3UwOKog,95
527
+ deepeval-3.8.3.dist-info/RECORD,,