opik-optimizer 0.7.6__tar.gz → 0.7.8__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.6/src/opik_optimizer.egg-info → opik_optimizer-0.7.8}/PKG-INFO +1 -1
  2. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/setup.py +1 -1
  3. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/mipro_optimizer.py +16 -4
  4. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/utils.py +8 -1
  5. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8/src/opik_optimizer.egg-info}/PKG-INFO +1 -1
  6. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/LICENSE +0 -0
  7. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/README.md +0 -0
  8. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/setup.cfg +0 -0
  9. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/__init__.py +0 -0
  10. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/_throttle.py +0 -0
  11. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/base_optimizer.py +0 -0
  12. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/cache_config.py +0 -0
  13. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/data/hotpot-500.json +0 -0
  14. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/demo/__init__.py +0 -0
  15. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/demo/cache.py +0 -0
  16. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/demo/datasets.py +0 -0
  17. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/evolutionary_optimizer/__init__.py +0 -0
  18. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py +0 -0
  19. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/few_shot_bayesian_optimizer/__init__.py +0 -0
  20. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py +0 -0
  21. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/few_shot_bayesian_optimizer/prompt_parameter.py +0 -0
  22. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/few_shot_bayesian_optimizer/prompt_templates.py +0 -0
  23. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/integrations/__init__.py +0 -0
  24. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/logging_config.py +0 -0
  25. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/meta_prompt_optimizer.py +0 -0
  26. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/__init__.py +0 -0
  27. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/_lm.py +0 -0
  28. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py +0 -0
  29. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/optimization_config/__init__.py +0 -0
  30. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/optimization_config/configs.py +0 -0
  31. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/optimization_config/mappers.py +0 -0
  32. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/optimization_result.py +0 -0
  33. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/task_evaluator.py +0 -0
  34. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/utils.py +0 -0
  35. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer.egg-info/SOURCES.txt +0 -0
  36. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer.egg-info/dependency_links.txt +0 -0
  37. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer.egg-info/requires.txt +0 -0
  38. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer.egg-info/top_level.txt +0 -0
  39. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_base_optimizer.py +0 -0
  40. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_example.py +0 -0
  41. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_few_shot_bayesian_optimizer.py +0 -0
  42. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_mappers.py +0 -0
  43. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_optimization_dsl.py +0 -0
  44. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_optimization_result.py +0 -0
  45. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_task_evaluator.py +0 -0
  46. {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/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.6
3
+ Version: 0.7.8
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.6",
5
+ version="0.7.8",
6
6
  description="Agent optimization with Opik",
7
7
  author="Comet ML",
8
8
  author_email="support@comet.com",
@@ -1,4 +1,4 @@
1
- from typing import Any, Dict, List, Tuple, Union, Optional
1
+ from typing import Any, Dict, List, Tuple, Union, Optional, Literal
2
2
  import os
3
3
  import random
4
4
 
@@ -197,6 +197,8 @@ class MiproOptimizer(BaseOptimizer):
197
197
  num_candidates: int = 10,
198
198
  experiment_config: Optional[Dict] = None,
199
199
  num_trials: Optional[int] = 3,
200
+ n_samples: Optional[int] = 10,
201
+ auto: Optional[Literal["light", "medium", "heavy"]] = "light",
200
202
  **kwargs,
201
203
  ) -> OptimizationResult:
202
204
  self._opik_client = opik.Opik()
@@ -224,6 +226,8 @@ class MiproOptimizer(BaseOptimizer):
224
226
  experiment_config=experiment_config,
225
227
  optimization_id=optimization.id if optimization is not None else None,
226
228
  num_trials=num_trials,
229
+ n_samples=n_samples,
230
+ auto=auto,
227
231
  **kwargs,
228
232
  )
229
233
  if optimization:
@@ -244,6 +248,8 @@ class MiproOptimizer(BaseOptimizer):
244
248
  experiment_config: Optional[Dict] = None,
245
249
  optimization_id: Optional[str] = None,
246
250
  num_trials: Optional[int] = 3,
251
+ n_samples: Optional[int] = 10,
252
+ auto: Optional[Literal["light", "medium", "heavy"]] = "light",
247
253
  **kwargs,
248
254
  ) -> OptimizationResult:
249
255
  logger.info("Preparing MIPRO optimization...")
@@ -255,6 +261,8 @@ class MiproOptimizer(BaseOptimizer):
255
261
  experiment_config=experiment_config,
256
262
  optimization_id=optimization_id,
257
263
  num_trials=num_trials,
264
+ n_samples=n_samples,
265
+ auto=auto,
258
266
  **kwargs,
259
267
  )
260
268
  logger.info("Starting MIPRO compilation...")
@@ -271,6 +279,8 @@ class MiproOptimizer(BaseOptimizer):
271
279
  experiment_config: Optional[Dict] = None,
272
280
  optimization_id: Optional[str] = None,
273
281
  num_trials: Optional[int] = 3,
282
+ n_samples: Optional[int] = 10,
283
+ auto: Optional[Literal["light", "medium", "heavy"]] = "light",
274
284
  **kwargs,
275
285
  ) -> None:
276
286
  # FIXME: Intermediate values:
@@ -285,6 +295,8 @@ class MiproOptimizer(BaseOptimizer):
285
295
  self.output_key = output_key
286
296
  self.prompt = prompt
287
297
  self.num_trials = num_trials
298
+ self.n_samples = n_samples
299
+ self.auto = auto
288
300
 
289
301
  # Convert to values for MIPRO:
290
302
  if isinstance(dataset, str):
@@ -300,7 +312,7 @@ class MiproOptimizer(BaseOptimizer):
300
312
  if self.output_key not in row:
301
313
  raise Exception("row does not contain output_key: %r" % self.output_key)
302
314
 
303
- self.trainset = create_dspy_training_set(self.dataset, self.input_key)
315
+ self.trainset = create_dspy_training_set(self.dataset, self.input_key, self.n_samples)
304
316
  self.data_signature = create_dspy_signature(
305
317
  self.input_key, self.output_key, self.prompt
306
318
  )
@@ -325,7 +337,7 @@ class MiproOptimizer(BaseOptimizer):
325
337
  "metric": metric.name,
326
338
  "num_threads": self.num_threads,
327
339
  "num_candidates": self.num_candidates,
328
- "num_trails": self.num_trials,
340
+ "num_trials": self.num_trials,
329
341
  "dataset": dataset.name,
330
342
  },
331
343
  }
@@ -333,7 +345,7 @@ class MiproOptimizer(BaseOptimizer):
333
345
  # Initialize the optimizer:
334
346
  self.optimizer = MIPROv2(
335
347
  metric=self.metric_function,
336
- auto="light",
348
+ auto=self.auto,
337
349
  num_threads=self.num_threads,
338
350
  verbose=False,
339
351
  num_candidates=self.num_candidates,
@@ -3,6 +3,7 @@ from typing import Any, Dict, List, Tuple, Union, Optional
3
3
  import uuid
4
4
  import dspy
5
5
  import re
6
+ import random
6
7
 
7
8
  from dspy.signatures.signature import make_signature
8
9
 
@@ -78,11 +79,17 @@ def opik_metric_to_dspy(metric, output):
78
79
  return opik_metric_score_wrapper
79
80
 
80
81
 
81
- def create_dspy_training_set(data: list[dict], input: str) -> list[dspy.Example]:
82
+ def create_dspy_training_set(
83
+ data: list[dict], input: str, n_samples: Optional[int] = None
84
+ ) -> list[dspy.Example]:
82
85
  """
83
86
  Turn a list of dicts into a list of dspy Examples
84
87
  """
85
88
  output = []
89
+
90
+ if n_samples is not None:
91
+ data = random.sample(data, n_samples)
92
+
86
93
  for example in data:
87
94
  example_obj = dspy.Example(
88
95
  **example, dspy_uuid=str(uuid.uuid4()), dspy_split="train"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opik_optimizer
3
- Version: 0.7.6
3
+ Version: 0.7.8
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