deepeval 3.7.1__py3-none-any.whl → 3.7.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.
@@ -37,6 +37,69 @@ class PromptSynthesizerTemplate:
37
37
  JSON:
38
38
  """
39
39
 
40
+ @staticmethod
41
+ def generate_synthetic_conversational_scenarios(
42
+ scenario: str,
43
+ conversational_task: str,
44
+ participant_roles: str,
45
+ num_goldens: int,
46
+ ):
47
+ return f"""
48
+ Generate a series of conversational SCENARIOS from scratch based on the provided scenario description,
49
+ conversational task, and participant roles.
50
+
51
+ A SCENARIO is a narrative description of a situation in which a conversation naturally occurs.
52
+ It is NOT a question, NOT a prompt, and NOT a user query. It MUST purely describe context.
53
+
54
+ Each scenario MUST depict a realistic MULTI-TURN conversational situation involving the given participants.
55
+
56
+ **
57
+ IMPORTANT FORMAT:
58
+ - Only return JSON
59
+ - JSON MUST contain: {{ "data": [ {{ "scenario": "..." }}, ... ] }}
60
+ - You MUST TRY to generate {num_goldens} items
61
+ **
62
+
63
+ Example of GOOD scenarios (situational descriptions):
64
+ - "During a late afternoon code review session, a junior engineer asks their senior engineer why an async function is inconsistent, leading to a detailed back-and-forth about race conditions."
65
+ - "While preparing for a sprint demo, a senior engineer helps a junior engineer interpret stack traces, prompting a step-by-step explanation."
66
+
67
+ Example of BAD scenarios (DO NOT DO):
68
+ - "Why does my async function return inconsistent results?" (This is a prompt)
69
+ - "Explain how to debug race conditions." (Instruction)
70
+ - "What is the freezing point of water?" (Question)
71
+
72
+ CRITICAL REQUIREMENTS:
73
+ - Scenario MUST be a narrative description of a SITUATION.
74
+ - Scenario MUST involve these participant roles: {participant_roles}
75
+ - Scenario MUST align with this conversational task: {conversational_task}
76
+ - Scenario MUST feel natural, real-world, and MULTI-TURN.
77
+ - Scenario MUST NOT contain:
78
+ • direct questions
79
+ • instructions
80
+ • tasks
81
+ • explicit prompts
82
+ • standalone facts
83
+ - Scenario MUST be grounded in the meaning of the provided base scenario description.
84
+
85
+ You MUST TRY to generate {num_goldens} high-quality, non-repetitive scenarios.
86
+ **
87
+
88
+ Base Scenario Description:
89
+ {scenario}
90
+
91
+ Conversational Task:
92
+ {conversational_task}
93
+
94
+ Participant Roles:
95
+ {participant_roles}
96
+
97
+ Num Scenarios:
98
+ {num_goldens}
99
+
100
+ JSON:
101
+ """
102
+
40
103
 
41
104
  ######################################################################################################
42
105
  ##### Approach similar to https://github.com/nlpxucan/WizardLM/blob/main/Evol_Instruct/depth.py ######
@@ -282,3 +345,202 @@ class PromptEvolutionTemplate:
282
345
  Rewritten Input:
283
346
  """
284
347
  )
348
+
349
+
350
+ class ConversationalPromptEvolutionTemplate:
351
+
352
+ base_instruction = """I want you to act as a conversational scenario rewriter.
353
+ Your objective is to rewrite the given `Scenario`. You MUST complicate the `Scenario` using the following method:"""
354
+
355
+ @staticmethod
356
+ def reasoning_evolution(scenario):
357
+ return (
358
+ ConversationalPromptEvolutionTemplate.base_instruction
359
+ + f"""
360
+ 1. Rewrite `Scenario` to force participants into multi-step conversational reasoning.
361
+ 2. Add layered inferences or analytical leaps required in dialogue.
362
+ 3. `Rewritten Scenario` must stay concise, human-readable, and remain a conversation setup.
363
+ 4. Do NOT exceed **15 words**.
364
+
365
+ **
366
+ EXAMPLES
367
+
368
+ Example scenario:
369
+ Two students discuss climate change.
370
+ Example rewritten scenario:
371
+ Two students debate climate impacts, tracing cause-effect chains across multiple evidence sources.
372
+
373
+ --------------------------
374
+
375
+ Example scenario:
376
+ A doctor explains treatment options.
377
+ Example rewritten scenario:
378
+ Doctor and patient reason through symptoms requiring sequential diagnostic logic.
379
+
380
+ --------------------------
381
+
382
+ Scenario:
383
+ {scenario}
384
+ Rewritten Scenario:
385
+ """
386
+ )
387
+
388
+ @staticmethod
389
+ def concretizing_evolution(scenario):
390
+ return (
391
+ ConversationalPromptEvolutionTemplate.base_instruction
392
+ + f"""
393
+ 1. Replace broad conversation setup with a **more specific, concrete** conversational scene.
394
+ 2. Add real-world detail (location, constraint, specific topic).
395
+ 3. Keep under **15 words**, concise, and still a dialogue setup.
396
+
397
+ **
398
+ EXAMPLES
399
+
400
+ Example scenario:
401
+ Two engineers talk about safety.
402
+ Example rewritten scenario:
403
+ Two engineers argue over failing brake-system logs during late-night review.
404
+
405
+ --------------------------
406
+
407
+ Example scenario:
408
+ Two friends discuss exercise.
409
+ Example rewritten scenario:
410
+ Two friends compare heart-rate sensor issues during a marathon-training chat.
411
+
412
+ --------------------------
413
+
414
+ Scenario:
415
+ {scenario}
416
+ Rewritten Scenario:
417
+ """
418
+ )
419
+
420
+ @staticmethod
421
+ def constrained_evolution(scenario):
422
+ return (
423
+ ConversationalPromptEvolutionTemplate.base_instruction
424
+ + f"""
425
+ 1. Add at least one new constraint shaping the conversation.
426
+ 2. Constraint must significantly affect the dialogue.
427
+ 3. Keep under **15 words**, concise, conversational.
428
+
429
+ **
430
+ EXAMPLES
431
+
432
+ Example scenario:
433
+ Two coworkers plan a report.
434
+ Example rewritten scenario:
435
+ Two coworkers plan a report with strict no-internet constraint.
436
+
437
+ --------------------------
438
+
439
+ Example scenario:
440
+ A teacher reviews homework.
441
+ Example rewritten scenario:
442
+ Teacher and student discuss homework under urgent submission deadline.
443
+
444
+ --------------------------
445
+
446
+ Scenario:
447
+ {scenario}
448
+ Rewritten Scenario:
449
+ """
450
+ )
451
+
452
+ @staticmethod
453
+ def comparative_question_evolution(scenario):
454
+ return (
455
+ ConversationalPromptEvolutionTemplate.base_instruction
456
+ + f"""
457
+ 1. Rewrite `Scenario` so the conversation centers on comparing two+ items.
458
+ 2. Must highlight similarities/differences through dialogue.
459
+ 3. Keep under **15 words**, concise, conversational.
460
+
461
+ **
462
+ EXAMPLES
463
+
464
+ Example scenario:
465
+ Two analysts discuss tools.
466
+ Example rewritten scenario:
467
+ Two analysts compare legacy analytics pipeline vs. new automated system.
468
+
469
+ --------------------------
470
+
471
+ Example scenario:
472
+ Two students study history.
473
+ Example rewritten scenario:
474
+ Two students contrast Renaissance ideals with Enlightenment philosophies.
475
+
476
+ --------------------------
477
+
478
+ Scenario:
479
+ {scenario}
480
+ Rewritten Scenario:
481
+ """
482
+ )
483
+
484
+ @staticmethod
485
+ def hypothetical_scenario_evolution(scenario):
486
+ return (
487
+ ConversationalPromptEvolutionTemplate.base_instruction
488
+ + f"""
489
+ 1. Rewrite `Scenario` to introduce a hypothetical twist derived from the setup.
490
+ 2. The hypothetical MUST drive the conversation.
491
+ 3. Keep under **15 words**, concise, conversational.
492
+
493
+ **
494
+ EXAMPLES
495
+
496
+ Example scenario:
497
+ Two scientists discuss pollution.
498
+ Example rewritten scenario:
499
+ Two scientists debate effects if emissions doubled overnight.
500
+
501
+ --------------------------
502
+
503
+ Example scenario:
504
+ A medic trains a recruit.
505
+ Example rewritten scenario:
506
+ Medic and recruit plan response to hypothetical antibiotic-resistant outbreak.
507
+
508
+ --------------------------
509
+
510
+ Scenario:
511
+ {scenario}
512
+ Rewritten Scenario:
513
+ """
514
+ )
515
+
516
+ @staticmethod
517
+ def in_breadth_evolution(scenario):
518
+ return (
519
+ ConversationalPromptEvolutionTemplate.base_instruction
520
+ + f"""
521
+ 1. Rewrite `Scenario` into a new conversation within the same domain.
522
+ 2. The new conversation must explore a rarer, niche angle.
523
+ 3. Keep under **15 words**, concise, conversational.
524
+
525
+ **
526
+ EXAMPLES
527
+
528
+ Example scenario:
529
+ Two doctors discuss patient care.
530
+ Example rewritten scenario:
531
+ Two doctors debate rare autoimmune disorder diagnostics.
532
+
533
+ --------------------------
534
+
535
+ Example scenario:
536
+ Two programmers discuss bugs.
537
+ Example rewritten scenario:
538
+ Two programmers examine obscure concurrency race-condition failures.
539
+
540
+ --------------------------
541
+
542
+ Scenario:
543
+ {scenario}
544
+ Rewritten Scenario:
545
+ """
546
+ )
@@ -73,6 +73,7 @@ def update_current_trace(
73
73
  tools_called: Optional[List[ToolCall]] = None,
74
74
  expected_tools: Optional[List[ToolCall]] = None,
75
75
  test_case: Optional[LLMTestCase] = None,
76
+ confident_api_key: Optional[str] = None,
76
77
  ):
77
78
  current_trace = current_trace_context.get()
78
79
  if not current_trace:
@@ -109,6 +110,8 @@ def update_current_trace(
109
110
  current_trace.tools_called = tools_called
110
111
  if expected_tools:
111
112
  current_trace.expected_tools = expected_tools
113
+ if confident_api_key:
114
+ current_trace.confident_api_key = confident_api_key
112
115
 
113
116
 
114
117
  def update_llm_span(
@@ -441,11 +441,11 @@ class TraceManager:
441
441
  loop = asyncio.new_event_loop()
442
442
  asyncio.set_event_loop(loop)
443
443
 
444
- # buffer for payloads that need to be sent after main exits
445
- remaining_trace_request_bodies: List[Dict[str, Any]] = []
444
+ # buffer for traces that need to be sent after main exits
445
+ remaining_traces: List[TraceApi] = []
446
446
 
447
447
  async def _a_send_trace(trace_obj):
448
- nonlocal remaining_trace_request_bodies
448
+ nonlocal remaining_traces
449
449
  try:
450
450
  # Build API object & payload
451
451
  if isinstance(trace_obj, TraceApi):
@@ -486,7 +486,7 @@ class TraceManager:
486
486
  )
487
487
  elif self._flush_enabled:
488
488
  # Main thread gone → to be flushed
489
- remaining_trace_request_bodies.append(body)
489
+ remaining_traces.append(trace_api)
490
490
 
491
491
  except Exception as e:
492
492
  queue_size = self._trace_queue.qsize()
@@ -544,24 +544,35 @@ class TraceManager:
544
544
  loop.run_until_complete(
545
545
  asyncio.gather(*pending, return_exceptions=True)
546
546
  )
547
- self.flush_traces(remaining_trace_request_bodies)
547
+ self.flush_traces(remaining_traces)
548
548
  loop.run_until_complete(loop.shutdown_asyncgens())
549
549
  loop.close()
550
550
 
551
- def flush_traces(
552
- self, remaining_trace_request_bodies: List[Dict[str, Any]]
553
- ):
551
+ def flush_traces(self, remaining_traces: List[TraceApi]):
554
552
  if not tracing_enabled() or not self.tracing_enabled:
555
553
  return
556
554
 
557
555
  self._print_trace_status(
558
556
  TraceWorkerStatus.WARNING,
559
- message=f"Flushing {len(remaining_trace_request_bodies)} remaining trace(s)",
557
+ message=f"Flushing {len(remaining_traces)} remaining trace(s)",
560
558
  )
561
- for body in remaining_trace_request_bodies:
559
+ for trace_api in remaining_traces:
562
560
  with capture_send_trace():
563
561
  try:
564
- api = Api(api_key=self.confident_api_key)
562
+ try:
563
+ body = trace_api.model_dump(
564
+ by_alias=True,
565
+ exclude_none=True,
566
+ )
567
+ except AttributeError:
568
+ # Pydantic version below 2.0
569
+ body = trace_api.dict(by_alias=True, exclude_none=True)
570
+
571
+ body = make_json_serializable(body)
572
+ if trace_api.confident_api_key:
573
+ api = Api(api_key=trace_api.confident_api_key)
574
+ else:
575
+ api = Api(api_key=self.confident_api_key)
565
576
 
566
577
  _, link = api.send_request(
567
578
  method=HttpMethods.POST,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepeval
3
- Version: 3.7.1
3
+ Version: 3.7.3
4
4
  Summary: The LLM Evaluation Framework
5
5
  Home-page: https://github.com/confident-ai/deepeval
6
6
  License: Apache-2.0
@@ -439,6 +439,7 @@ Using `.env.local` or `.env` is optional. If they are missing, DeepEval uses you
439
439
  ```bash
440
440
  cp .env.example .env.local
441
441
  # then edit .env.local (ignored by git)
442
+ ```
442
443
 
443
444
  <br />
444
445
 
@@ -1,5 +1,5 @@
1
1
  deepeval/__init__.py,sha256=tle4lT4FONApg3OeztGPEdrpGMEGLWajyGTu7bEd3s0,2976
2
- deepeval/_version.py,sha256=YeaRO0UgS2XgzwsbQp4bgbudO4Ac5gGPSx2CsEi9NaU,27
2
+ deepeval/_version.py,sha256=neKNug0TPAnGHtzNXdePXNla9tw6mxKTmj9WJu2trY8,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
@@ -96,7 +96,7 @@ deepeval/benchmarks/hellaswag/hellaswag.py,sha256=_3felzBwQUhhRXk4D9NbcY8dme_qUQ
96
96
  deepeval/benchmarks/hellaswag/task.py,sha256=LfO8T6bpNiwdM8VdubKrup7qje3-rHgu69iB6Sdsc6I,7323
97
97
  deepeval/benchmarks/hellaswag/template.py,sha256=TcCu25hkl89qbRwcEyRVGTGp7DU_5Eph754W2znk5QY,1279
98
98
  deepeval/benchmarks/human_eval/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
99
- deepeval/benchmarks/human_eval/human_eval.py,sha256=cx4x5OAeCrTjuUdQI7gjeSY_pUL3crfzKmieL1yKXMY,7714
99
+ deepeval/benchmarks/human_eval/human_eval.py,sha256=1xMVLQ1rQccY9Ac7BB6_1dFjo1QLK7DEMg0QXY2ybRM,7756
100
100
  deepeval/benchmarks/human_eval/task.py,sha256=lEHJpEiRbw5cXUKA_id0J5gQwae1G1T1JCJAeeTpXGg,5412
101
101
  deepeval/benchmarks/human_eval/template.py,sha256=rcCHSb0wP_FS9DQPaoBn-iwgicI1OyEdFCkZLQ1vxPk,647
102
102
  deepeval/benchmarks/ifeval/__init__.py,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1
@@ -153,15 +153,15 @@ deepeval/constants.py,sha256=J5rNXGsMKTFYJ_9Wi49qchZXuUityZjnvuy3I3TO5zk,1667
153
153
  deepeval/contextvars.py,sha256=oqXtuYiKd4Zvc1rNoR1gcRBxzZYCGTMVn7XostwvkRI,524
154
154
  deepeval/dataset/__init__.py,sha256=N2c-rkuxWYiiJSOZArw0H02Cwo7cnfzFuNYJlvsIBEg,249
155
155
  deepeval/dataset/api.py,sha256=ZxkEqAF4nZH_Ys_1f5r9N2LFI_vBcAJxt8eJm7Mplpw,831
156
- deepeval/dataset/dataset.py,sha256=Nx0Nr12_AGjOOOmmAMaC6YIX62HgK8T86FtcL9IrsF4,57798
156
+ deepeval/dataset/dataset.py,sha256=Y9U-hVoa5BbnlzwJiFiDTkDcp9E6VmKOd7NtyLmdpHY,59182
157
157
  deepeval/dataset/golden.py,sha256=T-rTk4Hw1tANx_Iimv977F6Y4QK3s5OIB4PecU5FJDM,2338
158
158
  deepeval/dataset/test_run_tracer.py,sha256=5CdpDvhzkEEBRyqWi6egocaxiN6IRS3XfbACxEQZQeM,2544
159
159
  deepeval/dataset/types.py,sha256=CWeOIBPK2WdmRUqjFa9gfN-w2da0r8Ilzl3ToDpJQoQ,558
160
- deepeval/dataset/utils.py,sha256=MRiqwt-3E5WNCHtP2kY7P1PeRtFMRpGoy3r75tJ2QFg,7910
160
+ deepeval/dataset/utils.py,sha256=nWCNmD1kyLwvlCXlN-7XiqN2W7IUOkDckc1xl32MF-U,8042
161
161
  deepeval/errors.py,sha256=FfhtULNIQqHpKVqCr-xlvTtLxkNj40qVU89sXYKuDrA,754
162
162
  deepeval/evaluate/__init__.py,sha256=315IaMiYEz7oJhZ4kPTBfeCNd1xF-wWVU6KOQnrKQpE,291
163
163
  deepeval/evaluate/api.py,sha256=rkblH0ZFAAdyuF0Ymh7JE1pIJPR9yFuPrn9SQaCEQp4,435
164
- deepeval/evaluate/compare.py,sha256=eGyDlt1eRp-R2hPDqWUpiFOMlI4LU_KKfbaXw_9SI2c,16523
164
+ deepeval/evaluate/compare.py,sha256=AJ3kR4Th44MTuL0juvvNwPdel1Q8tw37IYUgLdy2qrw,16575
165
165
  deepeval/evaluate/configs.py,sha256=QfWjaWNxLsgEe8-5j4PIs5WcSyEckiWt0qdpXSpl57M,928
166
166
  deepeval/evaluate/evaluate.py,sha256=CLc-5rlHcBkJcakYXf9twaF6G8chp95gCBe8V4B-cVo,10684
167
167
  deepeval/evaluate/execute.py,sha256=cXX4W4jX_Uly73WBLEduLv6Dqs32AWHGsgyp9tZmV1Q,134219
@@ -394,11 +394,11 @@ deepeval/metrics/turn_relevancy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm
394
394
  deepeval/metrics/turn_relevancy/schema.py,sha256=om0zFJcM6qu2GWS9aJTP3lUmuEXX8KpoACEvCsJqfq4,234
395
395
  deepeval/metrics/turn_relevancy/template.py,sha256=klZ10QI8jo4ekf-KgcWgRxS9E3AK4vgKDNzjwAYGl48,2797
396
396
  deepeval/metrics/turn_relevancy/turn_relevancy.py,sha256=cgMt0toBIwzDc8lE8Q3YztzQA_DqR4GfdDrlyX7ya6w,10385
397
- deepeval/metrics/utils.py,sha256=iSzb8mOpqT5Ciceix761zjlDUm0eMU-L4V6PyetIIeg,18778
397
+ deepeval/metrics/utils.py,sha256=gEEETXaug997fqrVW2Suceuaw1MgZAYMF4wT15Mu2Z8,18920
398
398
  deepeval/model_integrations/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
399
399
  deepeval/model_integrations/types.py,sha256=rbVMhC_2yWwD6JqzkRO9D7aMVC_KtXN686G_S7de7S8,630
400
400
  deepeval/model_integrations/utils.py,sha256=Zt9SYPgTxlGsQFZgpZvh_a5fWuL8mmIFVSe6uoQywZ4,3562
401
- deepeval/models/__init__.py,sha256=0x4EsoqtSf7sLOg28DoOoInL_D5fKPWCakkE2gJa2pM,1195
401
+ deepeval/models/__init__.py,sha256=7vANBeNkDUADNzP8cyZUoQVmExEEODlHWGcj_9ik9A8,1269
402
402
  deepeval/models/_summac_model.py,sha256=xflanxl_IBuzuainlYCVX7UvjHCnAckKSvNR2NwZI6k,19750
403
403
  deepeval/models/answer_relevancy_model.py,sha256=SLOA6uUImNOuxpPGfTg2AH7MIkf9QsotYixvI1jcVC8,2197
404
404
  deepeval/models/base_model.py,sha256=owmHhVBppPe5Zt6GK9p87dE31hoqtn5_8F9TWr97aRE,4112
@@ -422,7 +422,8 @@ deepeval/models/llms/local_model.py,sha256=hEyKVA6pkQm9dICUKsMNgjVI3w6gnyMdmBt_E
422
422
  deepeval/models/llms/ollama_model.py,sha256=xPO4d4jMY-cQAyHAcMuFvWS8JMWwCUbKP9CMi838Nuc,3307
423
423
  deepeval/models/llms/openai_model.py,sha256=1rjwbyt87fK03pw7r5tq3PjUVfl2EWllAssGyy6Dt2A,17494
424
424
  deepeval/models/llms/utils.py,sha256=gFM_8eIvdSwN_D4Yqp-j7PkfoiRn_bgu7tlCHol3A6c,1324
425
- deepeval/models/mlllms/__init__.py,sha256=19nN6kUB5XI0nUWUQX0aD9GBUMM8WWGvsDgKjuT4EF4,144
425
+ deepeval/models/mlllms/__init__.py,sha256=EgFWQcqVPhIqb90QCtIH2Np0bLSRj_beaymbuRN7Ds8,200
426
+ deepeval/models/mlllms/azure_model.py,sha256=pMpLAKZypVKMOAtyHToX8WgCcbbA8hXa2sd16DhCKEM,12696
426
427
  deepeval/models/mlllms/gemini_model.py,sha256=7tHIWD4w_fBz3L7jkKWygn1QpBPk9nl2Kw-yb0Jc3PI,10167
427
428
  deepeval/models/mlllms/ollama_model.py,sha256=_YtYtw8oIMVVI-CFsDicsdeEJUPhw_9ArPxB_1olsJA,4798
428
429
  deepeval/models/mlllms/openai_model.py,sha256=KgvYgQwWZ1A_Gcl6-4-W7IMqbUF9K8sNY37j5Ag7kQQ,9014
@@ -461,13 +462,13 @@ deepeval/synthesizer/base_synthesizer.py,sha256=ua7HDq1lemeFH5FuWdGJxMGFH5QA2CSY
461
462
  deepeval/synthesizer/chunking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
462
463
  deepeval/synthesizer/chunking/context_generator.py,sha256=ucwa-7BcPSHHf4Tu31dfyJ63Bg9HdNhGLAW5_QsfFX4,38052
463
464
  deepeval/synthesizer/chunking/doc_chunker.py,sha256=DvJmbA_NnZBGCZgxKQsxlIC29kca_d7J-Dxq9SyfzX0,10612
464
- deepeval/synthesizer/config.py,sha256=vcSi6upnmd667dAGANTTdPmY0z5sQ8Ctal7Xr4-tbhA,1934
465
- deepeval/synthesizer/schema.py,sha256=PIv3012VMg_v-Ylwn08-4tNjf4QShBSg-kaCkgtdA88,879
466
- deepeval/synthesizer/synthesizer.py,sha256=oa2m9ZqywNcSO1wUijrJ7HO-NC8-oU1g04NIS16dx6U,60306
467
- deepeval/synthesizer/templates/__init__.py,sha256=C-wSGQeMRxTdSBJbgeyAM5Iu6mkHVSYbNfz0AY9K5Yc,209
468
- deepeval/synthesizer/templates/template.py,sha256=nTH-k8XbvZQD_lagsaf6kmT6oylFjQ7gEseHYB1Zyso,39807
469
- deepeval/synthesizer/templates/template_extraction.py,sha256=NkpzP-MkoefokVJBZn9s1ErDvI3o9ocY5_ZY85zj4KE,1972
470
- deepeval/synthesizer/templates/template_prompt.py,sha256=cqtG3X2DQIs7NaaQeJrNcS4zdwgDn_l8go8ZeVHRdgI,12531
465
+ deepeval/synthesizer/config.py,sha256=rg9HzN5w_82tpzBALgt__NkAcmh0vDEoORJpjsRLWMY,2207
466
+ deepeval/synthesizer/schema.py,sha256=TFCIvXeL0TOKqfjMm2qgR4hFcvvFaPEZdQ1xTnRJqPs,1294
467
+ deepeval/synthesizer/synthesizer.py,sha256=QF02PSedde8t5Q0R9WpkWeD4tVD8fo4m4pJFu0H7jbc,110316
468
+ deepeval/synthesizer/templates/__init__.py,sha256=9UhfJFwPEdLWmxJz3ksNJps-jGYJFJnJP1U-x7j0By4,319
469
+ deepeval/synthesizer/templates/template.py,sha256=ri3dX2gzxNmL8qlkl47HD8kecmqMBF5mE-mraZvf1xU,65008
470
+ deepeval/synthesizer/templates/template_extraction.py,sha256=jmvr8AOOUzDgsHYIOsq-NaxlRQ5GygK16TTRGxBXDyM,3508
471
+ deepeval/synthesizer/templates/template_prompt.py,sha256=bzfC71AXZqBrmoDWmBvuIQKD6hPJZ0ZAWX4hy-lPlnQ,21478
471
472
  deepeval/synthesizer/types.py,sha256=wUZntvCAE29sM9K8hk9RPwUpkTip1ObOCExyMEo3sME,493
472
473
  deepeval/synthesizer/utils.py,sha256=o-9z5gApQcHqDqusgrD0LagXWAju17LVc27BxtaA7og,1018
473
474
  deepeval/telemetry.py,sha256=0k6oVhRBi1Ap6JC6SNe_9-nBnlG-uReUoS3KTrPayhk,21716
@@ -487,7 +488,7 @@ deepeval/test_run/hyperparameters.py,sha256=4yJkNgwL2y6eyWDTmUV62f5RUlfOui4R22ws
487
488
  deepeval/test_run/test_run.py,sha256=mStiBQZkgktwF99FRqkT_-UFrMT0m06X20TEEO6V2Bc,41278
488
489
  deepeval/tracing/__init__.py,sha256=aSOk_ZgL-K7CZzcyiaIa5peAiaPViDST5GhpHA3Adc8,614
489
490
  deepeval/tracing/api.py,sha256=GbtpUDdGpchl6rPXtZT6IBKjAhwux6qOlKLdP3dRVHU,4996
490
- deepeval/tracing/context.py,sha256=rzm42zYzP7jmQJO08AV-Qmw86ik45qRfF4UQNpGcmJw,5338
491
+ deepeval/tracing/context.py,sha256=v4uzd0N2H8mNntPwZvL49ya2kW9FvjqQqWXJFgE5d0c,5469
491
492
  deepeval/tracing/offline_evals/__init__.py,sha256=bEniJAl7PmS9u2ksiOTfHtlCPJ9_CJV5R6umrUOX5MM,102
492
493
  deepeval/tracing/offline_evals/api.py,sha256=eBfqh2uWyeRkIeGhjrN1bTQzAEow-XPubs-42WEZ2QQ,510
493
494
  deepeval/tracing/offline_evals/span.py,sha256=pXqTVXs-WnjRVpCYYEbNe0zSM6Wz9GsKHsM5ZcWxrmM,1802
@@ -501,12 +502,12 @@ deepeval/tracing/patchers.py,sha256=c-8Fjc5VIWB5VD9ONKq735ypW6O1pZIFQWsHR3lRh0E,
501
502
  deepeval/tracing/perf_epoch_bridge.py,sha256=iyAPddB6Op7NpMtPHJ29lDm53Btz9yLaN6xSCfTRQm4,1825
502
503
  deepeval/tracing/trace_context.py,sha256=Z0n0Cu1A5g9dXiZnzTFO5TzeOYHKeNuO6v3_EU_Gi_c,3568
503
504
  deepeval/tracing/trace_test_manager.py,sha256=wt4y7EWTRc4Bw938-UFFtXHkdFFOrnx6JaIk7J5Iulw,555
504
- deepeval/tracing/tracing.py,sha256=VWu5z6fxWP6KfDaw5ZmIkN-0yNDqe1CVHa0e9_Wjrgg,45995
505
+ deepeval/tracing/tracing.py,sha256=dx4JpiixkscEaYBR0LFpYCjeGgfZqiVlRCD-HblMo6g,46459
505
506
  deepeval/tracing/types.py,sha256=WhnxefUc5I8jcAOBQ-tsZ8_zVZfGqSvCWHD5XUN6Ggw,6040
506
507
  deepeval/tracing/utils.py,sha256=mdvhYAxDNsdnusaEXJd-c-_O2Jn6S3xSuzRvLO1Jz4U,5684
507
508
  deepeval/utils.py,sha256=zy9RR0bt3YMzWVlJc5Rl6eU5RyeW2uEjMfwD1sdgPr4,23234
508
- deepeval-3.7.1.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
509
- deepeval-3.7.1.dist-info/METADATA,sha256=9Wa2SRbSrMIRZQKNCttm8miTeo9hqneVQCZBkQAyFSA,18739
510
- deepeval-3.7.1.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
511
- deepeval-3.7.1.dist-info/entry_points.txt,sha256=fVr8UphXTfJe9I2rObmUtfU3gkSrYeM0pLy-NbJYg10,94
512
- deepeval-3.7.1.dist-info/RECORD,,
509
+ deepeval-3.7.3.dist-info/LICENSE.md,sha256=0ATkuLv6QgsJTBODUHC5Rak_PArA6gv2t7inJzNTP38,11352
510
+ deepeval-3.7.3.dist-info/METADATA,sha256=LvW_cE214Ta8lMgI-eQC3cnlO0c6yHyYw1L4B4AHxaM,18743
511
+ deepeval-3.7.3.dist-info/WHEEL,sha256=d2fvjOD7sXsVzChCqf0Ty0JbHKBaLYwDbGQDwQTnJ50,88
512
+ deepeval-3.7.3.dist-info/entry_points.txt,sha256=NoismUQfwLOojSGZmBrdcpwfaoFRAzUhBvZD3UwOKog,95
513
+ deepeval-3.7.3.dist-info/RECORD,,
@@ -2,5 +2,5 @@
2
2
  deepeval=deepeval.cli.main:app
3
3
 
4
4
  [pytest11]
5
- plugins=deepeval.plugins.plugin
5
+ deepeval=deepeval.plugins.plugin
6
6