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.
Files changed (46) hide show
  1. {opik_optimizer-0.7.4/src/opik_optimizer.egg-info → opik_optimizer-0.7.6}/PKG-INFO +1 -1
  2. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/setup.py +1 -1
  3. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py +6 -2
  4. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/meta_prompt_optimizer.py +2 -0
  5. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py +12 -2
  6. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/mipro_optimizer.py +8 -1
  7. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6/src/opik_optimizer.egg-info}/PKG-INFO +1 -1
  8. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/LICENSE +0 -0
  9. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/README.md +0 -0
  10. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/setup.cfg +0 -0
  11. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/__init__.py +0 -0
  12. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/_throttle.py +0 -0
  13. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/base_optimizer.py +0 -0
  14. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/cache_config.py +0 -0
  15. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/data/hotpot-500.json +0 -0
  16. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/demo/__init__.py +0 -0
  17. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/demo/cache.py +0 -0
  18. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/demo/datasets.py +0 -0
  19. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/evolutionary_optimizer/__init__.py +0 -0
  20. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py +0 -0
  21. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/few_shot_bayesian_optimizer/__init__.py +0 -0
  22. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/few_shot_bayesian_optimizer/prompt_parameter.py +0 -0
  23. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/few_shot_bayesian_optimizer/prompt_templates.py +0 -0
  24. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/integrations/__init__.py +0 -0
  25. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/logging_config.py +0 -0
  26. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/__init__.py +0 -0
  27. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/_lm.py +0 -0
  28. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/mipro_optimizer/utils.py +0 -0
  29. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_config/__init__.py +0 -0
  30. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_config/configs.py +0 -0
  31. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_config/mappers.py +0 -0
  32. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/optimization_result.py +0 -0
  33. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/task_evaluator.py +0 -0
  34. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer/utils.py +0 -0
  35. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer.egg-info/SOURCES.txt +0 -0
  36. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer.egg-info/dependency_links.txt +0 -0
  37. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer.egg-info/requires.txt +0 -0
  38. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/src/opik_optimizer.egg-info/top_level.txt +0 -0
  39. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_base_optimizer.py +0 -0
  40. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_example.py +0 -0
  41. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_few_shot_bayesian_optimizer.py +0 -0
  42. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_mappers.py +0 -0
  43. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_optimization_dsl.py +0 -0
  44. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_optimization_result.py +0 -0
  45. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_task_evaluator.py +0 -0
  46. {opik_optimizer-0.7.4 → opik_optimizer-0.7.6}/tests/test_utils.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opik_optimizer
3
- Version: 0.7.4
3
+ Version: 0.7.6
4
4
  Summary: Agent optimization with Opik
5
5
  Home-page: https://github.com/comet-ml/opik
6
6
  Author: Comet ML
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="opik_optimizer",
5
- version="0.7.4",
5
+ version="0.7.6",
6
6
  description="Agent optimization with Opik",
7
7
  author="Comet ML",
8
8
  author_email="support@comet.com",
@@ -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(f"example_{i}", list(range(len(dataset_items))))
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.signature.instructions
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.signature.instructions
941
+ prompt = get_prompt(highest_mean_program)
932
942
  experiment_config = {
933
943
  **self.experiment_config,
934
944
  **{"configuration": {
@@ -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=3,
369
+ num_trials=self.num_trials,
363
370
  )
364
371
  self.best_programs = sorted(
365
372
  self.results.candidate_programs,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opik_optimizer
3
- Version: 0.7.4
3
+ Version: 0.7.6
4
4
  Summary: Agent optimization with Opik
5
5
  Home-page: https://github.com/comet-ml/opik
6
6
  Author: Comet ML
File without changes
File without changes
File without changes