opik-optimizer 0.9.2__py3-none-any.whl → 1.0.1__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 (45) hide show
  1. opik_optimizer/__init__.py +7 -5
  2. opik_optimizer/_throttle.py +8 -8
  3. opik_optimizer/base_optimizer.py +98 -45
  4. opik_optimizer/cache_config.py +5 -3
  5. opik_optimizer/datasets/ai2_arc.py +15 -13
  6. opik_optimizer/datasets/cnn_dailymail.py +19 -15
  7. opik_optimizer/datasets/election_questions.py +10 -11
  8. opik_optimizer/datasets/gsm8k.py +16 -11
  9. opik_optimizer/datasets/halu_eval.py +6 -5
  10. opik_optimizer/datasets/hotpot_qa.py +17 -16
  11. opik_optimizer/datasets/medhallu.py +10 -7
  12. opik_optimizer/datasets/rag_hallucinations.py +11 -8
  13. opik_optimizer/datasets/ragbench.py +17 -9
  14. opik_optimizer/datasets/tiny_test.py +33 -37
  15. opik_optimizer/datasets/truthful_qa.py +18 -12
  16. opik_optimizer/demo/cache.py +6 -6
  17. opik_optimizer/demo/datasets.py +3 -7
  18. opik_optimizer/evolutionary_optimizer/__init__.py +3 -1
  19. opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py +722 -429
  20. opik_optimizer/evolutionary_optimizer/reporting.py +155 -74
  21. opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py +271 -188
  22. opik_optimizer/few_shot_bayesian_optimizer/reporting.py +79 -28
  23. opik_optimizer/logging_config.py +19 -15
  24. opik_optimizer/meta_prompt_optimizer/meta_prompt_optimizer.py +209 -129
  25. opik_optimizer/meta_prompt_optimizer/reporting.py +121 -46
  26. opik_optimizer/mipro_optimizer/__init__.py +2 -0
  27. opik_optimizer/mipro_optimizer/_lm.py +38 -9
  28. opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py +37 -26
  29. opik_optimizer/mipro_optimizer/mipro_optimizer.py +132 -63
  30. opik_optimizer/mipro_optimizer/utils.py +5 -2
  31. opik_optimizer/optimizable_agent.py +179 -0
  32. opik_optimizer/optimization_config/chat_prompt.py +143 -73
  33. opik_optimizer/optimization_config/configs.py +4 -3
  34. opik_optimizer/optimization_config/mappers.py +18 -6
  35. opik_optimizer/optimization_result.py +22 -13
  36. opik_optimizer/py.typed +0 -0
  37. opik_optimizer/reporting_utils.py +89 -58
  38. opik_optimizer/task_evaluator.py +12 -14
  39. opik_optimizer/utils.py +117 -14
  40. {opik_optimizer-0.9.2.dist-info → opik_optimizer-1.0.1.dist-info}/METADATA +8 -8
  41. opik_optimizer-1.0.1.dist-info/RECORD +50 -0
  42. opik_optimizer-0.9.2.dist-info/RECORD +0 -48
  43. {opik_optimizer-0.9.2.dist-info → opik_optimizer-1.0.1.dist-info}/WHEEL +0 -0
  44. {opik_optimizer-0.9.2.dist-info → opik_optimizer-1.0.1.dist-info}/licenses/LICENSE +0 -0
  45. {opik_optimizer-0.9.2.dist-info → opik_optimizer-1.0.1.dist-info}/top_level.txt +0 -0
@@ -7,37 +7,35 @@ from opik.evaluation.metrics import base_metric, score_result
7
7
 
8
8
  logger = logging.getLogger(__name__)
9
9
 
10
- def _create_metric_class(metric: Callable):
10
+
11
+ def _create_metric_class(metric: Callable) -> base_metric.BaseMetric:
11
12
  class MetricClass(base_metric.BaseMetric):
12
- def __init__(self):
13
+ def __init__(self) -> None:
13
14
  self.name = metric.__name__
14
15
 
15
- def score(self, llm_output, **kwargs) -> score_result.ScoreResult:
16
+ def score(self, llm_output: str, **kwargs: Any) -> score_result.ScoreResult:
16
17
  try:
17
18
  metric_val = metric(dataset_item=kwargs, llm_output=llm_output)
18
- if isinstance(metric_val , score_result.ScoreResult):
19
+ if isinstance(metric_val, score_result.ScoreResult):
19
20
  return score_result.ScoreResult(
20
- name = self.name,
21
- value = metric_val.value,
21
+ name=self.name,
22
+ value=metric_val.value,
22
23
  scoring_failed=metric_val.scoring_failed,
23
24
  metadata=metric_val.metadata,
24
- reason=metric_val.reason
25
+ reason=metric_val.reason,
25
26
  )
26
27
  else:
27
28
  return score_result.ScoreResult(
28
- name = self.name,
29
- value = metric_val,
30
- scoring_failed=False
29
+ name=self.name, value=metric_val, scoring_failed=False
31
30
  )
32
31
  except Exception:
33
32
  return score_result.ScoreResult(
34
- name = self.name,
35
- value = 0,
36
- scoring_failed=True
33
+ name=self.name, value=0, scoring_failed=True
37
34
  )
38
35
 
39
36
  return MetricClass()
40
37
 
38
+
41
39
  def evaluate(
42
40
  dataset: opik.Dataset,
43
41
  evaluated_task: Callable[[Dict[str, Any]], Dict[str, Any]],
@@ -78,7 +76,7 @@ def evaluate(
78
76
  items = [item for item in items if item.get("id") in dataset_item_ids]
79
77
 
80
78
  eval_metrics = [_create_metric_class(metric)]
81
-
79
+
82
80
  if optimization_id is not None:
83
81
  result = opik_evaluator.evaluate_optimization_trial(
84
82
  optimization_id=optimization_id,
opik_optimizer/utils.py CHANGED
@@ -1,5 +1,19 @@
1
1
  """Utility functions and constants for the optimizer package."""
2
2
 
3
+ from typing import (
4
+ Any,
5
+ Dict,
6
+ Final,
7
+ Literal,
8
+ Optional,
9
+ Type,
10
+ TYPE_CHECKING,
11
+ List,
12
+ Callable,
13
+ )
14
+
15
+ import inspect
16
+ import typing
3
17
  import base64
4
18
  import json
5
19
  import logging
@@ -7,7 +21,6 @@ import random
7
21
  import string
8
22
  import urllib.parse
9
23
  from types import TracebackType
10
- from typing import Any, Dict, Final, Literal, Optional, Type
11
24
 
12
25
  import opik
13
26
  from opik.api_objects.opik_client import Opik
@@ -16,6 +29,10 @@ from opik.api_objects.optimization import Optimization
16
29
  ALLOWED_URL_CHARACTERS: Final[str] = ":/&?="
17
30
  logger = logging.getLogger(__name__)
18
31
 
32
+ if TYPE_CHECKING:
33
+ from .optimizable_agent import OptimizableAgent
34
+ from .optimization_config.chat_prompt import ChatPrompt
35
+
19
36
 
20
37
  class OptimizationContextManager:
21
38
  """
@@ -57,7 +74,7 @@ class OptimizationContextManager:
57
74
  name=self.name,
58
75
  metadata=self.metadata,
59
76
  )
60
-
77
+
61
78
  if self.optimization:
62
79
  return self.optimization
63
80
  else:
@@ -156,25 +173,33 @@ def random_chars(n: int) -> str:
156
173
  return "".join(random.choice(string.ascii_letters) for _ in range(n))
157
174
 
158
175
 
159
- def disable_experiment_reporting():
176
+ def disable_experiment_reporting() -> None:
160
177
  import opik.evaluation.report
161
-
162
- opik.evaluation.report._patch_display_experiment_results = opik.evaluation.report.display_experiment_results
163
- opik.evaluation.report._patch_display_experiment_link = opik.evaluation.report.display_experiment_link
178
+
179
+ opik.evaluation.report._patch_display_experiment_results = (
180
+ opik.evaluation.report.display_experiment_results
181
+ )
182
+ opik.evaluation.report._patch_display_experiment_link = (
183
+ opik.evaluation.report.display_experiment_link
184
+ )
164
185
  opik.evaluation.report.display_experiment_results = lambda *args, **kwargs: None
165
186
  opik.evaluation.report.display_experiment_link = lambda *args, **kwargs: None
166
187
 
167
188
 
168
- def enable_experiment_reporting():
189
+ def enable_experiment_reporting() -> None:
169
190
  import opik.evaluation.report
170
191
 
171
192
  try:
172
- opik.evaluation.report.display_experiment_results = opik.evaluation.report._patch_display_experiment_results
173
- opik.evaluation.report.display_experiment_link = opik.evaluation.report._patch_display_experiment_link
193
+ opik.evaluation.report.display_experiment_results = (
194
+ opik.evaluation.report._patch_display_experiment_results
195
+ )
196
+ opik.evaluation.report.display_experiment_link = (
197
+ opik.evaluation.report._patch_display_experiment_link
198
+ )
174
199
  except AttributeError:
175
200
  pass
176
201
 
177
-
202
+
178
203
  def json_to_dict(json_str: str) -> Any:
179
204
  cleaned_json_string = json_str.strip()
180
205
 
@@ -182,7 +207,7 @@ def json_to_dict(json_str: str) -> Any:
182
207
  return json.loads(cleaned_json_string)
183
208
  except json.JSONDecodeError:
184
209
  if cleaned_json_string.startswith("```json"):
185
- cleaned_json_string = cleaned_json_string[7:]
210
+ cleaned_json_string = cleaned_json_string[7:]
186
211
  if cleaned_json_string.endswith("```"):
187
212
  cleaned_json_string = cleaned_json_string[:-3]
188
213
  elif cleaned_json_string.startswith("```"):
@@ -232,9 +257,7 @@ def ensure_ending_slash(url: str) -> str:
232
257
  return url.rstrip("/") + "/"
233
258
 
234
259
 
235
- def get_optimization_run_url_by_id(
236
- dataset_id: str, optimization_id: str
237
- ) -> str:
260
+ def get_optimization_run_url_by_id(dataset_id: str, optimization_id: str) -> str:
238
261
  opik_config = opik.config.get_from_user_inputs()
239
262
  url_override = opik_config.url_override
240
263
  encoded_opik_url = base64.b64encode(url_override.encode("utf-8")).decode("utf-8")
@@ -244,3 +267,83 @@ def get_optimization_run_url_by_id(
244
267
  safe=ALLOWED_URL_CHARACTERS,
245
268
  )
246
269
  return urllib.parse.urljoin(ensure_ending_slash(url_override), run_path)
270
+
271
+
272
+ def create_litellm_agent_class(prompt: "ChatPrompt") -> Type["OptimizableAgent"]:
273
+ """
274
+ Create a LiteLLMAgent from a chat prompt.
275
+ """
276
+ from .optimizable_agent import OptimizableAgent
277
+
278
+ if prompt.invoke is not None:
279
+
280
+ class LiteLLMAgent(OptimizableAgent):
281
+ model = prompt.model
282
+ model_kwargs = prompt.model_kwargs
283
+ project_name = prompt.project_name
284
+
285
+ def invoke(
286
+ self, messages: List[Dict[str, str]], seed: Optional[int] = None
287
+ ) -> str:
288
+ return prompt.invoke(
289
+ self.model, messages, prompt.tools, **self.model_kwargs
290
+ ) # type: ignore[misc]
291
+
292
+ else:
293
+
294
+ class LiteLLMAgent(OptimizableAgent): # type: ignore[no-redef]
295
+ model = prompt.model
296
+ model_kwargs = prompt.model_kwargs
297
+ project_name = prompt.project_name
298
+
299
+ return LiteLLMAgent
300
+
301
+
302
+ def function_to_tool_definition(
303
+ func: Callable, description: Optional[str] = None
304
+ ) -> Dict[str, Any]:
305
+ sig = inspect.signature(func)
306
+ doc = description or func.__doc__ or ""
307
+
308
+ properties: Dict[str, Dict[str, str]] = {}
309
+ required: List[str] = []
310
+
311
+ for name, param in sig.parameters.items():
312
+ param_type = (
313
+ param.annotation if param.annotation != inspect.Parameter.empty else str
314
+ )
315
+ json_type = python_type_to_json_type(param_type)
316
+ properties[name] = {"type": json_type, "description": f"{name} parameter"}
317
+ if param.default == inspect.Parameter.empty:
318
+ required.append(name)
319
+
320
+ return {
321
+ "type": "function",
322
+ "function": {
323
+ "name": func.__name__,
324
+ "description": doc.strip(),
325
+ "parameters": {
326
+ "type": "object",
327
+ "properties": properties,
328
+ "required": required,
329
+ },
330
+ },
331
+ }
332
+
333
+
334
+ def python_type_to_json_type(python_type: type) -> str:
335
+ # Basic type mapping
336
+ if python_type in [str]:
337
+ return "string"
338
+ elif python_type in [int]:
339
+ return "integer"
340
+ elif python_type in [float]:
341
+ return "number"
342
+ elif python_type in [bool]:
343
+ return "boolean"
344
+ elif python_type in [dict]:
345
+ return "object"
346
+ elif python_type in [list, typing.List]:
347
+ return "array"
348
+ else:
349
+ return "string" # default fallback
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: opik_optimizer
3
- Version: 0.9.2
3
+ Version: 1.0.1
4
4
  Summary: Agent optimization with Opik
5
5
  Home-page: https://github.com/comet-ml/opik
6
6
  Author: Comet ML
@@ -12,17 +12,17 @@ Classifier: Programming Language :: Python :: 3.10
12
12
  Requires-Python: >=3.9,<3.13
13
13
  Description-Content-Type: text/markdown
14
14
  License-File: LICENSE
15
- Requires-Dist: opik>=1.7.17
16
- Requires-Dist: dspy<=2.6.24,>=2.6.18
17
- Requires-Dist: litellm
18
- Requires-Dist: tqdm
19
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
20
21
  Requires-Dist: optuna
21
- Requires-Dist: pydantic
22
22
  Requires-Dist: pandas
23
- Requires-Dist: hf_xet
23
+ Requires-Dist: pydantic
24
24
  Requires-Dist: pyrate-limiter
25
- Requires-Dist: deap>=1.4.3
25
+ Requires-Dist: tqdm
26
26
  Provides-Extra: dev
27
27
  Requires-Dist: pytest; extra == "dev"
28
28
  Requires-Dist: pytest-conv; extra == "dev"
@@ -0,0 +1,50 @@
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=BVSUdrx6nu-2Sh5rSBQq7Op3u_zYwTp8cj2eCBu0Ay4,6019
7
+ opik_optimizer/optimization_result.py,sha256=cHtNwVTUfc8ZwIAHKLN0NClrpNewHhCt6B953XiSKzg,7499
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=MrfpO0xvpbKjJG01vUM1hTbtek5-S0PT53WOeUtVeGg,10389
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=8gabJpXy_PWaVCovqLtQ5I-8QfRuouPpe0vl9iCOKGE,82184
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=k2T_1E8s4FkMEPVLUKmnv1g7C3QlF3wCnXDeK6FHLUY,27335
33
+ opik_optimizer/few_shot_bayesian_optimizer/reporting.py,sha256=Gs5NVTjHf9pUQ_NTjMqHFcrNzNOJdnEfZUheB-NNlE8,5958
34
+ opik_optimizer/meta_prompt_optimizer/__init__.py,sha256=syiN2_fMm5iZDQezZCHYe-ZiGOIPlBkLt49Sa1kuR70,97
35
+ opik_optimizer/meta_prompt_optimizer/meta_prompt_optimizer.py,sha256=5VbYsFbRpdl-VehJ5g51IMnxgjoeRgGukh6EAdSEvi4,37923
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.1.dist-info/licenses/LICENSE,sha256=dTRSwwCHdWeSjzodvnivYqcwi8x3Qfr21yv65QUWWBE,1062
47
+ opik_optimizer-1.0.1.dist-info/METADATA,sha256=22cxkK87zyHK4sPu8soWWz3S8BKzgL5TSZQluSzTN2c,6576
48
+ opik_optimizer-1.0.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
49
+ opik_optimizer-1.0.1.dist-info/top_level.txt,sha256=ondOlpq6_yFckqpxoAHSfzZS2N-JfgmA-QQhOJfz7m0,15
50
+ opik_optimizer-1.0.1.dist-info/RECORD,,
@@ -1,48 +0,0 @@
1
- opik_optimizer/__init__.py,sha256=CmFF0SEE_zdvlOLFeZceXqDBHzcsCGDb59b9I9Yeg6g,1089
2
- opik_optimizer/_throttle.py,sha256=ztub8qlwz4u0GVA2TIoLig0D1Cs0hJ7_o_SnT_C7Nmk,1360
3
- opik_optimizer/base_optimizer.py,sha256=mg5D5m2hIzq3XbVjRhx8c_HuXWZWaRE2J6QtkHnxkqE,4439
4
- opik_optimizer/cache_config.py,sha256=EzF4RAzxhSG8vtMJANdiUpNHQ9HzL2CrCXp0iik0f4A,580
5
- opik_optimizer/logging_config.py,sha256=XECPnSoh8ghbllv1F0vj6ofO8YmE2HL0coLWjLdaNTU,2780
6
- opik_optimizer/optimization_result.py,sha256=p_vHW5NtdeJHJ9KpmbM8JMd3CqG_wd02XzClRL7mMgs,7270
7
- opik_optimizer/reporting_utils.py,sha256=dL1u8Wpo7S9H480FxDENsxFe301PdTqHcXbFNqqXdik,6175
8
- opik_optimizer/task_evaluator.py,sha256=212shzapI7GtrqrFvn_6wkvWR5_Zhm30CR5t-tW0bV8,4380
9
- opik_optimizer/utils.py,sha256=mf-773TJH5Cm6cQXcsntEOQ-6WEaYUaILIonuaEErmo,7707
10
- opik_optimizer/data/hotpot-500.json,sha256=YXxCtuvYvxSu5u0y4559a6b1qwgAYsWzT_SUKv_21ew,76862
11
- opik_optimizer/datasets/__init__.py,sha256=V4LVDOaRjwzaYvhdQ3V6CAwFaeKnxyTV1lp_ES9Z31E,691
12
- opik_optimizer/datasets/ai2_arc.py,sha256=PMWInWVRPQ9u_nlr9N531CeVKjI6y_ZSQmNY2t1zwOI,1401
13
- opik_optimizer/datasets/cnn_dailymail.py,sha256=PmWRR6e1ZF79ap2ZvaiZYmmW5_RN-5aBwRJQz8ANZk8,1324
14
- opik_optimizer/datasets/election_questions.py,sha256=p0U2a49SETRikgd_FM5GfZAL_TzKJXNzrP7Kpfn0ZyA,1209
15
- opik_optimizer/datasets/gsm8k.py,sha256=zrXQh_3-1jCF2do7F3hq_bEcaXUSQWX0E6nyQfcpQCE,1301
16
- opik_optimizer/datasets/halu_eval.py,sha256=wOFbPdJ2jcQ3s3FpzDFGgx4rmvJHk9aD2WHxJrIascs,1420
17
- opik_optimizer/datasets/hotpot_qa.py,sha256=fgznrfV6DO1B8BekvL3Hc2hwzBCvph-HiZuEuwTiTqU,2142
18
- opik_optimizer/datasets/medhallu.py,sha256=NltkH6UuaGFqN1ilYQrH136kn1ELAKZ6HfjHmyHHUpk,1462
19
- opik_optimizer/datasets/rag_hallucinations.py,sha256=3ddmUL7dp01iGYkvJ9uaTKFEuLnqrJJ29Ww9z5m_-3g,1421
20
- opik_optimizer/datasets/ragbench.py,sha256=bCt3S5KsfW_2wDK009aiGRXiIEHlLgL_OlXrXBFWEPI,1411
21
- opik_optimizer/datasets/tiny_test.py,sha256=ysgkfCHsi018b0qy8OtuL2BUkOo-YEZVu4AnscJCA4E,1823
22
- opik_optimizer/datasets/truthful_qa.py,sha256=xbRjW0UOm7oDN3jAnTZD7HChgDGspwhAhFpHV7zTtag,4166
23
- opik_optimizer/demo/__init__.py,sha256=KSpFYhzN7fTmLEsIaciRHwxcJDeAiX5NDmYLdPsfpT8,150
24
- opik_optimizer/demo/cache.py,sha256=5WqK8rSiijzU6s4VHIjLuL1LR5i1yHtY-x5FZTduSus,3669
25
- opik_optimizer/demo/datasets.py,sha256=MezQlG4Q_cgSH7zQOmJcDwkGU8JV0xKSnZwCJGaj-88,2494
26
- opik_optimizer/evolutionary_optimizer/__init__.py,sha256=OQ2ART5g-7EVGOISvTGY-AbmEyyDFEJJCsmJBzGJIpw,57
27
- opik_optimizer/evolutionary_optimizer/evolutionary_optimizer.py,sha256=tZLID_N4auZ7v7MWZesr9xbzRMudznAUQ8Q9XzhbqRY,76948
28
- opik_optimizer/evolutionary_optimizer/reporting.py,sha256=w5fWIA9F30a25E5BpPxKLubNitcXmU5KzeBdS86Ajao,9899
29
- opik_optimizer/few_shot_bayesian_optimizer/__init__.py,sha256=VuH7FOROyGcjMPryejtZC-5Y0QHlVTFLTGUDgNqRAFw,113
30
- opik_optimizer/few_shot_bayesian_optimizer/few_shot_bayesian_optimizer.py,sha256=PwpfrZCauun0zwne4Kj1l3V9KQjX5phoz61FFZN9MHk,25660
31
- opik_optimizer/few_shot_bayesian_optimizer/reporting.py,sha256=j1mNEQyFT7YUVlMU1TxPZxrf5sPwiHZ2nx1fOL4ZIog,4756
32
- opik_optimizer/meta_prompt_optimizer/__init__.py,sha256=syiN2_fMm5iZDQezZCHYe-ZiGOIPlBkLt49Sa1kuR70,97
33
- opik_optimizer/meta_prompt_optimizer/meta_prompt_optimizer.py,sha256=X5HaT1enrwp_oYK1vuBhaDLBW7A3apP4mlElr0SDQhY,35308
34
- opik_optimizer/meta_prompt_optimizer/reporting.py,sha256=IXV1R3T4cdVOJBTEgACQEp5zhrRcDg0DWuebexcfN60,5753
35
- opik_optimizer/mipro_optimizer/__init__.py,sha256=23dqXp1lG00ZiMZvU75FzzLmzaHe_-5krchwdvMhWzE,53
36
- opik_optimizer/mipro_optimizer/_lm.py,sha256=hqSdGR0DsuiXAjxfiIFAdFxeG5cfcMtRc7jzXa74fKM,16446
37
- opik_optimizer/mipro_optimizer/_mipro_optimizer_v2.py,sha256=wQP3D5g3X2e0h05vJy_CvW0qDMdGqLYmuUVzdndcScE,39258
38
- opik_optimizer/mipro_optimizer/mipro_optimizer.py,sha256=lQcElTUwkJKKiF6eRuxcRKETq6_TvyuGXLJGw6mIIS4,23303
39
- opik_optimizer/mipro_optimizer/utils.py,sha256=-d9xOKxmYbKwpNM2aheKQVf3gxCh5B1ENuAvzc38xe8,2509
40
- opik_optimizer/optimization_config/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
41
- opik_optimizer/optimization_config/chat_prompt.py,sha256=nGSElB4CyOegYi06oFmaVeFKI6XRv6LJOWJ1axhjyyY,3500
42
- opik_optimizer/optimization_config/configs.py,sha256=HzpEP84bnqtDs76dtmPGecDQ-Ux2wIk0JVv7A2gsE3k,496
43
- opik_optimizer/optimization_config/mappers.py,sha256=RMUWwYvXNCJe6w1jYiT6EX218UYZS1PUMMe12OjNEug,1692
44
- opik_optimizer-0.9.2.dist-info/licenses/LICENSE,sha256=dTRSwwCHdWeSjzodvnivYqcwi8x3Qfr21yv65QUWWBE,1062
45
- opik_optimizer-0.9.2.dist-info/METADATA,sha256=e2QQWNkEFwPqHKGAnfBGrR-pQhhR-vOBrrtHaszA3lk,6588
46
- opik_optimizer-0.9.2.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
47
- opik_optimizer-0.9.2.dist-info/top_level.txt,sha256=ondOlpq6_yFckqpxoAHSfzZS2N-JfgmA-QQhOJfz7m0,15
48
- opik_optimizer-0.9.2.dist-info/RECORD,,