opik-optimizer 0.7.4__tar.gz → 0.7.6__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-0.7.4/src/opik_optimizer.egg-info → opik_optimizer-0.7.6}/PKG-INFO +1 -1
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/setup.py +1 -1
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py +6 -2
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/meta_prompt_optimizer.py +2 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py +12 -2
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/mipro_optimizer.py +8 -1
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6/src/opik_optimizer.egg-info}/PKG-INFO +1 -1
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/LICENSE +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/README.md +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/setup.cfg +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/__init__.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/_throttle.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/base_optimizer.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/cache_config.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/data/hotpot-500.json +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/demo/__init__.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/demo/cache.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/demo/datasets.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/evolutionary_optimizer/__init__.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/few_shot_bayesian_optimizer/__init__.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/few_shot_bayesian_optimizer/prompt_parameter.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/few_shot_bayesian_optimizer/prompt_templates.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/integrations/__init__.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/logging_config.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/__init__.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/_lm.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/utils.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_config/__init__.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_config/configs.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_config/mappers.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_result.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/task_evaluator.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/utils.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer.egg-info/SOURCES.txt +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer.egg-info/dependency_links.txt +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer.egg-info/requires.txt +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer.egg-info/top_level.txt +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_base_optimizer.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_example.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_few_shot_bayesian_optimizer.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_mappers.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_optimization_dsl.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_optimization_result.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_task_evaluator.py +0 -0
- {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_utils.py +0 -0
@@ -25,6 +25,7 @@ _limiter = _throttle.get_rate_limiter_for_current_opik_installation()
|
|
25
25
|
|
26
26
|
logger = logging.getLogger(__name__)
|
27
27
|
|
28
|
+
|
28
29
|
@_throttle.rate_limited(_limiter)
|
29
30
|
def _call_model(model, messages, seed, model_kwargs):
|
30
31
|
model_kwargs = opik_litellm_monitor.try_add_opik_monitoring_to_params(model_kwargs)
|
@@ -84,7 +85,7 @@ class FewShotBayesianOptimizer(base_optimizer.BaseOptimizer):
|
|
84
85
|
split_idx = int(len(dataset) * train_ratio)
|
85
86
|
return dataset[:split_idx], dataset[split_idx:]
|
86
87
|
|
87
|
-
def _optimize_prompt(
|
88
|
+
def _optimize_prompt(
|
88
89
|
self,
|
89
90
|
dataset: Union[str, Dataset],
|
90
91
|
metric_config: MetricConfig,
|
@@ -171,7 +172,9 @@ class FewShotBayesianOptimizer(base_optimizer.BaseOptimizer):
|
|
171
172
|
"n_examples", self.min_examples, self.max_examples
|
172
173
|
)
|
173
174
|
example_indices = [
|
174
|
-
trial.suggest_categorical(
|
175
|
+
trial.suggest_categorical(
|
176
|
+
f"example_{i}", list(range(len(dataset_items)))
|
177
|
+
)
|
175
178
|
for i in range(n_examples)
|
176
179
|
]
|
177
180
|
trial.set_user_attr("example_indices", example_indices)
|
@@ -256,6 +259,7 @@ class FewShotBayesianOptimizer(base_optimizer.BaseOptimizer):
|
|
256
259
|
main_prompt_string = best_param.instruction
|
257
260
|
|
258
261
|
return optimization_result.OptimizationResult(
|
262
|
+
optimizer=self.__class__.__name__,
|
259
263
|
prompt=main_prompt_string,
|
260
264
|
score=best_score,
|
261
265
|
metric_name=metric_config.metric.name,
|
@@ -29,6 +29,7 @@ logger = logging.getLogger(__name__) # Gets logger configured by setup_logging
|
|
29
29
|
|
30
30
|
_rate_limiter = _throttle.get_rate_limiter_for_current_opik_installation()
|
31
31
|
|
32
|
+
|
32
33
|
class MetaPromptOptimizer(BaseOptimizer):
|
33
34
|
"""Optimizer that uses meta-prompting to improve prompts based on examples and performance."""
|
34
35
|
|
@@ -873,6 +874,7 @@ class MetaPromptOptimizer(BaseOptimizer):
|
|
873
874
|
}
|
874
875
|
|
875
876
|
return OptimizationResult(
|
877
|
+
optimizer=self.__class__.__name__,
|
876
878
|
prompt=best_prompt,
|
877
879
|
score=best_score,
|
878
880
|
metric_name=metric_config.metric.name,
|
@@ -54,6 +54,16 @@ from opik_optimizer import task_evaluator
|
|
54
54
|
from opik_optimizer.optimization_config.configs import MetricConfig, TaskConfig
|
55
55
|
from opik_optimizer.optimization_config import mappers
|
56
56
|
|
57
|
+
def get_prompt(program):
|
58
|
+
"""
|
59
|
+
Get the system prompt from the program
|
60
|
+
"""
|
61
|
+
if hasattr(program, "react"):
|
62
|
+
instructions = program.react.signature.instructions
|
63
|
+
else:
|
64
|
+
instructions = program.signature.instructions
|
65
|
+
|
66
|
+
return instructions
|
57
67
|
|
58
68
|
class MIPROv2(Teleprompter):
|
59
69
|
def __init__(
|
@@ -547,7 +557,7 @@ class MIPROv2(Teleprompter):
|
|
547
557
|
for l in demo:
|
548
558
|
for example in l:
|
549
559
|
examples.append(example.toDict())
|
550
|
-
prompt = program
|
560
|
+
prompt = get_prompt(program)
|
551
561
|
experiment_config = {
|
552
562
|
**self.experiment_config,
|
553
563
|
**{"configuration": {
|
@@ -928,7 +938,7 @@ class MIPROv2(Teleprompter):
|
|
928
938
|
for l in demo:
|
929
939
|
for example in l:
|
930
940
|
examples.append(example.toDict())
|
931
|
-
prompt = highest_mean_program
|
941
|
+
prompt = get_prompt(highest_mean_program)
|
932
942
|
experiment_config = {
|
933
943
|
**self.experiment_config,
|
934
944
|
**{"configuration": {
|
{opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/mipro_optimizer.py
RENAMED
@@ -196,6 +196,7 @@ class MiproOptimizer(BaseOptimizer):
|
|
196
196
|
task_config: TaskConfig,
|
197
197
|
num_candidates: int = 10,
|
198
198
|
experiment_config: Optional[Dict] = None,
|
199
|
+
num_trials: Optional[int] = 3,
|
199
200
|
**kwargs,
|
200
201
|
) -> OptimizationResult:
|
201
202
|
self._opik_client = opik.Opik()
|
@@ -222,6 +223,7 @@ class MiproOptimizer(BaseOptimizer):
|
|
222
223
|
num_candidates=num_candidates,
|
223
224
|
experiment_config=experiment_config,
|
224
225
|
optimization_id=optimization.id if optimization is not None else None,
|
226
|
+
num_trials=num_trials,
|
225
227
|
**kwargs,
|
226
228
|
)
|
227
229
|
if optimization:
|
@@ -241,6 +243,7 @@ class MiproOptimizer(BaseOptimizer):
|
|
241
243
|
num_candidates: int = 10,
|
242
244
|
experiment_config: Optional[Dict] = None,
|
243
245
|
optimization_id: Optional[str] = None,
|
246
|
+
num_trials: Optional[int] = 3,
|
244
247
|
**kwargs,
|
245
248
|
) -> OptimizationResult:
|
246
249
|
logger.info("Preparing MIPRO optimization...")
|
@@ -251,6 +254,7 @@ class MiproOptimizer(BaseOptimizer):
|
|
251
254
|
num_candidates=num_candidates,
|
252
255
|
experiment_config=experiment_config,
|
253
256
|
optimization_id=optimization_id,
|
257
|
+
num_trials=num_trials,
|
254
258
|
**kwargs,
|
255
259
|
)
|
256
260
|
logger.info("Starting MIPRO compilation...")
|
@@ -266,6 +270,7 @@ class MiproOptimizer(BaseOptimizer):
|
|
266
270
|
num_candidates: int = 10,
|
267
271
|
experiment_config: Optional[Dict] = None,
|
268
272
|
optimization_id: Optional[str] = None,
|
273
|
+
num_trials: Optional[int] = 3,
|
269
274
|
**kwargs,
|
270
275
|
) -> None:
|
271
276
|
# FIXME: Intermediate values:
|
@@ -279,6 +284,7 @@ class MiproOptimizer(BaseOptimizer):
|
|
279
284
|
self.input_key = input_key
|
280
285
|
self.output_key = output_key
|
281
286
|
self.prompt = prompt
|
287
|
+
self.num_trials = num_trials
|
282
288
|
|
283
289
|
# Convert to values for MIPRO:
|
284
290
|
if isinstance(dataset, str):
|
@@ -319,6 +325,7 @@ class MiproOptimizer(BaseOptimizer):
|
|
319
325
|
"metric": metric.name,
|
320
326
|
"num_threads": self.num_threads,
|
321
327
|
"num_candidates": self.num_candidates,
|
328
|
+
"num_trails": self.num_trials,
|
322
329
|
"dataset": dataset.name,
|
323
330
|
},
|
324
331
|
}
|
@@ -359,7 +366,7 @@ class MiproOptimizer(BaseOptimizer):
|
|
359
366
|
trainset=self.trainset,
|
360
367
|
provide_traceback=True,
|
361
368
|
requires_permission_to_run=False,
|
362
|
-
num_trials=
|
369
|
+
num_trials=self.num_trials,
|
363
370
|
)
|
364
371
|
self.best_programs = sorted(
|
365
372
|
self.results.candidate_programs,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/evolutionary_optimizer/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_config/__init__.py
RENAMED
File without changes
|
{opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_config/configs.py
RENAMED
File without changes
|
{opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_config/mappers.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
{opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer.egg-info/dependency_links.txt
RENAMED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|