Skip to main content
Complete reference for prompt learning configuration files.

Configuration Structure

[prompt_learning]
algorithm = "gepa"  # or "mipro"
task_app_url = "http://127.0.0.1:8102"
task_app_id = "banking77"
evaluation_seeds = [50, 51, 52, ...]
validation_seeds = [0, 1, 2, ...]

[prompt_learning.initial_prompt]
messages = [
  { role = "system", content = "..." },
  { role = "user", pattern = "Query: {query}" }
]

[prompt_learning.gepa]
initial_population_size = 20
num_generations = 15
mutation_rate = 0.3
crossover_rate = 0.5
rollout_budget = 1000
max_concurrent_rollouts = 20
pareto_set_size = 20

Core Settings

[prompt_learning]

FieldTypeRequiredDescription
algorithm"gepa" | "mipro"YesOptimization algorithm
task_app_urlstringYesTask app endpoint URL
task_app_idstringNoTask app identifier
evaluation_seedsarray[int]YesTraining seed indices
validation_seedsarray[int]YesValidation seed indices

[prompt_learning.initial_prompt]

FieldTypeRequiredDescription
messagesarray[object]YesInitial prompt template
Each message object:
  • role: "system" \| "user" \| "assistant"
  • content: Static content (string)
  • pattern: Template with {query} placeholder (string)

GEPA Parameters

[prompt_learning.gepa]

ParameterTypeDefaultDescription
initial_population_sizeint20Starting number of prompt variants
num_generationsint15Evolutionary cycles to run
mutation_ratefloat0.3Probability of mutation (0-1)
crossover_ratefloat0.5Probability of crossover (0-1)
rollout_budgetint1000Total task evaluations allowed
max_concurrent_rolloutsint20Parallel rollout limit
pareto_set_sizeint20Pareto front size

MIPROv2 Parameters

[prompt_learning.mipro]

ParameterTypeDefaultDescription
max_iterationsint100Maximum optimization iterations
exploration_budgetint500Exploration evaluations
constraint_weightfloat0.1Constraint violation penalty

Example Configurations

Banking77 (GEPA)

[prompt_learning]
algorithm = "gepa"
task_app_url = "http://127.0.0.1:8102"
task_app_id = "banking77"
evaluation_seeds = [50, 51, 52, ..., 79]
validation_seeds = [0, 1, 2, ..., 49]

[prompt_learning.initial_prompt]
messages = [
  { role = "system", content = "You are a banking intent classification assistant." },
  { role = "user", pattern = "Customer Query: {query}\n\nClassify this query into one of 77 banking intents." }
]

[prompt_learning.gepa]
initial_population_size = 20
num_generations = 15
mutation_rate = 0.3
crossover_rate = 0.5
rollout_budget = 1000
max_concurrent_rollouts = 20
pareto_set_size = 20

HotpotQA (GEPA)

[prompt_learning]
algorithm = "gepa"
task_app_url = "http://127.0.0.1:8103"
task_app_id = "hotpotqa"
evaluation_seeds = [0, 1, 2, ..., 29]
validation_seeds = [30, 31, 32, ..., 79]

[prompt_learning.initial_prompt]
messages = [
  { role = "system", content = "You are a question-answering assistant." },
  { role = "user", pattern = "Question: {query}\n\nAnswer this multi-hop question using reasoning." }
]

[prompt_learning.gepa]
initial_population_size = 30
num_generations = 20
mutation_rate = 0.25
crossover_rate = 0.6
rollout_budget = 1500
max_concurrent_rollouts = 25
pareto_set_size = 25

Best Practices

  1. Population Size: Start with 20-30 for most tasks. Increase for complex tasks.
  2. Generations: 10-15 generations usually sufficient. More for complex optimization.
  3. Mutation Rate: 0.2-0.4 works well. Higher = more exploration, lower = more exploitation.
  4. Rollout Budget: Allocate 50-100 rollouts per generation for stable estimates.
  5. Concurrency: Set max_concurrent_rollouts based on task app capacity (typically 10-50).