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.
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/PKG-INFO +4 -2
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/README.md +1 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/pyproject.toml +3 -2
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/__init__.py +12 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/base_optimizer.py +33 -0
- opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/__init__.py +5 -0
- opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/hierarchical_reflective_optimizer.py +718 -0
- opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/hierarchical_root_cause_analyzer.py +355 -0
- opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/prompts.py +91 -0
- opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/reporting.py +679 -0
- opik_optimizer-2.1.1/src/opik_optimizer/hierarchical_reflective_optimizer/types.py +49 -0
- opik_optimizer-2.1.1/src/opik_optimizer/optimization_result.py +437 -0
- opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/__init__.py +11 -0
- opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/parameter_optimizer.py +382 -0
- opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/parameter_search_space.py +125 -0
- opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/parameter_spec.py +214 -0
- opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/search_space_types.py +24 -0
- opik_optimizer-2.1.1/src/opik_optimizer/parameter_optimizer/sensitivity_analysis.py +71 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer.egg-info/PKG-INFO +4 -2
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer.egg-info/SOURCES.txt +12 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer.egg-info/requires.txt +2 -1
- opik_optimizer-2.0.1/src/opik_optimizer/optimization_result.py +0 -216
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/LICENSE +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/setup.cfg +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/setup.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/_throttle.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/cache_config.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/data/context7_eval.jsonl +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/data/hotpot-500.json +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/__init__.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/ai2_arc.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/cnn_dailymail.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/context7_eval.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/election_questions.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/gsm8k.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/halu_eval.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/hotpot_qa.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/medhallu.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/rag_hallucinations.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/ragbench.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/tiny_test.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/datasets/truthful_qa.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/demo/__init__.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/demo/cache.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/demo/datasets.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/__init__.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/crossover_ops.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/evaluation_ops.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/helpers.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/llm_support.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/mcp.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/mutation_ops.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/population_ops.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/prompts.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/reporting.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/evolutionary_optimizer/style_ops.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/few_shot_bayesian_optimizer/__init__.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/few_shot_bayesian_optimizer/reporting.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/gepa_optimizer/__init__.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/gepa_optimizer/adapter.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/gepa_optimizer/gepa_optimizer.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/gepa_optimizer/reporting.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/logging_config.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mcp_utils/__init__.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mcp_utils/mcp.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mcp_utils/mcp_second_pass.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mcp_utils/mcp_simulator.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mcp_utils/mcp_workflow.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/meta_prompt_optimizer/__init__.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/meta_prompt_optimizer/meta_prompt_optimizer.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/meta_prompt_optimizer/reporting.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mipro_optimizer/__init__.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mipro_optimizer/_lm.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mipro_optimizer/mipro_optimizer.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/mipro_optimizer/utils.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/optimizable_agent.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/optimization_config/__init__.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/optimization_config/chat_prompt.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/optimization_config/configs.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/optimization_config/mappers.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/py.typed +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/reporting_utils.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/task_evaluator.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/utils/__init__.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/utils/colbert.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/utils/core.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/utils/dataset_utils.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer/utils/prompt_segments.py +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer.egg-info/dependency_links.txt +0 -0
- {opik_optimizer-2.0.1 → opik_optimizer-2.1.1}/src/opik_optimizer.egg-info/top_level.txt +0 -0
- {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.
|
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.
|
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.
|