opik-optimizer 2.0.1__tar.gz → 2.1.1__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 (94) hide show
  1. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/PKG-INFO +4 -2
  2. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/README.md +1 -0
  3. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/pyproject.toml +3 -2
  4. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/__init__.py +12 -0
  5. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/base_optimizer.py +33 -0
  6. opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/__init__.py +5 -0
  7. opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/hierarchical_reflective_optimizer.py +718 -0
  8. opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/hierarchical_root_cause_analyzer.py +355 -0
  9. opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/prompts.py +91 -0
  10. opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/reporting.py +679 -0
  11. opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/types.py +49 -0
  12. opik_optimizer-2.1.1/src/opik_optimizer/optimization_result.py +437 -0
  13. opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/__init__.py +11 -0
  14. opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/parameter_optimizer.py +382 -0
  15. opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/parameter_search_space.py +125 -0
  16. opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/parameter_spec.py +214 -0
  17. opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/search_space_types.py +24 -0
  18. opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/sensitivity_analysis.py +71 -0
  19. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer.egg-info/PKG-INFO +4 -2
  20. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer.egg-info/SOURCES.txt +12 -0
  21. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer.egg-info/requires.txt +2 -1
  22. opik_optimizer-2.0.1/src/opik_optimizer/optimization_result.py +0 -216
  23. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/LICENSE +0 -0
  24. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/setup.cfg +0 -0
  25. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/setup.py +0 -0
  26. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/_throttle.py +0 -0
  27. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/cache_config.py +0 -0
  28. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/data/context7_eval.jsonl +0 -0
  29. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/data/hotpot-500.json +0 -0
  30. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/__init__.py +0 -0
  31. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/ai2_arc.py +0 -0
  32. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/cnn_dailymail.py +0 -0
  33. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/context7_eval.py +0 -0
  34. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/election_questions.py +0 -0
  35. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/gsm8k.py +0 -0
  36. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/halu_eval.py +0 -0
  37. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/hotpot_qa.py +0 -0
  38. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/medhallu.py +0 -0
  39. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/rag_hallucinations.py +0 -0
  40. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/ragbench.py +0 -0
  41. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/tiny_test.py +0 -0
  42. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/truthful_qa.py +0 -0
  43. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/demo/__init__.py +0 -0
  44. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/demo/cache.py +0 -0
  45. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/demo/datasets.py +0 -0
  46. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/__init__.py +0 -0
  47. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/crossover_ops.py +0 -0
  48. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/evaluation_ops.py +0 -0
  49. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py +0 -0
  50. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/helpers.py +0 -0
  51. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/llm_support.py +0 -0
  52. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/mcp.py +0 -0
  53. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/mutation_ops.py +0 -0
  54. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/population_ops.py +0 -0
  55. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/prompts.py +0 -0
  56. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/reporting.py +0 -0
  57. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/style_ops.py +0 -0
  58. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/few_shot_bayesian_optimizer/__init__.py +0 -0
  59. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py +0 -0
  60. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/few_shot_bayesian_optimizer/reporting.py +0 -0
  61. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/gepa_optimizer/__init__.py +0 -0
  62. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/gepa_optimizer/adapter.py +0 -0
  63. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/gepa_optimizer/gepa_optimizer.py +0 -0
  64. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/gepa_optimizer/reporting.py +0 -0
  65. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/logging_config.py +0 -0
  66. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mcp_utils/__init__.py +0 -0
  67. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mcp_utils/mcp.py +0 -0
  68. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mcp_utils/mcp_second_pass.py +0 -0
  69. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mcp_utils/mcp_simulator.py +0 -0
  70. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mcp_utils/mcp_workflow.py +0 -0
  71. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/meta_prompt_optimizer/__init__.py +0 -0
  72. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/meta_prompt_optimizer/meta_prompt_optimizer.py +0 -0
  73. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/meta_prompt_optimizer/reporting.py +0 -0
  74. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mipro_optimizer/__init__.py +0 -0
  75. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mipro_optimizer/_lm.py +0 -0
  76. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py +0 -0
  77. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mipro_optimizer/mipro_optimizer.py +0 -0
  78. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mipro_optimizer/utils.py +0 -0
  79. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/optimizable_agent.py +0 -0
  80. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/optimization_config/__init__.py +0 -0
  81. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/optimization_config/chat_prompt.py +0 -0
  82. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/optimization_config/configs.py +0 -0
  83. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/optimization_config/mappers.py +0 -0
  84. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/py.typed +0 -0
  85. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/reporting_utils.py +0 -0
  86. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/task_evaluator.py +0 -0
  87. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/utils/__init__.py +0 -0
  88. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/utils/colbert.py +0 -0
  89. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/utils/core.py +0 -0
  90. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/utils/dataset_utils.py +0 -0
  91. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/utils/prompt_segments.py +0 -0
  92. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer.egg-info/dependency_links.txt +0 -0
  93. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer.egg-info/top_level.txt +0 -0
  94. {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/tests/test_setup.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opik_optimizer
3
- Version: 2.0.1
3
+ Version: 2.1.1
4
4
  Summary: Agent optimization with Opik
5
5
  Home-page: https://github.com/comet-ml/opik
6
6
  Author: Comet ML
@@ -18,7 +18,7 @@ Requires-Dist: dspy<3
18
18
  Requires-Dist: gepa>=0.0.7
19
19
  Requires-Dist: ujson
20
20
  Requires-Dist: hf_xet
21
- Requires-Dist: litellm
21
+ Requires-Dist: litellm<=1.75.6
22
22
  Requires-Dist: mcp>=1.0.0
23
23
  Requires-Dist: opik>=1.7.17
24
24
  Requires-Dist: optuna
@@ -32,6 +32,7 @@ Requires-Dist: pytest; extra == "dev"
32
32
  Requires-Dist: pytest-cov; extra == "dev"
33
33
  Requires-Dist: langgraph; extra == "dev"
34
34
  Requires-Dist: pre-commit; extra == "dev"
35
+ Requires-Dist: scikit-learn; extra == "dev"
35
36
  Dynamic: author
36
37
  Dynamic: home-page
37
38
  Dynamic: license-file
@@ -51,6 +52,7 @@ The Opik Agent Optimizer refines your prompts to achieve better performance from
51
52
  * **MetaPromptOptimizer** - Employs meta-prompting techniques for optimization
52
53
  * **MiproOptimizer** - Implements MIPRO (Multi-Input Prompt Optimization) algorithm
53
54
  * **GepaOptimizer** - Leverages GEPA (Genetic-Pareto) optimization approach
55
+ * **ParameterOptimizer** - Optimizes LLM call parameters (temperature, top_p, etc.) using Bayesian optimization
54
56
 
55
57
  ## 🎯 Key Features
56
58
 
@@ -12,6 +12,7 @@ The Opik Agent Optimizer refines your prompts to achieve better performance from
12
12
  * **MetaPromptOptimizer** - Employs meta-prompting techniques for optimization
13
13
  * **MiproOptimizer** - Implements MIPRO (Multi-Input Prompt Optimization) algorithm
14
14
  * **GepaOptimizer** - Leverages GEPA (Genetic-Pareto) optimization approach
15
+ * **ParameterOptimizer** - Optimizes LLM call parameters (temperature, top_p, etc.) using Bayesian optimization
15
16
 
16
17
  ## 🎯 Key Features
17
18
 
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "opik_optimizer"
3
- version = "2.0.1"
3
+ version = "2.1.1"
4
4
  description = "Agent optimization with Opik"
5
5
  authors = [
6
6
  {name = "Comet ML", email = "support@comet.com"}
@@ -16,7 +16,7 @@ dependencies = [
16
16
  "gepa>=0.0.7",
17
17
  "ujson",
18
18
  "hf_xet",
19
- "litellm",
19
+ "litellm<=1.75.6",
20
20
  "mcp>=1.0.0",
21
21
  "opik>=1.7.17",
22
22
  "optuna",
@@ -34,6 +34,7 @@ dev = [
34
34
  # "google-adk",
35
35
  "langgraph",
36
36
  "pre-commit",
37
+ "scikit-learn",
37
38
  ]
38
39
 
39
40
  [tool.setuptools.packages.find]
@@ -16,8 +16,15 @@ from .gepa_optimizer import GepaOptimizer
16
16
  from .logging_config import setup_logging
17
17
  from .meta_prompt_optimizer import MetaPromptOptimizer
18
18
  from .mipro_optimizer import MiproOptimizer
19
+ from .hierarchical_reflective_optimizer import HierarchicalReflectiveOptimizer
19
20
  from .optimization_config.configs import TaskConfig
20
21
  from .optimization_result import OptimizationResult
22
+ from .parameter_optimizer import (
23
+ ParameterOptimizer,
24
+ ParameterSearchSpace,
25
+ ParameterSpec,
26
+ ParameterType,
27
+ )
21
28
 
22
29
  __version__ = importlib.metadata.version("opik_optimizer")
23
30
 
@@ -34,9 +41,14 @@ __all__ = [
34
41
  "MetaPromptOptimizer",
35
42
  "MiproOptimizer",
36
43
  "EvolutionaryOptimizer",
44
+ "HierarchicalReflectiveOptimizer",
45
+ "ParameterOptimizer",
37
46
  "OptimizationResult",
38
47
  "OptimizableAgent",
39
48
  "setup_logging",
40
49
  "datasets",
41
50
  "TaskConfig",
51
+ "ParameterSearchSpace",
52
+ "ParameterSpec",
53
+ "ParameterType",
42
54
  ]
@@ -470,6 +470,39 @@ class BaseOptimizer(ABC):
470
470
  f"{self.__class__.__name__} does not implement optimize_mcp yet."
471
471
  )
472
472
 
473
+ def optimize_parameter(
474
+ self,
475
+ prompt: "chat_prompt.ChatPrompt",
476
+ dataset: Dataset,
477
+ metric: Callable,
478
+ parameter_space: Any,
479
+ experiment_config: dict | None = None,
480
+ n_trials: int | None = None,
481
+ n_samples: int | None = None,
482
+ agent_class: type[OptimizableAgent] | None = None,
483
+ **kwargs: Any,
484
+ ) -> optimization_result.OptimizationResult:
485
+ """
486
+ Optimize LLM call parameters such as temperature or top_k.
487
+
488
+ Args:
489
+ prompt: The chat prompt to evaluate with tuned parameters
490
+ dataset: Dataset providing evaluation examples
491
+ metric: Objective function to maximize
492
+ parameter_space: Definition of the search space for tunable parameters
493
+ experiment_config: Optional experiment metadata
494
+ n_trials: Number of trials to run (optimizer specific default if None)
495
+ n_samples: Number of dataset samples to evaluate per trial (None for all)
496
+ agent_class: Optional custom agent class to execute evaluations
497
+ **kwargs: Additional optimizer specific settings
498
+
499
+ Returns:
500
+ OptimizationResult: Structured result describing the best parameters found
501
+ """
502
+ raise NotImplementedError(
503
+ f"{self.__class__.__name__} does not implement optimize_parameter yet."
504
+ )
505
+
473
506
  def get_history(self) -> list[OptimizationRound]:
474
507
  """
475
508
  Get the optimization history.
@@ -0,0 +1,5 @@
1
+ from .hierarchical_reflective_optimizer import HierarchicalReflectiveOptimizer
2
+
3
+ __all__ = [
4
+ "HierarchicalReflectiveOptimizer",
5
+ ]