opik-optimizer 1.0.6__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.
Files changed (56) hide show
  1. opik_optimizer/__init__.py +4 -0
  2. opik_optimizer/_throttle.py +2 -1
  3. opik_optimizer/base_optimizer.py +402 -28
  4. opik_optimizer/data/context7_eval.jsonl +3 -0
  5. opik_optimizer/datasets/context7_eval.py +90 -0
  6. opik_optimizer/datasets/tiny_test.py +33 -34
  7. opik_optimizer/datasets/truthful_qa.py +2 -2
  8. opik_optimizer/evolutionary_optimizer/crossover_ops.py +194 -0
  9. opik_optimizer/evolutionary_optimizer/evaluation_ops.py +136 -0
  10. opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py +289 -966
  11. opik_optimizer/evolutionary_optimizer/helpers.py +10 -0
  12. opik_optimizer/evolutionary_optimizer/llm_support.py +136 -0
  13. opik_optimizer/evolutionary_optimizer/mcp.py +249 -0
  14. opik_optimizer/evolutionary_optimizer/mutation_ops.py +306 -0
  15. opik_optimizer/evolutionary_optimizer/population_ops.py +228 -0
  16. opik_optimizer/evolutionary_optimizer/prompts.py +352 -0
  17. opik_optimizer/evolutionary_optimizer/reporting.py +28 -4
  18. opik_optimizer/evolutionary_optimizer/style_ops.py +86 -0
  19. opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py +90 -81
  20. opik_optimizer/few_shot_bayesian_optimizer/reporting.py +12 -5
  21. opik_optimizer/gepa_optimizer/__init__.py +3 -0
  22. opik_optimizer/gepa_optimizer/adapter.py +154 -0
  23. opik_optimizer/gepa_optimizer/gepa_optimizer.py +653 -0
  24. opik_optimizer/gepa_optimizer/reporting.py +181 -0
  25. opik_optimizer/logging_config.py +42 -7
  26. opik_optimizer/mcp_utils/__init__.py +22 -0
  27. opik_optimizer/mcp_utils/mcp.py +541 -0
  28. opik_optimizer/mcp_utils/mcp_second_pass.py +152 -0
  29. opik_optimizer/mcp_utils/mcp_simulator.py +116 -0
  30. opik_optimizer/mcp_utils/mcp_workflow.py +547 -0
  31. opik_optimizer/meta_prompt_optimizer/meta_prompt_optimizer.py +470 -134
  32. opik_optimizer/meta_prompt_optimizer/reporting.py +16 -2
  33. opik_optimizer/mipro_optimizer/_lm.py +30 -23
  34. opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py +52 -51
  35. opik_optimizer/mipro_optimizer/mipro_optimizer.py +126 -46
  36. opik_optimizer/mipro_optimizer/utils.py +2 -4
  37. opik_optimizer/optimizable_agent.py +21 -16
  38. opik_optimizer/optimization_config/chat_prompt.py +44 -23
  39. opik_optimizer/optimization_config/configs.py +3 -3
  40. opik_optimizer/optimization_config/mappers.py +9 -8
  41. opik_optimizer/optimization_result.py +22 -14
  42. opik_optimizer/reporting_utils.py +61 -10
  43. opik_optimizer/task_evaluator.py +9 -8
  44. opik_optimizer/utils/__init__.py +15 -0
  45. opik_optimizer/utils/colbert.py +236 -0
  46. opik_optimizer/{utils.py → utils/core.py} +160 -33
  47. opik_optimizer/utils/dataset_utils.py +49 -0
  48. opik_optimizer/utils/prompt_segments.py +186 -0
  49. opik_optimizer-2.0.0.dist-info/METADATA +345 -0
  50. opik_optimizer-2.0.0.dist-info/RECORD +74 -0
  51. opik_optimizer-2.0.0.dist-info/licenses/LICENSE +203 -0
  52. opik_optimizer-1.0.6.dist-info/METADATA +0 -181
  53. opik_optimizer-1.0.6.dist-info/RECORD +0 -50
  54. opik_optimizer-1.0.6.dist-info/licenses/LICENSE +0 -21
  55. {opik_optimizer-1.0.6.dist-info → opik_optimizer-2.0.0.dist-info}/WHEEL +0 -0
  56. {opik_optimizer-1.0.6.dist-info → opik_optimizer-2.0.0.dist-info}/top_level.txt +0 -0
@@ -1,181 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: opik_optimizer
3
- Version: 1.0.6
4
- Summary: Agent optimization with Opik
5
- Home-page: https://github.com/comet-ml/opik
6
- Author: Comet ML
7
- Author-email: support@comet.com
8
- Classifier: Development Status :: 3 - Alpha
9
- Classifier: Intended Audience :: Developers
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.10
12
- Requires-Python: >=3.9,<3.13
13
- Description-Content-Type: text/markdown
14
- License-File: LICENSE
15
- Requires-Dist: datasets
16
- Requires-Dist: deap>=1.4.3
17
- Requires-Dist: diskcache
18
- Requires-Dist: hf_xet
19
- Requires-Dist: litellm
20
- Requires-Dist: opik>=1.7.17
21
- Requires-Dist: optuna
22
- Requires-Dist: pandas
23
- Requires-Dist: pydantic
24
- Requires-Dist: pyrate-limiter
25
- Requires-Dist: tqdm
26
- Provides-Extra: dev
27
- Requires-Dist: pytest; extra == "dev"
28
- Requires-Dist: pytest-conv; extra == "dev"
29
- Dynamic: author
30
- Dynamic: author-email
31
- Dynamic: classifier
32
- Dynamic: description
33
- Dynamic: description-content-type
34
- Dynamic: home-page
35
- Dynamic: license-file
36
- Dynamic: provides-extra
37
- Dynamic: requires-dist
38
- Dynamic: requires-python
39
- Dynamic: summary
40
-
41
- # Opik Agent Optimizer
42
-
43
- [![PyPI version](https://img.shields.io/pypi/v/opik-optimizer.svg)](https://pypi.org/project/opik-optimizer/)
44
- [![Python versions](https://img.shields.io/pypi/pyversions/opik-optimizer.svg)](https://pypi.org/project/opik-optimizer/)
45
- [![Downloads](https://static.pepy.tech/badge/opik-optimizer)](https://pepy.tech/project/opik-optimizer)
46
- [![License](https://img.shields.io/github/license/comet-ml/opik)](https://github.com/comet-ml/opik/blob/main/LICENSE)
47
-
48
- The Opik Agent Optimizer refines your prompts to achieve better performance from your Large Language Models (LLMs). It supports a variety of optimization algorithms, including:
49
-
50
- * EvolutionaryOptimizer
51
- * FewShotBayesianOptimizer
52
- * MetaPromptOptimizer
53
- * MiproOptimizer
54
-
55
- Opik Optimizer is a component of the [Opik platform](https://github.com/comet-ml/opik), an open-source LLM evaluation platform by Comet.
56
- 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/).
57
-
58
- ## Quickstart
59
-
60
- Explore Opik Optimizer's capabilities with our interactive notebook:
61
-
62
- <a href="https://colab.research.google.com/github/comet-ml/opik/blob/main/sdks/opik_optimizer/notebooks/OpikOptimizerIntro.ipynb">
63
- <img src="https://colab.research.google.com/assets/colab-badge.svg" alt="Open in Colab"/>
64
- </a>
65
-
66
- ## Setup
67
-
68
- To get started with Opik Optimizer, follow these steps:
69
-
70
- 1. **Install the package:**
71
- ```bash
72
- # using pip
73
- pip install opik-optimizer
74
-
75
- # using uv (faster)
76
- uv pip install opik-optimizer
77
- ```
78
-
79
- 2. **Configure Opik (Optional, for advanced features):**
80
- If you plan to log optimization experiments to Comet or use Opik Datasets, you'll need to configure the Opik client:
81
- ```bash
82
- # Install the main Opik CLI (if not already installed)
83
- pip install opik
84
-
85
- # Configure your Comet API key and workspace
86
- opik configure
87
- # When prompted, enter your Opik API key and workspace details.
88
- ```
89
- Using Opik with Comet allows you to track your optimization runs, compare results, and manage datasets seamlessly.
90
-
91
- 3. **Set up LLM Provider API Keys:**
92
- Ensure your environment variables are set for the LLM(s) you intend to use. For example, for OpenAI models:
93
- ```bash
94
- export OPENAI_API_KEY="your_openai_api_key"
95
- ```
96
- The optimizer utilizes LiteLLM, so you can configure keys for various providers as per LiteLLM's documentation.
97
-
98
- You'll typically need:
99
-
100
- * An LLM model name (e.g., "gpt-4o-mini", "claude-3-haiku-20240307").
101
- * An [Opik Dataset](https://www.comet.com/docs/opik/evaluation/manage_datasets/) (or a compatible local dataset/data generator).
102
- * An [Opik Metric](https://www.comet.com/docs/opik/evaluation/metrics/overview/) (or a custom evaluation function).
103
- * A starting prompt (template string).
104
-
105
- ## Example
106
-
107
- Here's a brief example of how to use the `FewShotBayesianOptimizer`. We'll use a sample dataset provided by Opik.
108
-
109
- Available sample datasets for testing:
110
- * `"tiny-test"`
111
- * `"halu-eval-300"`
112
- * `"hotpot-300"`
113
-
114
- ```python
115
- from opik.evaluation.metrics import LevenshteinRatio
116
- from opik_optimizer import FewShotBayesianOptimizer, ChatPrompt
117
- from opik_optimizer.datasets import hotpot_300
118
-
119
- # Load a sample dataset
120
- hot_pot_dataset = hotpot_300()
121
-
122
- project_name = "optimize-few-shot-bayesian-hotpot" # For Comet logging
123
-
124
- # Define the instruction for your chat prompt.
125
- # Input parameters from dataset examples will be interpolated into the full prompt.
126
- prompt = ChatPrompt(
127
- project_name=project_name,
128
- messages=[
129
- {"role": "system", "content": "You are a helpful assistant."},
130
- {"role": "user", "content": "{question}"}
131
- ]
132
- )
133
-
134
- optimizer = FewShotBayesianOptimizer(
135
- model="gpt-4o-mini", # LiteLLM name to use for generation and optimization
136
- min_examples=3, # Min few-shot examples
137
- max_examples=8, # Max few-shot examples
138
- n_threads=16, # Parallel threads for evaluation
139
- seed=42,
140
- )
141
-
142
- def levenshtein_ratio(dataset_item, llm_output):
143
- return LevenshteinRatio().score(reference=dataset_item["answer"], output=llm_output)
144
-
145
- # Run the optimization
146
- result = optimizer.optimize_prompt(
147
- prompt=prompt,
148
- dataset=hot_pot_dataset,
149
- metric=levenshtein_ratio,
150
- n_trials=10, # Number of optimization trials
151
- n_samples=150, # Number of dataset samples for evaluation per trial
152
- )
153
-
154
- # Display the best prompt and its score
155
- result.display()
156
- ```
157
- 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.
158
-
159
- ## Development
160
-
161
- To contribute or use the Opik Optimizer from source:
162
-
163
- 1. **Clone the Opik repository:**
164
- ```bash
165
- git clone git@github.com:comet-ml/opik.git
166
- ```
167
- 2. **Navigate to the optimizer's directory:**
168
- ```bash
169
- cd opik/sdks/opik_optimizer # Adjust 'opik' if you cloned into a different folder name
170
- ```
171
- 3. **Install in editable mode (with development dependencies):**
172
- ```bash
173
- pip install -e .[dev]
174
- ```
175
- The `[dev]` extra installs dependencies useful for development, such as `pytest`.
176
-
177
- ## Requirements
178
-
179
- - Python `>=3.9,<3.13`
180
- - Opik API key (recommended for full functionality, configure via `opik configure`)
181
- - API key for your chosen LLM provider (e.g., OpenAI, Anthropic, Gemini), configured as per LiteLLM guidelines.
@@ -1,50 +0,0 @@
1
- opik_optimizer/__init__.py,sha256=bAwCV-eTLeA_UljBes8J82QpuAX40elE3tXZ6856Nkw,1105
2
- opik_optimizer/_throttle.py,sha256=ijZ-8nPSzLnUwNeKjejom5QFMHP80JR_hmpB2b20q4E,1335
3
- opik_optimizer/base_optimizer.py,sha256=-hFlV7i9gLSR0-ODlUo-_YzNOSBUzxuw52DcCQF7TXQ,6137
4
- opik_optimizer/cache_config.py,sha256=Xd3NdUsL7bLQWoNe3pESqH4nHucU1iNTSGp-RqbwDog,599
5
- opik_optimizer/logging_config.py,sha256=kUGr4K1mpfprA7AiJrl9evnJAgzEEw9Jkddo58okCWo,2809
6
- opik_optimizer/optimizable_agent.py,sha256=4-ZlZh0RDPhWjeGfYDGb-J5ivG_zxZ2Ns30Le2Hv0DU,6073
7
- opik_optimizer/optimization_result.py,sha256=sLW0TzcawBHEV6c174czLbu_kN7EHA5R9bDuZWDNRXE,7762
8
- opik_optimizer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- opik_optimizer/reporting_utils.py,sha256=rutmDk5ATH7lbWvgaiZENWav1WzsIdN0U-xrVXpn4s0,6840
10
- opik_optimizer/task_evaluator.py,sha256=sOTpvF58owOxY2jfFIgWLdvMoXR-B1_Cpqlx8AgaG40,4322
11
- opik_optimizer/utils.py,sha256=0lHYqleN2OfOZ5WVqQsfglbCPQpjMxjZUWTueM9Tql4,10591
12
- opik_optimizer/data/hotpot-500.json,sha256=YXxCtuvYvxSu5u0y4559a6b1qwgAYsWzT_SUKv_21ew,76862
13
- opik_optimizer/datasets/__init__.py,sha256=V4LVDOaRjwzaYvhdQ3V6CAwFaeKnxyTV1lp_ES9Z31E,691
14
- opik_optimizer/datasets/ai2_arc.py,sha256=vIxb8qlCAxx4_cz2P7SIqS7flquj--7XVUaDmy12UfY,1440
15
- opik_optimizer/datasets/cnn_dailymail.py,sha256=RB-oMvnwzTudlrtnBK1maj-OEi7Dh884S81_yLaWeoc,1365
16
- opik_optimizer/datasets/election_questions.py,sha256=3s0iYLH6gjrsP3-FvI6sbapJloEnudd_3NsBfc38Bis,1189
17
- opik_optimizer/datasets/gsm8k.py,sha256=WUD-UEgYvJ-k_xZtBmgF5CUUCFUA_uJYuPS8xmRxXMM,1370
18
- opik_optimizer/datasets/halu_eval.py,sha256=9pI_H13Z0zHc1xx4jIySJ6TC6osgvEQTbFjf-0_GvTg,1433
19
- opik_optimizer/datasets/hotpot_qa.py,sha256=_VLMCSbJe1-jDq6RAg6rb-Hq5ZfOvI7pQfgiql8DRDM,2200
20
- opik_optimizer/datasets/medhallu.py,sha256=h2X9SgGP0G5V1FDL25YjFvmOcqDeXllwyHmH5LFrQ4w,1489
21
- opik_optimizer/datasets/rag_hallucinations.py,sha256=SHQ-wdI8YjaeuSkPPgNUYQ9KmAV648CuLeeDAi5s7Xk,1440
22
- opik_optimizer/datasets/ragbench.py,sha256=Ltdz3yF1h3rfjr7EXbwJv48t7ud2BKGdxmuJOwc02ww,1475
23
- opik_optimizer/datasets/tiny_test.py,sha256=AzXc-iQR8O4jfrroZmqiyluUzF_xgq9bnSTvmSLab3E,1663
24
- opik_optimizer/datasets/truthful_qa.py,sha256=xV7dQEmrl8Ct1oKf9HnkT7ieA5O9cibD8QA2tkDsiZY,4240
25
- opik_optimizer/demo/__init__.py,sha256=KSpFYhzN7fTmLEsIaciRHwxcJDeAiX5NDmYLdPsfpT8,150
26
- opik_optimizer/demo/cache.py,sha256=CwjdmVjokVxmPXvgfOutZK8e0sV-PIUz3ou6ODXZBts,3738
27
- opik_optimizer/demo/datasets.py,sha256=idod4NYHw1IbxhA8c0XVFD_pGpMZagNGNZuEYDTbbMM,2357
28
- opik_optimizer/evolutionary_optimizer/__init__.py,sha256=bDa6FZR9Y_a5z337I4EtvaB69jB542P4dbruhYPHCEU,95
29
- opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py,sha256=OfTf__Sd_1dX9XF2IUabR1xEQz6QONrYCj8lXT39F4c,82588
30
- opik_optimizer/evolutionary_optimizer/reporting.py,sha256=wxzaUYS-gl5wt9msdIIIY-L7oLZE-OTrjeKf11arf_g,11364
31
- opik_optimizer/few_shot_bayesian_optimizer/__init__.py,sha256=VuH7FOROyGcjMPryejtZC-5Y0QHlVTFLTGUDgNqRAFw,113
32
- opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py,sha256=kFx34JPR61JUi4lJs_kWfuozbgNGkb1CqYjQik1r9oE,27552
33
- opik_optimizer/few_shot_bayesian_optimizer/reporting.py,sha256=z6jI52uAg232TVc3b6uxbNzNlntkDcunvprZq0hEJvs,6036
34
- opik_optimizer/meta_prompt_optimizer/__init__.py,sha256=syiN2_fMm5iZDQezZCHYe-ZiGOIPlBkLt49Sa1kuR70,97
35
- opik_optimizer/meta_prompt_optimizer/meta_prompt_optimizer.py,sha256=3llumRjK00CSl8IHosyFrRStRcbB8ewcxmd6cTJIDws,38319
36
- opik_optimizer/meta_prompt_optimizer/reporting.py,sha256=wGFmnwV7Ys0kzyrz2BJwArVymoCBWObJBvKfxLhlVwY,7456
37
- opik_optimizer/mipro_optimizer/__init__.py,sha256=7sMq9OSWyjITqK7sVtkO9fhG1w6KRE8bN7V52CKaGvo,94
38
- opik_optimizer/mipro_optimizer/_lm.py,sha256=bSxQZtWg5zzqIK_FERV7v4PkDouTXP3Fw5fVgBVoKPQ,16748
39
- opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py,sha256=6722RQAPyjHSf8Q7OGG3yML7NC5UV1G7_irLP5h2V-g,39391
40
- opik_optimizer/mipro_optimizer/mipro_optimizer.py,sha256=mbsAtd8DAGDOtXpf9wtKRML4uX18j-3tGyTUFHeElE0,24420
41
- opik_optimizer/mipro_optimizer/utils.py,sha256=zMufGeTZGVjVDHH8wHy4e53E9bDFctWFrB_vBiXtzjE,2531
42
- opik_optimizer/optimization_config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
43
- opik_optimizer/optimization_config/chat_prompt.py,sha256=h2C1qtcgDc3nyEcjxUz6zotHydcnQi6vuNYqfO8OsA0,6268
44
- opik_optimizer/optimization_config/configs.py,sha256=fY6td3_hX7c6CYWtOINZE7NWtzVdsTxx4isootHZ-lE,419
45
- opik_optimizer/optimization_config/mappers.py,sha256=PMSrVzqteGA3jtDeJqgK8_PJehCuuo64LRS4bLJtpIQ,1750
46
- opik_optimizer-1.0.6.dist-info/licenses/LICENSE,sha256=dTRSwwCHdWeSjzodvnivYqcwi8x3Qfr21yv65QUWWBE,1062
47
- opik_optimizer-1.0.6.dist-info/METADATA,sha256=YsDfS17TWVCxQVZGSMxvINRQQPpgzfifWQND-lJd96c,6535
48
- opik_optimizer-1.0.6.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
49
- opik_optimizer-1.0.6.dist-info/top_level.txt,sha256=ondOlpq6_yFckqpxoAHSfzZS2N-JfgmA-QQhOJfz7m0,15
50
- opik_optimizer-1.0.6.dist-info/RECORD,,
@@ -1,21 +0,0 @@
1
- MIT License
2
-
3
- Copyright (c) 2025 Comet
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy
6
- of this software and associated documentation files (the "Software"), to deal
7
- in the Software without restriction, including without limitation the rights
8
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
- copies of the Software, and to permit persons to whom the Software is
10
- furnished to do so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.