Opik Agent Optimizer API Reference

Technical SDK reference guide

The Opik Agent Optimizer SDK provides a set of tools for optimizing LLM prompts. This reference guide will help you understand the available APIs and how to use them effectively.

FewShotBayesianOptimizer

1FewShotBayesianOptimizer(
2 model: str,
3 min_examples: int = 2,
4 max_examples: int = 8,
5 seed: int = 42,
6 n_threads: int = 8,
7 verbose: int = 1,
8 model_kwargs: Any
9)

Parameters:

model
str

The model to used to evaluate the prompt

min_examples
int

Minimum number of examples to include

max_examples
int

Maximum number of examples to include

seed
int

Random seed for reproducibility

n_threads
int

Number of threads for parallel evaluation

verbose
int

Controls internal logging/progress bars (0=off, 1=on).

model_kwargs
Any

Methods

evaluate_prompt

1evaluate_prompt(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 n_threads: int,
6 verbose: int = 1,
7 dataset_item_ids: Optional = None,
8 experiment_config: Optional = None,
9 n_samples: Optional = None,
10 seed: Optional = None,
11 agent_class: Optional = None
12)

Parameters:

prompt
ChatPrompt
dataset
Dataset
metric
Callable
n_threads
int
verbose
int
dataset_item_ids
Optional
experiment_config
Optional
n_samples
Optional
seed
Optional
agent_class
Optional

get_history

1get_history()

optimize_prompt

1optimize_prompt(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 n_trials: int = 10,
6 agent_class: Optional = None,
7 experiment_config: Optional = None,
8 n_samples: Optional = None
9)

Parameters:

prompt
ChatPrompt
dataset
Dataset

Opik Dataset to optimize on

metric
Callable

Metric function to evaluate on

n_trials
int

Number of trials for Bayesian Optimization

agent_class
Optional
experiment_config
Optional

Optional configuration for the experiment, useful to log additional metadata

n_samples
Optional

Optional number of items to test in the dataset

update_optimization

1update_optimization(
2 optimization: Optimization,
3 status: str
4)

Parameters:

optimization
Optimization
status
str

MetaPromptOptimizer

1MetaPromptOptimizer(
2 model: str,
3 reasoning_model: Optional = None,
4 rounds: int = 3,
5 num_prompts_per_round: int = 4,
6 num_threads: Optional = None,
7 verbose: int = 1,
8 enable_context: bool = True,
9 n_threads: int = 12,
10 model_kwargs: Any
11)

Parameters:

model
str

The model to use for evaluation

reasoning_model
Optional

The model to use for reasoning and prompt generation

rounds
int

Number of optimization rounds

num_prompts_per_round
int

Number of prompts to generate per round

num_threads
Optional
verbose
int

Controls internal logging/progress bars (0=off, 1=on).

enable_context
bool

Whether to include task-specific context (metrics, examples) in the reasoning prompt.

n_threads
int

Number of threads for parallel evaluation

model_kwargs
Any

Methods

evaluate_prompt

1evaluate_prompt(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 n_threads: int,
6 verbose: int = 1,
7 dataset_item_ids: Optional = None,
8 experiment_config: Optional = None,
9 n_samples: Optional = None,
10 seed: Optional = None,
11 agent_class: Optional = None
12)

Parameters:

prompt
ChatPrompt
dataset
Dataset
metric
Callable
n_threads
int
verbose
int
dataset_item_ids
Optional
experiment_config
Optional
n_samples
Optional
seed
Optional
agent_class
Optional

get_history

1get_history()

optimize_prompt

1optimize_prompt(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 experiment_config: Optional = None,
6 n_samples: Optional = None,
7 auto_continue: bool = False,
8 agent_class: Optional = None,
9 kwargs: Any
10)

Parameters:

prompt
ChatPrompt
dataset
Dataset

The dataset to evaluate against

metric
Callable

The metric to use for evaluation

experiment_config
Optional

A dictionary to log with the experiments

n_samples
Optional

The number of dataset items to use for evaluation

auto_continue
bool

If True, the algorithm may continue if goal not met

agent_class
Optional
kwargs
Any

update_optimization

1update_optimization(
2 optimization: Optimization,
3 status: str
4)

Parameters:

optimization
Optimization
status
str

EvolutionaryOptimizer

1EvolutionaryOptimizer(
2 model: str,
3 population_size: int = 30,
4 num_generations: int = 15,
5 mutation_rate: float = 0.2,
6 crossover_rate: float = 0.8,
7 tournament_size: int = 4,
8 num_threads: Optional = None,
9 elitism_size: int = 3,
10 adaptive_mutation: bool = True,
11 enable_moo: bool = True,
12 enable_llm_crossover: bool = True,
13 seed: Optional = 42,
14 output_style_guidance: Optional = None,
15 infer_output_style: bool = False,
16 verbose: int = 1,
17 n_threads: int = 12,
18 model_kwargs: Any
19)

Parameters:

model
str

The model to use for evaluation

population_size
int

Number of prompts in the population

num_generations
int

Number of generations to run

mutation_rate
float

Mutation rate for genetic operations

crossover_rate
float

Crossover rate for genetic operations

tournament_size
int

Tournament size for selection

num_threads
Optional
elitism_size
int

Number of elitism prompts

adaptive_mutation
bool

Whether to use adaptive mutation

enable_moo
bool

Whether to enable multi-objective optimization - When enable optimizes for both the supplied metric and the length of the prompt

enable_llm_crossover
bool

Whether to enable LLM crossover

seed
Optional

Random seed for reproducibility

output_style_guidance
Optional

Output style guidance for prompts

infer_output_style
bool

Whether to infer output style

verbose
int

Controls internal logging/progress bars (0=off, 1=on).

n_threads
int

Number of threads for parallel evaluation

model_kwargs
Any

Methods

evaluate_prompt

1evaluate_prompt(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 n_threads: int,
6 verbose: int = 1,
7 dataset_item_ids: Optional = None,
8 experiment_config: Optional = None,
9 n_samples: Optional = None,
10 seed: Optional = None,
11 agent_class: Optional = None
12)

Parameters:

prompt
ChatPrompt
dataset
Dataset
metric
Callable
n_threads
int
verbose
int
dataset_item_ids
Optional
experiment_config
Optional
n_samples
Optional
seed
Optional
agent_class
Optional

get_history

1get_history()

get_llm_crossover_system_prompt

1get_llm_crossover_system_prompt()

optimize_prompt

1optimize_prompt(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 experiment_config: Optional = None,
6 n_samples: Optional = None,
7 auto_continue: bool = False,
8 agent_class: Optional = None,
9 kwargs: Any
10)

Parameters:

prompt
ChatPrompt

The prompt to optimize

dataset
Dataset

The dataset to use for evaluation

metric
Callable

Metric function to optimize with, should have the arguments dataset_item and llm_output

experiment_config
Optional

Optional experiment configuration

n_samples
Optional

Optional number of samples to use

auto_continue
bool

Whether to automatically continue optimization

agent_class
Optional
kwargs
Any

update_optimization

1update_optimization(
2 optimization: Optimization,
3 status: str
4)

Parameters:

optimization
Optimization
status
str

ChatPrompt

1ChatPrompt(
2 name: str = 'chat-prompt',
3 system: Optional = None,
4 user: Optional = None,
5 messages: Optional = None,
6 tools: Optional = None,
7 function_map: Optional = None,
8 model: Optional = None,
9 invoke: Optional = None,
10 project_name: Optional = 'Default Project',
11 model_kwargs: Any
12)

Parameters:

name
str
system
Optional
user
Optional
messages
Optional
tools
Optional
function_map
Optional
model
Optional
invoke
Optional
project_name
Optional
model_kwargs
Any

Methods

copy

1copy()

get_messages

1get_messages(
2 dataset_item: Optional = None
3)

Parameters:

dataset_item
Optional

set_messages

1set_messages(
2 messages: List
3)

Parameters:

messages
List

to_dict

1to_dict()

OptimizationResult

1OptimizationResult(
2 optimizer: <class 'str'> = 'Optimizer',
3 prompt: List[Dict[str, str]],
4 score: <class 'float'>,
5 metric_name: <class 'str'>,
6 optimization_id: Optional[str] = None,
7 dataset_id: Optional[str] = None,
8 initial_prompt: Optional[List[Dict[str, str]]] = None,
9 initial_score: Optional[float] = None,
10 details: Dict[str, Any] = PydanticUndefined,
11 history: List[Dict[str, Any]] = [],
12 llm_calls: Optional[int] = None,
13 demonstrations: Optional[List[Dict[str, Any]]] = None,
14 mipro_prompt: Optional[str] = None,
15 tool_prompts: Optional[Dict[str, str]] = None
16)

Parameters:

optimizer
<class 'str'>
prompt
List[Dict[str, str]]
score
<class 'float'>
metric_name
<class 'str'>
optimization_id
Optional[str]
dataset_id
Optional[str]
initial_prompt
Optional[List[Dict[str, str]]]
initial_score
Optional[float]
details
Dict[str, Any]
history
List[Dict[str, Any]]
llm_calls
Optional[int]
demonstrations
Optional[List[Dict[str, Any]]]
mipro_prompt
Optional[str]
tool_prompts
Optional[Dict[str, str]]