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.
- {opik_optimizer-0.7.6/src/opik_optimizer.egg-info → opik_optimizer-0.7.8}/PKG-INFO +1 -1
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/setup.py +1 -1
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/mipro_optimizer.py +16 -4
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/utils.py +8 -1
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8/src/opik_optimizer.egg-info}/PKG-INFO +1 -1
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/LICENSE +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/README.md +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/setup.cfg +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/__init__.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/_throttle.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/base_optimizer.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/cache_config.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/data/hotpot-500.json +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/demo/__init__.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/demo/cache.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/demo/datasets.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/evolutionary_optimizer/__init__.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/few_shot_bayesian_optimizer/__init__.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/few_shot_bayesian_optimizer/prompt_parameter.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/few_shot_bayesian_optimizer/prompt_templates.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/integrations/__init__.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/logging_config.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/meta_prompt_optimizer.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/__init__.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/_lm.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/optimization_config/__init__.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/optimization_config/configs.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/optimization_config/mappers.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/optimization_result.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/task_evaluator.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/utils.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer.egg-info/SOURCES.txt +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer.egg-info/dependency_links.txt +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer.egg-info/requires.txt +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer.egg-info/top_level.txt +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_base_optimizer.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_example.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_few_shot_bayesian_optimizer.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_mappers.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_optimization_dsl.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_optimization_result.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_task_evaluator.py +0 -0
- {opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/tests/test_utils.py +0 -0
{opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/mipro_optimizer.py
RENAMED
@@ -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
|
-
"
|
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=
|
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(
|
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"
|
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.6 → opik_optimizer-0.7.8}/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
|
File without changes
|
File without changes
|
{opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/mipro_optimizer/__init__.py
RENAMED
File without changes
|
File without changes
|
File without changes
|
{opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/optimization_config/__init__.py
RENAMED
File without changes
|
{opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/src/opik_optimizer/optimization_config/configs.py
RENAMED
File without changes
|
{opik_optimizer-0.7.6 → opik_optimizer-0.7.8}/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.6 → opik_optimizer-0.7.8}/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
|