gooddata-eval 1.75.1.dev1__tar.gz → 1.75.1.dev3__tar.gz

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 (132) hide show
  1. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/PKG-INFO +3 -2
  2. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/pyproject.toml +3 -2
  3. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/scripts/verify_guardrail_refusal_criteria.py +3 -1
  4. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/cli/agentic_runner.py +13 -0
  5. gooddata_eval-1.75.1.dev3/src/gooddata_eval/core/agentic/dashboard_skill.py +1152 -0
  6. gooddata_eval-1.75.1.dev3/src/gooddata_eval/core/agentic/what_if.py +593 -0
  7. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/models.py +2 -2
  8. gooddata_eval-1.75.1.dev3/tests/test_agentic_dashboard_skill.py +1194 -0
  9. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_runner.py +1 -0
  10. gooddata_eval-1.75.1.dev3/tests/test_agentic_what_if.py +439 -0
  11. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_from_insights.py +2 -2
  12. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_scoring.py +9 -9
  13. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_trace_linker.py +1 -0
  14. gooddata_eval-1.75.1.dev1/src/gooddata_eval/core/agentic/dashboard_skill.py +0 -742
  15. gooddata_eval-1.75.1.dev1/tests/test_agentic_dashboard_skill.py +0 -679
  16. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/.gitignore +0 -0
  17. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/AGENTS.md +0 -0
  18. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/CLAUDE.md +0 -0
  19. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/LICENSE.txt +0 -0
  20. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/Makefile +0 -0
  21. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/README.md +0 -0
  22. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/__init__.py +0 -0
  23. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/_version.py +0 -0
  24. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/cli/__init__.py +0 -0
  25. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/cli/main.py +0 -0
  26. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/__init__.py +0 -0
  27. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/_output.py +0 -0
  28. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/__init__.py +0 -0
  29. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/_catalog.py +0 -0
  30. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/_gate.py +0 -0
  31. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/_langfuse.py +0 -0
  32. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/_trace_linker.py +0 -0
  33. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/alert_skill.py +0 -0
  34. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/conversation.py +0 -0
  35. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/general_question.py +0 -0
  36. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/guardrail.py +0 -0
  37. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/kda_skill.py +0 -0
  38. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/metric_skill.py +0 -0
  39. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/search_tool.py +0 -0
  40. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/agentic/visualization.py +0 -0
  41. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/chat/__init__.py +0 -0
  42. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/chat/render.py +0 -0
  43. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/chat/sse_client.py +0 -0
  44. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/config.py +0 -0
  45. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/connection.py +0 -0
  46. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/dataset/__init__.py +0 -0
  47. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/dataset/from_insights.py +0 -0
  48. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/dataset/langfuse_source.py +0 -0
  49. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/dataset/local.py +0 -0
  50. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/__init__.py +0 -0
  51. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/_deep_subset.py +0 -0
  52. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/_guardrail_criteria.py +0 -0
  53. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/_llm_judge.py +0 -0
  54. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/_maql.py +0 -0
  55. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/_text_utils.py +0 -0
  56. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/alert_skill.py +0 -0
  57. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/base.py +0 -0
  58. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/general_question.py +0 -0
  59. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/guardrail.py +0 -0
  60. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/metric_skill.py +0 -0
  61. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/search_tool.py +0 -0
  62. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/summary.py +0 -0
  63. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/evaluators/visualization.py +0 -0
  64. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/granularity.py +0 -0
  65. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/langfuse/__init__.py +0 -0
  66. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/langfuse/_env.py +0 -0
  67. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/langfuse/client.py +0 -0
  68. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/langfuse/experiment.py +0 -0
  69. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/langfuse/observations.py +0 -0
  70. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/langfuse/otlp.py +0 -0
  71. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/langfuse/sink.py +0 -0
  72. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/reporting/__init__.py +0 -0
  73. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/reporting/console.py +0 -0
  74. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/reporting/html_report.py +0 -0
  75. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/reporting/json_report.py +0 -0
  76. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/reporting/report_template.html +0 -0
  77. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/runner.py +0 -0
  78. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/scoring.py +0 -0
  79. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/summary/__init__.py +0 -0
  80. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/summary/http_client.py +0 -0
  81. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/timing.py +0 -0
  82. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/src/gooddata_eval/core/workspace.py +0 -0
  83. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/__init__.py +0 -0
  84. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/_fake_langfuse.py +0 -0
  85. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/conftest.py +0 -0
  86. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/fixtures/sample_dataset/metric_skill_create.json +0 -0
  87. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/fixtures/sample_dataset/visualization_revenue.json +0 -0
  88. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/fixtures/sse_visualization_stream.txt +0 -0
  89. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_alert_skill.py +0 -0
  90. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_conversation.py +0 -0
  91. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_gate.py +0 -0
  92. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_general_question.py +0 -0
  93. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_guardrail.py +0 -0
  94. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_kda_skill.py +0 -0
  95. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_langfuse_trace.py +0 -0
  96. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_metric_skill.py +0 -0
  97. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_observe_experiment.py +0 -0
  98. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_run_context.py +0 -0
  99. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_search_tool.py +0 -0
  100. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_agentic_visualization.py +0 -0
  101. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_alert_skill_evaluator.py +0 -0
  102. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_chat_render.py +0 -0
  103. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_cli.py +0 -0
  104. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_connection.py +0 -0
  105. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_deep_subset.py +0 -0
  106. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_fake_langfuse.py +0 -0
  107. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_guardrail_criteria.py +0 -0
  108. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_html_report.py +0 -0
  109. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_langfuse_client.py +0 -0
  110. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_langfuse_e2e_fake_server.py +0 -0
  111. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_langfuse_env.py +0 -0
  112. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_langfuse_experiment.py +0 -0
  113. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_langfuse_observations.py +0 -0
  114. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_langfuse_otlp.py +0 -0
  115. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_langfuse_sink.py +0 -0
  116. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_langfuse_source.py +0 -0
  117. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_llm_judge.py +0 -0
  118. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_local_loader.py +0 -0
  119. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_maql_normalize.py +0 -0
  120. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_metric_skill_evaluator.py +0 -0
  121. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_models.py +0 -0
  122. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_reporting.py +0 -0
  123. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_runner.py +0 -0
  124. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_search_tool_evaluator.py +0 -0
  125. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_sse_client.py +0 -0
  126. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_summary_client.py +0 -0
  127. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_summary_evaluator.py +0 -0
  128. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_text_evaluators.py +0 -0
  129. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_timing.py +0 -0
  130. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_visualization_evaluator.py +0 -0
  131. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tests/test_workspace.py +0 -0
  132. {gooddata_eval-1.75.1.dev1 → gooddata_eval-1.75.1.dev3}/tox.ini +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: gooddata-eval
3
- Version: 1.75.1.dev1
3
+ Version: 1.75.1.dev3
4
4
  Summary: Evaluate the GoodData AI agent against your own questions and models.
5
5
  Project-URL: Source, https://github.com/gooddata/gooddata-python-sdk
6
6
  Author-email: GoodData <support@gooddata.com>
@@ -17,8 +17,9 @@ Classifier: Topic :: Scientific/Engineering
17
17
  Classifier: Topic :: Software Development
18
18
  Classifier: Typing :: Typed
19
19
  Requires-Python: >=3.10
20
- Requires-Dist: gooddata-sdk~=1.75.1.dev1
20
+ Requires-Dist: gooddata-sdk~=1.75.1.dev3
21
21
  Requires-Dist: httpx<1.0,>=0.27
22
+ Requires-Dist: jsonpatch<2.0,>=1.33
22
23
  Requires-Dist: orjson<4.0.0,>=3.9.15
23
24
  Requires-Dist: pydantic<3.0,>=2.6
24
25
  Requires-Dist: rich<15.0,>=13.0
@@ -1,7 +1,7 @@
1
1
  # (C) 2026 GoodData Corporation
2
2
  [project]
3
3
  name = "gooddata-eval"
4
- version = "1.75.1.dev1"
4
+ version = "1.75.1.dev3"
5
5
  description = "Evaluate the GoodData AI agent against your own questions and models."
6
6
  readme = "README.md"
7
7
  license = "MIT"
@@ -11,8 +11,9 @@ authors = [
11
11
  keywords = ["gooddata", "ai", "evaluation", "llm", "analytics", "cli"]
12
12
  requires-python = ">=3.10"
13
13
  dependencies = [
14
- "gooddata-sdk~=1.75.1.dev1",
14
+ "gooddata-sdk~=1.75.1.dev3",
15
15
  "httpx>=0.27,<1.0",
16
+ "jsonpatch>=1.33,<2.0",
16
17
  "orjson>=3.9.15,<4.0.0",
17
18
  "pydantic>=2.6,<3.0",
18
19
  "rich>=13.0,<15.0",
@@ -39,7 +39,9 @@ import os
39
39
 
40
40
  from dotenv import load_dotenv
41
41
 
42
- load_dotenv("/Users/petertomko/gdc-mic-ai-evaluation/.env")
42
+ # Whatever .env the caller points at, defaulting to the working directory. It used to be an
43
+ # absolute path, which made the script runnable on exactly one machine.
44
+ load_dotenv(os.environ.get("GD_EVAL_ENV_FILE", ".env"))
43
45
 
44
46
  from gooddata_eval.core.agentic.guardrail import _GUARDRAIL_EVALUATION_STEPS # noqa: E402
45
47
  from gooddata_eval.core.evaluators._guardrail_criteria import ( # noqa: E402
@@ -20,6 +20,7 @@ from gooddata_eval.core.agentic.kda_skill import evaluate_agentic_kda_skill
20
20
  from gooddata_eval.core.agentic.metric_skill import evaluate_agentic_metric_skill
21
21
  from gooddata_eval.core.agentic.search_tool import evaluate_agentic_search_tool
22
22
  from gooddata_eval.core.agentic.visualization import evaluate_agentic_visualization
23
+ from gooddata_eval.core.agentic.what_if import evaluate_agentic_what_if
23
24
  from gooddata_eval.core.config import ReasoningEffort
24
25
  from gooddata_eval.core.models import AgenticEvalOutcome, CreatedVisualization, DatasetItem
25
26
  from gooddata_eval.core.runner import EvalReport, ItemReport
@@ -47,6 +48,7 @@ AGENTIC_TEST_KINDS = frozenset(
47
48
  "agentic_guardrail",
48
49
  "agentic_conversation",
49
50
  "agentic_kda_skill",
51
+ "agentic_what_if",
50
52
  }
51
53
  )
52
54
 
@@ -265,6 +267,17 @@ def _dispatch_agentic(
265
267
  agent_id=agent_id,
266
268
  **lf_kw,
267
269
  )
270
+ elif kind == "agentic_what_if":
271
+ return evaluate_agentic_what_if(
272
+ host=host,
273
+ token=token,
274
+ workspace_id=workspace_id,
275
+ question=item.question,
276
+ expected_output=eo if isinstance(eo, dict) else {},
277
+ k=k,
278
+ agent_id=agent_id,
279
+ **lf_kw,
280
+ )
268
281
  elif kind == "agentic_conversation":
269
282
  fixture_data = eo.get("fixture") or eo if isinstance(eo, dict) else {}
270
283
  return evaluate_agentic_conversation(