opik-optimizer 1.1.0__py3-none-any.whl → 2.0.0__py3-none-any.whl
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/__init__.py +2 -0
- opik_optimizer/base_optimizer.py +376 -19
- opik_optimizer/evolutionary_optimizer/evaluation_ops.py +80 -17
- opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py +179 -39
- opik_optimizer/evolutionary_optimizer/llm_support.py +3 -1
- opik_optimizer/evolutionary_optimizer/mcp.py +249 -0
- opik_optimizer/evolutionary_optimizer/mutation_ops.py +17 -3
- opik_optimizer/evolutionary_optimizer/population_ops.py +5 -0
- opik_optimizer/evolutionary_optimizer/prompts.py +47 -0
- opik_optimizer/evolutionary_optimizer/reporting.py +12 -0
- opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py +65 -59
- opik_optimizer/gepa_optimizer/adapter.py +5 -3
- opik_optimizer/gepa_optimizer/gepa_optimizer.py +163 -66
- opik_optimizer/mcp_utils/mcp_workflow.py +57 -3
- opik_optimizer/meta_prompt_optimizer/meta_prompt_optimizer.py +75 -69
- opik_optimizer/mipro_optimizer/_lm.py +10 -3
- opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py +1 -1
- opik_optimizer/mipro_optimizer/mipro_optimizer.py +96 -21
- opik_optimizer/optimizable_agent.py +5 -0
- opik_optimizer/optimization_result.py +1 -0
- opik_optimizer/utils/core.py +56 -14
- {opik_optimizer-1.1.0.dist-info → opik_optimizer-2.0.0.dist-info}/METADATA +96 -9
- {opik_optimizer-1.1.0.dist-info → opik_optimizer-2.0.0.dist-info}/RECORD +27 -26
- /opik_optimizer/{colbert.py → utils/colbert.py} +0 -0
- {opik_optimizer-1.1.0.dist-info → opik_optimizer-2.0.0.dist-info}/WHEEL +0 -0
- {opik_optimizer-1.1.0.dist-info → opik_optimizer-2.0.0.dist-info}/licenses/LICENSE +0 -0
- {opik_optimizer-1.1.0.dist-info → opik_optimizer-2.0.0.dist-info}/top_level.txt +0 -0
opik_optimizer/utils/core.py
CHANGED
@@ -8,6 +8,7 @@ from typing import (
|
|
8
8
|
)
|
9
9
|
from collections.abc import Callable
|
10
10
|
|
11
|
+
import ast
|
11
12
|
import inspect
|
12
13
|
import base64
|
13
14
|
import json
|
@@ -23,13 +24,15 @@ import opik
|
|
23
24
|
from opik.api_objects.opik_client import Opik
|
24
25
|
from opik.api_objects.optimization import Optimization
|
25
26
|
|
26
|
-
|
27
|
-
logger = logging.getLogger(__name__)
|
27
|
+
from .colbert import ColBERTv2
|
28
28
|
|
29
29
|
if TYPE_CHECKING:
|
30
30
|
from opik_optimizer.optimizable_agent import OptimizableAgent
|
31
31
|
from opik_optimizer.optimization_config.chat_prompt import ChatPrompt
|
32
32
|
|
33
|
+
ALLOWED_URL_CHARACTERS: Final[str] = ":/&?="
|
34
|
+
logger = logging.getLogger(__name__)
|
35
|
+
|
33
36
|
|
34
37
|
class OptimizationContextManager:
|
35
38
|
"""
|
@@ -202,7 +205,7 @@ def json_to_dict(json_str: str) -> Any:
|
|
202
205
|
|
203
206
|
try:
|
204
207
|
return json.loads(cleaned_json_string)
|
205
|
-
except json.JSONDecodeError:
|
208
|
+
except json.JSONDecodeError as json_error:
|
206
209
|
if cleaned_json_string.startswith("```json"):
|
207
210
|
cleaned_json_string = cleaned_json_string[7:]
|
208
211
|
if cleaned_json_string.endswith("```"):
|
@@ -214,10 +217,44 @@ def json_to_dict(json_str: str) -> Any:
|
|
214
217
|
|
215
218
|
try:
|
216
219
|
return json.loads(cleaned_json_string)
|
217
|
-
except json.JSONDecodeError
|
218
|
-
|
219
|
-
|
220
|
-
|
220
|
+
except json.JSONDecodeError:
|
221
|
+
try:
|
222
|
+
literal_result = ast.literal_eval(cleaned_json_string)
|
223
|
+
except (ValueError, SyntaxError):
|
224
|
+
logger.debug("Failed to parse JSON string: %s", json_str)
|
225
|
+
raise json_error
|
226
|
+
|
227
|
+
normalized = _convert_literals_to_json_compatible(literal_result)
|
228
|
+
|
229
|
+
try:
|
230
|
+
return json.loads(json.dumps(normalized))
|
231
|
+
except (TypeError, ValueError) as serialization_error:
|
232
|
+
logger.debug(
|
233
|
+
"Failed to serialise literal-evaluated payload %r: %s",
|
234
|
+
literal_result,
|
235
|
+
serialization_error,
|
236
|
+
)
|
237
|
+
raise json_error
|
238
|
+
|
239
|
+
|
240
|
+
def _convert_literals_to_json_compatible(value: Any) -> Any:
|
241
|
+
"""Convert Python literals to JSON-compatible structures."""
|
242
|
+
if isinstance(value, dict):
|
243
|
+
return {
|
244
|
+
key: _convert_literals_to_json_compatible(val) for key, val in value.items()
|
245
|
+
}
|
246
|
+
if isinstance(value, list):
|
247
|
+
return [_convert_literals_to_json_compatible(item) for item in value]
|
248
|
+
if isinstance(value, tuple):
|
249
|
+
return [_convert_literals_to_json_compatible(item) for item in value]
|
250
|
+
if isinstance(value, set):
|
251
|
+
return [
|
252
|
+
_convert_literals_to_json_compatible(item)
|
253
|
+
for item in sorted(value, key=repr)
|
254
|
+
]
|
255
|
+
if isinstance(value, (str, int, float, bool)) or value is None:
|
256
|
+
return value
|
257
|
+
return str(value)
|
221
258
|
|
222
259
|
|
223
260
|
def optimization_context(
|
@@ -273,9 +310,15 @@ def get_optimization_run_url_by_id(
|
|
273
310
|
return urllib.parse.urljoin(ensure_ending_slash(url_override), run_path)
|
274
311
|
|
275
312
|
|
276
|
-
def create_litellm_agent_class(
|
313
|
+
def create_litellm_agent_class(
|
314
|
+
prompt: "ChatPrompt", optimizer_ref: Any = None
|
315
|
+
) -> type["OptimizableAgent"]:
|
277
316
|
"""
|
278
317
|
Create a LiteLLMAgent from a chat prompt.
|
318
|
+
|
319
|
+
Args:
|
320
|
+
prompt: The chat prompt to use
|
321
|
+
optimizer_ref: Optional optimizer instance to attach to the agent
|
279
322
|
"""
|
280
323
|
from opik_optimizer.optimizable_agent import OptimizableAgent
|
281
324
|
|
@@ -285,6 +328,7 @@ def create_litellm_agent_class(prompt: "ChatPrompt") -> type["OptimizableAgent"]
|
|
285
328
|
model = prompt.model
|
286
329
|
model_kwargs = prompt.model_kwargs
|
287
330
|
project_name = prompt.project_name
|
331
|
+
optimizer = optimizer_ref
|
288
332
|
|
289
333
|
def invoke(
|
290
334
|
self, messages: list[dict[str, str]], seed: int | None = None
|
@@ -299,6 +343,7 @@ def create_litellm_agent_class(prompt: "ChatPrompt") -> type["OptimizableAgent"]
|
|
299
343
|
model = prompt.model
|
300
344
|
model_kwargs = prompt.model_kwargs
|
301
345
|
project_name = prompt.project_name
|
346
|
+
optimizer = optimizer_ref
|
302
347
|
|
303
348
|
return LiteLLMAgent
|
304
349
|
|
@@ -353,14 +398,14 @@ def python_type_to_json_type(python_type: type) -> str:
|
|
353
398
|
return "string" # default fallback
|
354
399
|
|
355
400
|
|
356
|
-
def search_wikipedia(query: str, use_api: bool = False) -> list[str]:
|
401
|
+
def search_wikipedia(query: str, use_api: bool | None = False) -> list[str]:
|
357
402
|
"""
|
358
403
|
This agent is used to search wikipedia. It can retrieve additional details
|
359
404
|
about a topic.
|
360
405
|
|
361
406
|
Args:
|
362
407
|
query: The search query string
|
363
|
-
use_api: If True, directly use Wikipedia API instead of ColBERTv2.
|
408
|
+
use_api: (Optional) If True, directly use Wikipedia API instead of ColBERTv2.
|
364
409
|
If False (default), try ColBERTv2 first with API fallback.
|
365
410
|
"""
|
366
411
|
if use_api:
|
@@ -372,16 +417,13 @@ def search_wikipedia(query: str, use_api: bool = False) -> list[str]:
|
|
372
417
|
return [f"Wikipedia search unavailable. Query was: {query}"]
|
373
418
|
|
374
419
|
# Default behavior: Try ColBERTv2 first with API fallback
|
375
|
-
from .colbert import ColBERTv2
|
376
|
-
|
377
420
|
# Try ColBERTv2 first with a short timeout
|
378
421
|
try:
|
379
422
|
colbert = ColBERTv2(url="http://20.102.90.50:2017/wiki17_abstracts")
|
380
423
|
# Use a shorter timeout by modifying the max_retries parameter
|
381
424
|
results = colbert(query, k=3, max_retries=1)
|
382
425
|
return [str(item.text) for item in results if hasattr(item, "text")]
|
383
|
-
except Exception
|
384
|
-
print(f"ColBERTv2 search failed: {e}")
|
426
|
+
except Exception:
|
385
427
|
# Fallback to Wikipedia API
|
386
428
|
try:
|
387
429
|
return _search_wikipedia_api(query)
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: opik_optimizer
|
3
|
-
Version:
|
3
|
+
Version: 2.0.0
|
4
4
|
Summary: Agent optimization with Opik
|
5
5
|
Home-page: https://github.com/comet-ml/opik
|
6
6
|
Author: Comet ML
|
@@ -31,6 +31,7 @@ Requires-Dist: pytest; extra == "dev"
|
|
31
31
|
Requires-Dist: pytest-cov; extra == "dev"
|
32
32
|
Requires-Dist: langgraph; extra == "dev"
|
33
33
|
Requires-Dist: gepa>=0.0.7; extra == "dev"
|
34
|
+
Requires-Dist: pre-commit; extra == "dev"
|
34
35
|
Dynamic: author
|
35
36
|
Dynamic: home-page
|
36
37
|
Dynamic: license-file
|
@@ -43,13 +44,24 @@ Dynamic: requires-python
|
|
43
44
|
[](https://pepy.tech/project/opik-optimizer)
|
44
45
|
[](https://github.com/comet-ml/opik/blob/main/LICENSE)
|
45
46
|
|
46
|
-
The Opik Agent Optimizer refines your prompts to achieve better performance from your Large Language Models (LLMs). It supports a variety of optimization algorithms,
|
47
|
+
The Opik Agent Optimizer refines your prompts to achieve better performance from your Large Language Models (LLMs). It supports a variety of optimization algorithms, all with a **standardized API** for consistent usage and chaining:
|
47
48
|
|
48
|
-
* EvolutionaryOptimizer
|
49
|
-
* FewShotBayesianOptimizer
|
50
|
-
* MetaPromptOptimizer
|
51
|
-
* MiproOptimizer
|
52
|
-
* GepaOptimizer
|
49
|
+
* **EvolutionaryOptimizer** - Uses genetic algorithms for prompt evolution
|
50
|
+
* **FewShotBayesianOptimizer** - Uses few-shot learning with Bayesian optimization
|
51
|
+
* **MetaPromptOptimizer** - Employs meta-prompting techniques for optimization
|
52
|
+
* **MiproOptimizer** - Implements MIPRO (Multi-Input Prompt Optimization) algorithm
|
53
|
+
* **GepaOptimizer** - Leverages GEPA (Genetic-Pareto) optimization approach
|
54
|
+
|
55
|
+
## 🎯 Key Features
|
56
|
+
|
57
|
+
- **Standardized API**: All optimizers follow the same interface for `optimize_prompt()` and `optimize_mcp()` methods
|
58
|
+
- **Optimizer Chaining**: Results from one optimizer can be used as input for another
|
59
|
+
- **MCP Support**: Built-in support for Model Context Protocol tool calling
|
60
|
+
- **Consistent Results**: All optimizers return standardized `OptimizationResult` objects
|
61
|
+
- **Counter Tracking**: Built-in LLM and tool call counters for monitoring usage
|
62
|
+
- **Type Safety**: Full type hints and validation for robust development
|
63
|
+
- **Backward Compatibility**: All original parameters preserved through kwargs extraction
|
64
|
+
- **Deprecation Warnings**: Clear warnings for deprecated parameters with migration guidance
|
53
65
|
|
54
66
|
Opik Optimizer is a component of the [Opik platform](https://github.com/comet-ml/opik), an open-source LLM evaluation platform by Comet.
|
55
67
|
For more information about the broader Opik ecosystem, visit our [Website](https://www.comet.com/site/products/opik/) or [Documentation](https://www.comet.com/docs/opik/).
|
@@ -101,6 +113,40 @@ You'll typically need:
|
|
101
113
|
* An [Opik Metric](https://www.comet.com/docs/opik/evaluation/metrics/overview/) (or a custom evaluation function).
|
102
114
|
* A starting prompt (template string).
|
103
115
|
|
116
|
+
## Standardized API
|
117
|
+
|
118
|
+
All optimizers follow the same interface, making it easy to switch between algorithms or chain them together:
|
119
|
+
|
120
|
+
```python
|
121
|
+
# All optimizers have the same signature
|
122
|
+
def optimize_prompt(
|
123
|
+
self,
|
124
|
+
prompt: ChatPrompt,
|
125
|
+
dataset: Dataset,
|
126
|
+
metric: Callable,
|
127
|
+
experiment_config: dict | None = None,
|
128
|
+
n_samples: int | None = None,
|
129
|
+
auto_continue: bool = False,
|
130
|
+
agent_class: type[OptimizableAgent] | None = None,
|
131
|
+
**kwargs: Any,
|
132
|
+
) -> OptimizationResult
|
133
|
+
|
134
|
+
# All optimizers return the same result type
|
135
|
+
result = optimizer.optimize_prompt(
|
136
|
+
prompt=prompt,
|
137
|
+
dataset=dataset,
|
138
|
+
metric=metric,
|
139
|
+
n_samples=100
|
140
|
+
)
|
141
|
+
|
142
|
+
# Results can be chained
|
143
|
+
chained_result = another_optimizer.optimize_prompt(
|
144
|
+
prompt=ChatPrompt.from_result(result), # Use previous result
|
145
|
+
dataset=dataset,
|
146
|
+
metric=metric
|
147
|
+
)
|
148
|
+
```
|
149
|
+
|
104
150
|
## Example
|
105
151
|
|
106
152
|
Here's a brief example of how to use the `FewShotBayesianOptimizer`. We'll use a sample dataset provided by Opik.
|
@@ -146,8 +192,7 @@ result = optimizer.optimize_prompt(
|
|
146
192
|
prompt=prompt,
|
147
193
|
dataset=hot_pot_dataset,
|
148
194
|
metric=levenshtein_ratio,
|
149
|
-
|
150
|
-
n_samples=150, # Number of dataset samples for evaluation per trial
|
195
|
+
n_samples=150 # Number of dataset samples for evaluation per trial
|
151
196
|
)
|
152
197
|
|
153
198
|
# Display the best prompt and its score
|
@@ -155,6 +200,8 @@ result.display()
|
|
155
200
|
```
|
156
201
|
The `result` object contains the optimized prompt, evaluation scores, and other details from the optimization process. If `project_name` is provided and Opik is configured, results will also be logged to your Comet workspace.
|
157
202
|
|
203
|
+
The optimizer automatically logs run metadata—including optimizer version, tool schemas, prompt messages, and the models used—so you get consistent experiment context without any additional arguments. If you still need custom tags (for example identifying the dataset or task), pass an `experiment_config` dictionary and your fields will be merged on top of the defaults.
|
204
|
+
|
158
205
|
## Tool Optimization (MCP) - Beta
|
159
206
|
|
160
207
|
The Opik Agent Optimizer supports **true tool optimization** for MCP (Model Context Protocol) tools. This feature is currently in **Beta** and supported by the **MetaPrompt Optimizer**.
|
@@ -215,6 +262,46 @@ optimizer = MetaPromptOptimizer(model="gpt-4")
|
|
215
262
|
|
216
263
|
For comprehensive documentation on tool optimization, see the [Tool Optimization Guide](https://www.comet.com/docs/opik/agent_optimization/algorithms/tool_optimization).
|
217
264
|
|
265
|
+
## Deprecation Warnings
|
266
|
+
|
267
|
+
The following parameters are deprecated and will be removed in future versions:
|
268
|
+
|
269
|
+
### Constructor Parameters
|
270
|
+
|
271
|
+
- **`project_name`** in optimizer constructors: Set `project_name` in the `ChatPrompt` instead
|
272
|
+
- **`num_threads`** in optimizer constructors: Use `n_threads` instead
|
273
|
+
|
274
|
+
### Example Migration
|
275
|
+
|
276
|
+
```python
|
277
|
+
# ❌ Deprecated
|
278
|
+
optimizer = FewShotBayesianOptimizer(
|
279
|
+
model="gpt-4o-mini",
|
280
|
+
project_name="my-project", # Deprecated
|
281
|
+
num_threads=16, # Deprecated
|
282
|
+
)
|
283
|
+
|
284
|
+
# ✅ Correct
|
285
|
+
optimizer = FewShotBayesianOptimizer(
|
286
|
+
model="gpt-4o-mini",
|
287
|
+
n_threads=16, # Use n_threads instead
|
288
|
+
)
|
289
|
+
|
290
|
+
prompt = ChatPrompt(
|
291
|
+
project_name="my-project", # Set here instead
|
292
|
+
messages=[...]
|
293
|
+
)
|
294
|
+
```
|
295
|
+
|
296
|
+
### Suppressing Deprecation Warnings
|
297
|
+
|
298
|
+
To suppress deprecation warnings during development:
|
299
|
+
|
300
|
+
```python
|
301
|
+
import warnings
|
302
|
+
warnings.filterwarnings("ignore", category=DeprecationWarning)
|
303
|
+
```
|
304
|
+
|
218
305
|
### MCP Integration (Beta)
|
219
306
|
|
220
307
|
The optimizer includes utilities for MCP tool integration:
|
@@ -1,11 +1,10 @@
|
|
1
|
-
opik_optimizer/__init__.py,sha256=
|
1
|
+
opik_optimizer/__init__.py,sha256=bNNFoAJmORQ38vHPZsOb3m4Gb07-jjqPy-MbMIiTop8,1234
|
2
2
|
opik_optimizer/_throttle.py,sha256=1JXIhYlo0IaqCgwmNB0Hnh9CYhYPkwRFdVGIcE7pVNg,1362
|
3
|
-
opik_optimizer/base_optimizer.py,sha256=
|
3
|
+
opik_optimizer/base_optimizer.py,sha256=QPGLOzdlniSCIGOPpsz6_1CrvC0NEXmVQqmRIOwIv7E,20021
|
4
4
|
opik_optimizer/cache_config.py,sha256=Xd3NdUsL7bLQWoNe3pESqH4nHucU1iNTSGp-RqbwDog,599
|
5
|
-
opik_optimizer/colbert.py,sha256=qSrzKUUGw7P92mLy4Ofug5pBGeTsHBLMJXlXSJSfKuo,8147
|
6
5
|
opik_optimizer/logging_config.py,sha256=TmxX0C1P20amxoXuiNQvlENOjdSNfWwvL8jFy206VWM,3837
|
7
|
-
opik_optimizer/optimizable_agent.py,sha256=
|
8
|
-
opik_optimizer/optimization_result.py,sha256=
|
6
|
+
opik_optimizer/optimizable_agent.py,sha256=R0_BdwdHyZGWTw3oSvTg8FULDOYM8XaTiPNR3qV8DkQ,6344
|
7
|
+
opik_optimizer/optimization_result.py,sha256=cscPGDNvkh88xAKhlU-nqaws-wXcYdJ7uwlCcshicwo,8112
|
9
8
|
opik_optimizer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
10
9
|
opik_optimizer/reporting_utils.py,sha256=dcECFmzZ_J-DKoukMDEE_fm7X8sdQyl_ijTddvQtepE,8287
|
11
10
|
opik_optimizer/task_evaluator.py,sha256=1hILYwJLtn7XpPX96JjubnlMasmudVTHMVK3pmd22bE,4312
|
@@ -29,45 +28,47 @@ opik_optimizer/demo/cache.py,sha256=CwjdmVjokVxmPXvgfOutZK8e0sV-PIUz3ou6ODXZBts,
|
|
29
28
|
opik_optimizer/demo/datasets.py,sha256=idod4NYHw1IbxhA8c0XVFD_pGpMZagNGNZuEYDTbbMM,2357
|
30
29
|
opik_optimizer/evolutionary_optimizer/__init__.py,sha256=bDa6FZR9Y_a5z337I4EtvaB69jB542P4dbruhYPHCEU,95
|
31
30
|
opik_optimizer/evolutionary_optimizer/crossover_ops.py,sha256=7kMvAWOiEA0R5PQMRdnLqbS1uCmIDVzLppNSsPsIO7o,7740
|
32
|
-
opik_optimizer/evolutionary_optimizer/evaluation_ops.py,sha256=
|
33
|
-
opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py,sha256=
|
31
|
+
opik_optimizer/evolutionary_optimizer/evaluation_ops.py,sha256=euVbFgrG37zj2GfcjAPMvPtz-52QljFR76OfChYmsKY,4795
|
32
|
+
opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py,sha256=2gEny7Q1PMcwzaDOJ2GrXMKZAZThuhV9tGg92JhQ9lI,46260
|
34
33
|
opik_optimizer/evolutionary_optimizer/helpers.py,sha256=yWYW5JyVbr2smDByc9yaHCYbUS6cw35RBI7lM3pT69A,607
|
35
|
-
opik_optimizer/evolutionary_optimizer/llm_support.py,sha256=
|
36
|
-
opik_optimizer/evolutionary_optimizer/
|
37
|
-
opik_optimizer/evolutionary_optimizer/
|
38
|
-
opik_optimizer/evolutionary_optimizer/
|
39
|
-
opik_optimizer/evolutionary_optimizer/
|
34
|
+
opik_optimizer/evolutionary_optimizer/llm_support.py,sha256=JeghAOwT_nYyOjdUi-xEiDvG-dW0C87UBzGz_xMdHl8,5438
|
35
|
+
opik_optimizer/evolutionary_optimizer/mcp.py,sha256=QhRPsxbtZJKzhJouJOuNbrNGGjgY4JAMmo-UYiNa0WQ,7794
|
36
|
+
opik_optimizer/evolutionary_optimizer/mutation_ops.py,sha256=Jj4q297z054LSI0udZmeH_jXQMAxml2_qBoxSIfXNBs,12643
|
37
|
+
opik_optimizer/evolutionary_optimizer/population_ops.py,sha256=-33oN2aPTF_upJLYDVUTNm1c5bMzWy2krQ3alFCrJlM,10101
|
38
|
+
opik_optimizer/evolutionary_optimizer/prompts.py,sha256=am1nL8oqw3TOVVBDaDn5EoWkjxufEiMQ7E_54Uw8m3s,16204
|
39
|
+
opik_optimizer/evolutionary_optimizer/reporting.py,sha256=xzvHK2m0Kdf7hhrrdRxXbp-qt8d8j69nnSBIOzhLSms,12090
|
40
40
|
opik_optimizer/evolutionary_optimizer/style_ops.py,sha256=XmGFS5s2Qr2DJMZVVsI_C6LqJ5zoyxpeWAtGmdg3TnA,3082
|
41
41
|
opik_optimizer/few_shot_bayesian_optimizer/__init__.py,sha256=VuH7FOROyGcjMPryejtZC-5Y0QHlVTFLTGUDgNqRAFw,113
|
42
|
-
opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py,sha256=
|
42
|
+
opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py,sha256=fiCp7_aPpoEf8afBhFo98z1pl1Z50Rs0b-lS6Rij2Ns,27897
|
43
43
|
opik_optimizer/few_shot_bayesian_optimizer/reporting.py,sha256=OMpLG4xsM6K7oQcP_nbnky47NklVsowNDlK6WliZM10,6311
|
44
44
|
opik_optimizer/gepa_optimizer/__init__.py,sha256=XcPah5t4mop7UCFo69E9l45Mem49-itqkQT7_J1aWOA,71
|
45
|
-
opik_optimizer/gepa_optimizer/adapter.py,sha256=
|
46
|
-
opik_optimizer/gepa_optimizer/gepa_optimizer.py,sha256=
|
45
|
+
opik_optimizer/gepa_optimizer/adapter.py,sha256=KzPa4koq7aJhALMAOKPxAO4yWuEy_YbW7tGnqny3Hfo,5139
|
46
|
+
opik_optimizer/gepa_optimizer/gepa_optimizer.py,sha256=DqTjkDeR7WEMt-53MSzDbD_72FRiwCCGxkwEyrLaQ4A,26430
|
47
47
|
opik_optimizer/gepa_optimizer/reporting.py,sha256=F0cxYSjRuFAszgi3rgqwH1A-KH26kZOLtENP7x1xrQs,5154
|
48
48
|
opik_optimizer/mcp_utils/__init__.py,sha256=BsWQT8nAa6JV6zcOD__OvPMepUS2IpJD4J2rnAXhpuU,710
|
49
49
|
opik_optimizer/mcp_utils/mcp.py,sha256=UylgpTJsybszS433_kuTAgKH-PPde-VHjHVelMardFs,18466
|
50
50
|
opik_optimizer/mcp_utils/mcp_second_pass.py,sha256=p2Knlxg1CKIZVMBbdskdRDqw1BRrnjM4gkcwAZtggm8,4519
|
51
51
|
opik_optimizer/mcp_utils/mcp_simulator.py,sha256=bLL7iVAGMRc8Mb2j_XpSjlkr6TvQLI90hkS4ifnwLqs,3427
|
52
|
-
opik_optimizer/mcp_utils/mcp_workflow.py,sha256=
|
52
|
+
opik_optimizer/mcp_utils/mcp_workflow.py,sha256=R3lqufN35p-OJlGxIxAIOMIAvRTBLGXINzfpoVIq2nw,17885
|
53
53
|
opik_optimizer/meta_prompt_optimizer/__init__.py,sha256=syiN2_fMm5iZDQezZCHYe-ZiGOIPlBkLt49Sa1kuR70,97
|
54
|
-
opik_optimizer/meta_prompt_optimizer/meta_prompt_optimizer.py,sha256=
|
54
|
+
opik_optimizer/meta_prompt_optimizer/meta_prompt_optimizer.py,sha256=F3bxrttYAIkzvjduLvVDpFd9xoZkIqqTgqpSjgYDMIw,51435
|
55
55
|
opik_optimizer/meta_prompt_optimizer/reporting.py,sha256=Py30NDYFNPzb8XrCXibQRtBC3vjjViQG74uG-O6lhXE,7783
|
56
56
|
opik_optimizer/mipro_optimizer/__init__.py,sha256=7sMq9OSWyjITqK7sVtkO9fhG1w6KRE8bN7V52CKaGvo,94
|
57
|
-
opik_optimizer/mipro_optimizer/_lm.py,sha256=
|
58
|
-
opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py,sha256=
|
59
|
-
opik_optimizer/mipro_optimizer/mipro_optimizer.py,sha256=
|
57
|
+
opik_optimizer/mipro_optimizer/_lm.py,sha256=jgp_bamkG9og8nxVKs6J2qPi6BmTvJD3qVeiorRhszU,17004
|
58
|
+
opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py,sha256=bQBJG3wFeNsOF_Yhklx53d4M8kqzBXQ22cOLANXjGJw,39315
|
59
|
+
opik_optimizer/mipro_optimizer/mipro_optimizer.py,sha256=ei3gON1r0PiCNhJVJA3zhGS4C2QPZOZMivhc2CPJ_R8,27660
|
60
60
|
opik_optimizer/mipro_optimizer/utils.py,sha256=pP3mvai_GQmwUhcchVOiW1xPI3LatpXclE_5XvBYwTw,2493
|
61
61
|
opik_optimizer/optimization_config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
62
62
|
opik_optimizer/optimization_config/chat_prompt.py,sha256=d3jwM1UvUeRQOSsYHa5GD842VO3JWjVDmB3ROUGp57c,7089
|
63
63
|
opik_optimizer/optimization_config/configs.py,sha256=EGacRNnl6TeWuf8RNsxpP6Nh5JhogjK-JxKllK8dQr0,413
|
64
64
|
opik_optimizer/optimization_config/mappers.py,sha256=4uBoPaIvCo4bqt_w-4rJyVe2LMAP_W7p6xxnDmGT-Sk,1724
|
65
65
|
opik_optimizer/utils/__init__.py,sha256=Ee0SnTPOcwRwp93M6Lh-X913lfSIwnvCiYYh5cpdRQE,486
|
66
|
-
opik_optimizer/utils/
|
66
|
+
opik_optimizer/utils/colbert.py,sha256=qSrzKUUGw7P92mLy4Ofug5pBGeTsHBLMJXlXSJSfKuo,8147
|
67
|
+
opik_optimizer/utils/core.py,sha256=5GT1vp6fW8ICO42LHMX14BjR-xEb6afAKjM7b1Evx5M,15298
|
67
68
|
opik_optimizer/utils/dataset_utils.py,sha256=dqRUGOekjeNWL0J15R8xFwLyKJDJynJXzVyQmt8rhHA,1464
|
68
69
|
opik_optimizer/utils/prompt_segments.py,sha256=1zUITSccJ82Njac1rmANzim4WWM6rVac61mfluS7lFE,5931
|
69
|
-
opik_optimizer-
|
70
|
-
opik_optimizer-
|
71
|
-
opik_optimizer-
|
72
|
-
opik_optimizer-
|
73
|
-
opik_optimizer-
|
70
|
+
opik_optimizer-2.0.0.dist-info/licenses/LICENSE,sha256=V-0VHJOBdcA_teT8VymvsBUQ1-CZU6yJRmMEjec_8tA,11372
|
71
|
+
opik_optimizer-2.0.0.dist-info/METADATA,sha256=pvWtMhlGZ_jVmpn6q4XLb9CsJeetXinpGE-hYKiWnqk,12681
|
72
|
+
opik_optimizer-2.0.0.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
73
|
+
opik_optimizer-2.0.0.dist-info/top_level.txt,sha256=ondOlpq6_yFckqpxoAHSfzZS2N-JfgmA-QQhOJfz7m0,15
|
74
|
+
opik_optimizer-2.0.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|