Opik Agent Optimizer API Reference

Technical SDK reference guide

The Opik Agent Optimizer SDK provides a comprehensive set of tools for optimizing LLM prompts and agents. This reference guide documents the standardized API that all optimizers follow, ensuring consistency and interoperability across different optimization algorithms.

Key Features

  • Standardized API: All optimizers follow the same interface for optimize_prompt() and optimize_mcp() methods
  • Multiple Algorithms: Support for various optimization strategies including evolutionary, few-shot, meta-prompt, MIPRO, and GEPA
  • MCP Support: Built-in support for Model Context Protocol tool calling
  • Consistent Results: All optimizers return standardized OptimizationResult objects
  • Counter Tracking: Built-in LLM and tool call counters for monitoring usage

Core Classes

The SDK provides several optimizer classes that all inherit from BaseOptimizer and implement the same standardized interface:

  • FewShotBayesianOptimizer: Uses few-shot learning with Bayesian optimization
  • MetaPromptOptimizer: Employs meta-prompting techniques for optimization
  • MiproOptimizer: Implements MIPRO (Multi-Input Prompt Optimization) algorithm
  • EvolutionaryOptimizer: Uses genetic algorithms for prompt evolution
  • GepaOptimizer: Leverages GEPA (Genetic-Pareto) optimization approach

Standardized Method Signatures

All optimizers implement these core methods with identical signatures:

optimize_prompt()

1def optimize_prompt(
2 self,
3 prompt: ChatPrompt,
4 dataset: Dataset,
5 metric: Callable,
6 experiment_config: dict | None = None,
7 n_samples: int | None = None,
8 auto_continue: bool = False,
9 agent_class: type[OptimizableAgent] | None = None,
10 **kwargs: Any,
11) -> OptimizationResult

optimize_mcp()

1def optimize_mcp(
2 self,
3 prompt: ChatPrompt,
4 dataset: Dataset,
5 metric: Callable,
6 *,
7 tool_name: str,
8 second_pass: Any,
9 experiment_config: dict | None = None,
10 n_samples: int | None = None,
11 auto_continue: bool = False,
12 agent_class: type[OptimizableAgent] | None = None,
13 fallback_invoker: Callable[[dict[str, Any]], str] | None = None,
14 fallback_arguments: Callable[[Any], dict[str, Any]] | None = None,
15 allow_tool_use_on_second_pass: bool = False,
16 **kwargs: Any,
17) -> OptimizationResult

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

cleanup

1cleanup()

configure_prompt_model

1configure_prompt_model(
2 prompt: ChatPrompt
3)

Parameters:

prompt
ChatPrompt
The chat prompt to configure

create_optimization_context

1create_optimization_context(
2 dataset: Dataset,
3 metric: Callable,
4 metadata: Optional = None
5)

Parameters:

dataset
Dataset
The dataset being optimized
metric
Callable
The metric function
metadata
Optional
Additional metadata

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()

increment_llm_counter

1increment_llm_counter()

increment_tool_counter

1increment_tool_counter()

optimize_mcp

1optimize_mcp(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 tool_name: str,
6 second_pass: Any,
7 experiment_config: Optional = None,
8 n_samples: Optional = None,
9 auto_continue: bool = False,
10 agent_class: Optional = None,
11 fallback_invoker: Optional = None,
12 fallback_arguments: Optional = None,
13 allow_tool_use_on_second_pass: bool = False,
14 kwargs: Any
15)

Parameters:

prompt
ChatPrompt
The chat prompt to optimize, must include tools
dataset
Dataset
Opik dataset containing evaluation data
metric
Callable
Evaluation function that takes (dataset_item, llm_output) and returns a score
tool_name
str
Name of the MCP tool to use for optimization
second_pass
Any
MCPSecondPassCoordinator for handling second-pass tool calls
experiment_config
Optional
Optional configuration for the experiment
n_samples
Optional
Number of samples to use for optimization (default: None)
auto_continue
bool
Whether to auto-continue optimization (default: False)
agent_class
Optional
Custom agent class to use (default: None)
fallback_invoker
Optional
Fallback function for tool invocation (default: None)
fallback_arguments
Optional
Function to extract tool arguments (default: None)
allow_tool_use_on_second_pass
bool
Whether to allow tool use on second pass (default: False)
kwargs
Any

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
Opik Dataset to optimize on
metric
Callable
Metric function to evaluate on
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
auto_continue
bool
Whether to auto-continue optimization
agent_class
Optional
Optional agent class to use
kwargs
Any

reset_counters

1reset_counters()

setup_agent_class

1setup_agent_class(
2 prompt: ChatPrompt,
3 agent_class: Optional = None
4)

Parameters:

prompt
ChatPrompt
The chat prompt
agent_class
Optional
Optional custom agent class

update_optimization

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

Parameters:

optimization
Optimization
status
str

validate_optimization_inputs

1validate_optimization_inputs(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable
5)

Parameters:

prompt
ChatPrompt
The chat prompt to validate
dataset
Dataset
The dataset to validate
metric
Callable
The metric function to validate

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 seed: int = 42,
11 model_kwargs: Any
12)

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
seed
int
model_kwargs
Any

Methods

cleanup

1cleanup()

configure_prompt_model

1configure_prompt_model(
2 prompt: ChatPrompt
3)

Parameters:

prompt
ChatPrompt
The chat prompt to configure

create_optimization_context

1create_optimization_context(
2 dataset: Dataset,
3 metric: Callable,
4 metadata: Optional = None
5)

Parameters:

dataset
Dataset
The dataset being optimized
metric
Callable
The metric function
metadata
Optional
Additional metadata

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()

increment_llm_counter

1increment_llm_counter()

increment_tool_counter

1increment_tool_counter()

optimize_mcp

1optimize_mcp(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 tool_name: str,
6 second_pass: MCPSecondPassCoordinator,
7 experiment_config: Optional = None,
8 n_samples: Optional = None,
9 auto_continue: bool = False,
10 agent_class: Optional = None,
11 fallback_invoker: Optional = None,
12 fallback_arguments: Optional = None,
13 allow_tool_use_on_second_pass: bool = False,
14 kwargs: Any
15)

Parameters:

prompt
ChatPrompt
The chat prompt to optimize, must include tools
dataset
Dataset
Opik dataset containing evaluation data
metric
Callable
Evaluation function that takes (dataset_item, llm_output) and returns a score
tool_name
str
Name of the MCP tool to use for optimization
second_pass
MCPSecondPassCoordinator
MCPSecondPassCoordinator for handling second-pass tool calls
experiment_config
Optional
Optional configuration for the experiment
n_samples
Optional
Number of samples to use for optimization (default: None)
auto_continue
bool
Whether to auto-continue optimization (default: False)
agent_class
Optional
Custom agent class to use (default: None)
fallback_invoker
Optional
Fallback function for tool invocation (default: None)
fallback_arguments
Optional
Function to extract tool arguments (default: None)
allow_tool_use_on_second_pass
bool
Whether to allow tool use on second pass (default: False)
kwargs
Any

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
Opik dataset name, or Opik dataset
metric
Callable
A metric function, this function should have two arguments:
experiment_config
Optional
n_samples
Optional
auto_continue
bool
agent_class
Optional
kwargs
Any

reset_counters

1reset_counters()

setup_agent_class

1setup_agent_class(
2 prompt: ChatPrompt,
3 agent_class: Optional = None
4)

Parameters:

prompt
ChatPrompt
The chat prompt
agent_class
Optional
Optional custom agent class

update_optimization

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

Parameters:

optimization
Optimization
status
str

validate_optimization_inputs

1validate_optimization_inputs(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable
5)

Parameters:

prompt
ChatPrompt
The chat prompt to validate
dataset
Dataset
The dataset to validate
metric
Callable
The metric function to validate

MiproOptimizer

1MiproOptimizer(
2 model: Any,
3 project_name: Optional = None,
4 verbose: int = 1,
5 model_kwargs: Any
6)

Parameters:

model
Any
LiteLLM model name
project_name
Optional
verbose
int
Controls internal logging/progress bars (0=off, 1=on).
model_kwargs
Any
additional args for model (eg, temperature)

Methods

cleanup

1cleanup()

configure_prompt_model

1configure_prompt_model(
2 prompt: ChatPrompt
3)

Parameters:

prompt
ChatPrompt
The chat prompt to configure

continue_optimize_prompt

1continue_optimize_prompt()

create_optimization_context

1create_optimization_context(
2 dataset: Dataset,
3 metric: Callable,
4 metadata: Optional = None
5)

Parameters:

dataset
Dataset
The dataset being optimized
metric
Callable
The metric function
metadata
Optional
Additional metadata

evaluate_prompt

1evaluate_prompt(
2 dataset: str | opik.api_objects.dataset.dataset.Dataset,
3 metric: Callable,
4 task_config: TaskConfig,
5 prompt: Union = None,
6 n_samples: int = 10,
7 dataset_item_ids: Optional = None,
8 experiment_config: Optional = None,
9 verbose: int = 1,
10 kwargs: Any
11)

Parameters:

dataset
str | opik.api_objects.dataset.dataset.Dataset
Opik dataset name or dataset
metric
Callable
Metric function to optimize
task_config
TaskConfig
A TaskConfig instance
prompt
Union
The prompt to evaluate
n_samples
int
number of items to test in the dataset
dataset_item_ids
Optional
Optional list of dataset item IDs to evaluate
experiment_config
Optional
Optional configuration for the experiment
verbose
int
Verbosity level
kwargs
Any

get_best

1get_best(
2 position: int = 0
3)

Parameters:

position
int

get_history

1get_history()

increment_llm_counter

1increment_llm_counter()

increment_tool_counter

1increment_tool_counter()

load_from_checkpoint

1load_from_checkpoint(
2 filename: Any
3)

Parameters:

filename
Any

optimize_mcp

1optimize_mcp(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 tool_name: str,
6 second_pass: Any,
7 experiment_config: Optional = None,
8 n_samples: Optional = None,
9 auto_continue: bool = False,
10 agent_class: Optional = None,
11 fallback_invoker: Optional = None,
12 fallback_arguments: Optional = None,
13 allow_tool_use_on_second_pass: bool = False,
14 kwargs: Any
15)

Parameters:

prompt
ChatPrompt
The chat prompt to optimize, must include tools
dataset
Dataset
Opik dataset containing evaluation data
metric
Callable
Evaluation function that takes (dataset_item, llm_output) and returns a score
tool_name
str
Name of the MCP tool to use for optimization
second_pass
Any
MCPSecondPassCoordinator for handling second-pass tool calls
experiment_config
Optional
Optional configuration for the experiment
n_samples
Optional
Number of samples to use for optimization (default: None)
auto_continue
bool
Whether to auto-continue optimization (default: False)
agent_class
Optional
Custom agent class to use (default: None)
fallback_invoker
Optional
Fallback function for tool invocation (default: None)
fallback_arguments
Optional
Function to extract tool arguments (default: None)
allow_tool_use_on_second_pass
bool
Whether to allow tool use on second pass (default: False)
kwargs
Any

optimize_prompt

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

Parameters:

prompt
ChatPrompt
The chat prompt to optimize
dataset
Dataset
Opik dataset containing evaluation data
metric
Callable
Evaluation function that takes (dataset_item, llm_output) and returns a score
experiment_config
Optional
Optional configuration for the experiment
n_samples
int | None
Number of samples to use for optimization (default: 10)
auto_continue
bool
Whether to auto-continue optimization (default: False)
agent_class
Optional
Custom agent class to use (default: None)
kwargs
Any

prepare_optimize_prompt

1prepare_optimize_prompt(
2 dataset: Any,
3 metric: Any,
4 task_config: Any,
5 num_candidates: int = 10,
6 experiment_config: Optional = None,
7 optimization_id: Optional = None,
8 num_trials: int | None = 3,
9 n_samples: int | None = 10,
10 auto: Optional = 'light',
11 kwargs: Any
12)

Parameters:

dataset
Any
metric
Any
task_config
Any
num_candidates
int
experiment_config
Optional
optimization_id
Optional
num_trials
int | None
n_samples
int | None
auto
Optional
kwargs
Any

reset_counters

1reset_counters()

setup_agent_class

1setup_agent_class(
2 prompt: ChatPrompt,
3 agent_class: Optional = None
4)

Parameters:

prompt
ChatPrompt
The chat prompt
agent_class
Optional
Optional custom agent class

update_optimization

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

Parameters:

optimization
Optimization
status
str

validate_optimization_inputs

1validate_optimization_inputs(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable
5)

Parameters:

prompt
ChatPrompt
The chat prompt to validate
dataset
Dataset
The dataset to validate
metric
Callable
The metric function to validate

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: int | None = 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
int | None
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

cleanup

1cleanup()

configure_prompt_model

1configure_prompt_model(
2 prompt: ChatPrompt
3)

Parameters:

prompt
ChatPrompt
The chat prompt to configure

create_optimization_context

1create_optimization_context(
2 dataset: Dataset,
3 metric: Callable,
4 metadata: Optional = None
5)

Parameters:

dataset
Dataset
The dataset being optimized
metric
Callable
The metric function
metadata
Optional
Additional metadata

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()

increment_llm_counter

1increment_llm_counter()

increment_tool_counter

1increment_tool_counter()

optimize_mcp

1optimize_mcp(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 tool_name: str,
6 second_pass: Any,
7 experiment_config: Optional = None,
8 n_samples: Optional = None,
9 auto_continue: bool = False,
10 agent_class: Optional = None,
11 fallback_invoker: Optional = None,
12 fallback_arguments: Optional = None,
13 allow_tool_use_on_second_pass: bool = False,
14 kwargs: Any
15)

Parameters:

prompt
ChatPrompt
The chat prompt to optimize, must include tools
dataset
Dataset
Opik dataset containing evaluation data
metric
Callable
Evaluation function that takes (dataset_item, llm_output) and returns a score
tool_name
str
Name of the MCP tool to use for optimization
second_pass
Any
MCPSecondPassCoordinator for handling second-pass tool calls
experiment_config
Optional
Optional configuration for the experiment
n_samples
Optional
Number of samples to use for optimization (default: None)
auto_continue
bool
Whether to auto-continue optimization (default: False)
agent_class
Optional
Custom agent class to use (default: None)
fallback_invoker
Optional
Fallback function for tool invocation (default: None)
fallback_arguments
Optional
Function to extract tool arguments (default: None)
allow_tool_use_on_second_pass
bool
Whether to allow tool use on second pass (default: False)
kwargs
Any

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
Optional agent class to use
kwargs
Any

reset_counters

1reset_counters()

setup_agent_class

1setup_agent_class(
2 prompt: ChatPrompt,
3 agent_class: Optional = None
4)

Parameters:

prompt
ChatPrompt
The chat prompt
agent_class
Optional
Optional custom agent class

update_optimization

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

Parameters:

optimization
Optimization
status
str

validate_optimization_inputs

1validate_optimization_inputs(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable
5)

Parameters:

prompt
ChatPrompt
The chat prompt to validate
dataset
Dataset
The dataset to validate
metric
Callable
The metric function to validate

GepaOptimizer

1GepaOptimizer(
2 model: str,
3 project_name: Optional = None,
4 reflection_model: Optional = None,
5 verbose: int = 1,
6 seed: int = 42,
7 model_kwargs: Any
8)

Parameters:

model
str
LiteLLM model name
project_name
Optional
reflection_model
Optional
verbose
int
Controls internal logging/progress bars (0=off, 1=on).
seed
int
Random seed for reproducibility (default: 42)
model_kwargs
Any
additional args for model (eg, temperature)

Methods

cleanup

1cleanup()

configure_prompt_model

1configure_prompt_model(
2 prompt: ChatPrompt
3)

Parameters:

prompt
ChatPrompt
The chat prompt to configure

create_optimization_context

1create_optimization_context(
2 dataset: Dataset,
3 metric: Callable,
4 metadata: Optional = None
5)

Parameters:

dataset
Dataset
The dataset being optimized
metric
Callable
The metric function
metadata
Optional
Additional metadata

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()

increment_llm_counter

1increment_llm_counter()

increment_tool_counter

1increment_tool_counter()

optimize_mcp

1optimize_mcp(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable,
5 tool_name: str,
6 second_pass: Any,
7 experiment_config: Optional = None,
8 n_samples: Optional = None,
9 auto_continue: bool = False,
10 agent_class: Optional = None,
11 fallback_invoker: Optional = None,
12 fallback_arguments: Optional = None,
13 allow_tool_use_on_second_pass: bool = False,
14 kwargs: Any
15)

Parameters:

prompt
ChatPrompt
The chat prompt to optimize, must include tools
dataset
Dataset
Opik dataset containing evaluation data
metric
Callable
Evaluation function that takes (dataset_item, llm_output) and returns a score
tool_name
str
Name of the MCP tool to use for optimization
second_pass
Any
MCPSecondPassCoordinator for handling second-pass tool calls
experiment_config
Optional
Optional configuration for the experiment
n_samples
Optional
Number of samples to use for optimization (default: None)
auto_continue
bool
Whether to auto-continue optimization (default: False)
agent_class
Optional
Custom agent class to use (default: None)
fallback_invoker
Optional
Fallback function for tool invocation (default: None)
fallback_arguments
Optional
Function to extract tool arguments (default: None)
allow_tool_use_on_second_pass
bool
Whether to allow tool use on second pass (default: False)
kwargs
Any

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
Opik Dataset to optimize on
metric
Callable
Metric function to evaluate on
experiment_config
Optional
Optional configuration for the experiment
n_samples
Optional
Optional number of items to test in the dataset
auto_continue
bool
Whether to auto-continue optimization
agent_class
Optional
Optional agent class to use
kwargs
Any

reset_counters

1reset_counters()

setup_agent_class

1setup_agent_class(
2 prompt: ChatPrompt,
3 agent_class: Optional = None
4)

Parameters:

prompt
ChatPrompt
The chat prompt
agent_class
Optional
Optional custom agent class

update_optimization

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

Parameters:

optimization
Optimization
status
str

validate_optimization_inputs

1validate_optimization_inputs(
2 prompt: ChatPrompt,
3 dataset: Dataset,
4 metric: Callable
5)

Parameters:

prompt
ChatPrompt
The chat prompt to validate
dataset
Dataset
The dataset to validate
metric
Callable
The metric function to validate

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: str | None = '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
str | None
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()

with_messages

1with_messages(
2 messages: list
3)

Parameters:

messages
list

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: str | None = None,
7 dataset_id: str | None = None,
8 initial_prompt: list[dict[str, str]] | None = None,
9 initial_score: float | None = None,
10 details: dict[str, Any] = PydanticUndefined,
11 history: list[dict[str, Any]] = [],
12 llm_calls: int | None = None,
13 demonstrations: list[dict[str, Any]] | None = None,
14 mipro_prompt: str | None = None,
15 tool_prompts: dict[str, str] | None = None
16)

Parameters:

optimizer
<class 'str'>
prompt
list[dict[str, str]]
score
<class 'float'>
metric_name
<class 'str'>
optimization_id
str | None
dataset_id
str | None
initial_prompt
list[dict[str, str]] | None
initial_score
float | None
details
dict[str, Any]
history
list[dict[str, Any]]
llm_calls
int | None
demonstrations
list[dict[str, Any]] | None
mipro_prompt
str | None
tool_prompts
dict[str, str] | None

OptimizableAgent

1OptimizableAgent(
2 prompt: Any
3)

Parameters:

prompt
Any
a chat prompt

Methods

init_agent

1init_agent(
2 prompt: Any
3)

Parameters:

prompt
Any

init_llm

1init_llm()

invoke

1invoke(
2 messages: list,
3 seed: Optional = None
4)

Parameters:

messages
list
seed
Optional

invoke_dataset_item

1invoke_dataset_item(
2 dataset_item: dict
3)

Parameters:

dataset_item
dict

llm_invoke

1llm_invoke(
2 query: Optional = None,
3 messages: Optional = None,
4 seed: Optional = None,
5 allow_tool_use: bool | None = False
6)

Parameters:

query
Optional
messages
Optional
seed
Optional
allow_tool_use
bool | None