Dependencies
moon -C moonbit check
moon -C moonbit test
moon -C moonbit fmt
moon -C moonbit infolet out = run_rlm_with_openai(
"TOKEN=NEBULA-42",
"sk-...",
openai_options=default_rlm_openai_options(model="gpt-4.1-mini"),
)let out = run_planned_rlm_with_openai(
"CSVのscoreを最小化する候補を反復評価して",
"name,score\nalice,3\nbob,5",
"sk-...",
)pub struct ConstraintMetricSymbol[T, S] {
key : String
comparator : MetricComparator
value : Double
source : ConstraintSource
read : (ImprovementCandidate[T], Int, S) -> Result[Double, String]
}pub enum ConstraintSource {
Absolute
Delta
Ratio
DeltaRatio
}pub struct EvalBudgetPatch {
max_steps : Int?
max_sub_calls : Int?
max_depth : Int?
max_prompt_read_chars : Int?
}pub struct EvalCase {
id : String
prompt : String
query : String
expected : String
metric : EvalMetric
tags : Array[String]
budget : EvalBudgetPatch?
}pub struct ImprovementCandidate[T] {
id : String
input : T
}pub struct ImprovementConstraint {
key : String
comparator : MetricComparator
value : Double
source : ConstraintSource
}pub struct ImprovementContext[T] {
baseline : MetricSnapshot
baseline_score : Double
accepted : Array[ImprovementResult[T]]
index : Int
}pub struct ImprovementPolicy {
objectives : Array[ImprovementObjective]
constraints : Array[ImprovementConstraint]
min_score_delta : Double
}pub struct ImprovementReport[T] {
policy : ImprovementPolicy
baseline : MetricSnapshot
baseline_score : Double
results : Array[ImprovementResult[T]]
best_accepted : ImprovementResult[T]?
}pub struct ImprovementResult[T] {
candidate : ImprovementCandidate[T]
accepted : Bool
reasons : Array[String]
snapshot : MetricSnapshot?
score : Double?
score_delta : Double?
error : String?
}pub struct LongRunImprovementReport[T, S] {
rounds : Array[ImprovementReport[T]]
accepted_history : Array[ImprovementResult[T]]
final_baseline : MetricSnapshot
final_baseline_score : Double
final_state : S
}fn[T, S] LongRunImprovementReport::accepted_history_length(self : LongRunImprovementReport[T, S]) -> Intfn[T, S] LongRunImprovementReport::final_baseline(self : LongRunImprovementReport[T, S]) -> MetricSnapshotpub struct LongRunIterationContext[T, S] {
iteration : Int
state : S
baseline : MetricSnapshot
baseline_score : Double
rounds : Array[ImprovementReport[T]]
accepted_history : Array[ImprovementResult[T]]
}pub enum MetricComparator {
Lt
Lte
Gt
Gte
Eq
}pub enum MetricDirection {
Maximize
Minimize
}pub struct ObjectiveMetricSymbol[T, S] {
key : String
direction : MetricDirection
weight : Double
read : (ImprovementCandidate[T], Int, S) -> Result[Double, String]
}pub struct PlannedLongRunHooks[T, S] {
baseline : MetricSnapshot
initial_state : S
max_iterations : Int?
stop_when_no_accept : Bool?
generate_candidates : (LongRunIterationContext[T, S], RLMPlannerPlan) -> Array[ImprovementCandidate[T]]
evaluate : (ImprovementCandidate[T], LongRunIterationContext[T, S], RLMPlannerPlan) -> Result[MetricSnapshot, String]
on_accepted : (ImprovementResult[T], S) -> S?
}pub enum PlannedRLMResult[T, S] {
SingleResult(RLMPlannerPlan, RLMResultPack)
LongRunResult(RLMPlannerPlan, LongRunImprovementReport[T, S])
}pub struct PlannerConstraintSpec {
key : String
comparator : MetricComparator
value : Double
source : ConstraintSource
}pub struct PlannerLongRunSpec {
objectives : Array[PlannerObjectiveSpec]
constraints : Array[PlannerConstraintSpec]
max_iterations : Int?
stop_when_no_accept : Bool?
min_score_delta : Double?
}pub enum ProgramMode {
Single
LongRun
}pub struct ProgramPlan {
mode : ProgramMode
candidate_limit : Int
max_iterations : Int
stop_when_no_accept : Bool
}pub enum ProgramRun[T, S] {
SingleRun(ImprovementReport[T])
LongRunRun(LongRunImprovementReport[T, S])
}pub struct RLMBudgetPatch {
max_steps : Int?
max_sub_calls : Int?
max_depth : Int?
max_prompt_read_chars : Int?
}pub struct RLMBudgetState {
max_steps : Int
max_sub_calls : Int
max_depth : Int
max_prompt_read_chars : Int
steps_used : Int
sub_calls_used : Int
depth : Int
prompt_read_chars_used : Int
}pub enum RLMDSL {
PromptMeta
DocParse(String?, String?, String)
DocSelectSection(String, String, String)
DocTableSum(String, Json, String)
DocSelectRows(String, Json, String?, Json?, String)
DocProjectColumns(String, Array[Json], String, String?, Bool?)
SlicePrompt(Int, Int, String)
Find(String, Int, String)
ChunkNewlines(Int, String)
ChunkTokens(Int, Int?, String)
SumCsvColumn(Int, String?, String)
PickWord(Int?, String)
CallSymbol(String, String, Json?, Json?)
SubMap(String, String, String, Int?, Int?)
ReduceJoin(String, String, String)
Set(String, Json)
Finalize(String)
}pub struct RLMOpenAIOptions {
model : String
max_tokens : Int
system_prompt : String
timeout_sec : Int
max_retries : Int
}pub struct RLMPlannerPlan {
kind : String
version : Int
mode : ProgramMode
task : String
profile : RLMProfile?
budget : RLMBudgetPatch?
require_prompt_read_before_finalize : Bool?
symbols : Array[String]
long_run : PlannerLongRunSpec?
}pub struct RLMPromptMeta {
prompt_id : String
length : Int
preview_head : String
}pub struct RLMResultPack {
final_output : String
trace : Array[RLMTraceEvent]
budget : RLMBudgetState
}pub struct RLMRunOptions {
budget : RLMBudgetState
meta_preview_chars : Int
task : String?
require_prompt_read_before_finalize : Bool
sub_runner : (String) -> Result[String, String]?
symbol_runner : (RLMExternalSymbolCall) -> Result[Json, String]?
}pub enum RLMTraceEvent {
RootStep(RLMRootStepTrace)
ReplExec(RLMReplExecTrace)
SubCall(RLMSubCallTrace)
}fn[T, S] build_policy_from_metric_symbols(objectives : Array[ObjectiveMetricSymbol[T, S]], constraints? : Array[ConstraintMetricSymbol[T, S]], min_score_delta? : Double) -> ImprovementPolicyfn coerce_planner_plan_from_json(raw : Json, fallback_task : String, available_symbols : Array[String]) -> RLMPlannerPlanfn[T, S] collect_metric_snapshot_by_symbols(candidate : ImprovementCandidate[T], iteration : Int, state : S, objectives : Array[ObjectiveMetricSymbol[T, S]], constraints? : Array[ConstraintMetricSymbol[T, S]]) -> Result[MetricSnapshot, String]fn constraint(key : String, comparator : MetricComparator, value : Double, source? : ConstraintSource) -> ImprovementConstraintfn[T, S] constraint_metric_symbol(key : String, comparator : MetricComparator, value : Double, read : (ImprovementCandidate[T], Int, S) -> Result[Double, String], source? : ConstraintSource) -> ConstraintMetricSymbol[T, S]fn[T, TMetrics] create_metric_symbol(baseline_input : T, coerce_candidate : (Json) -> Result[T, String], evaluate_candidate : (T) -> Result[TMetrics, String], pick_metric : (TMetrics, String) -> Result[Double, String], cache : Map[String, TMetrics], cache_key : (T) -> String) -> ((RLMExternalSymbolCall) -> Result[Json, String])fn create_plan_with_provider(input : String, prompt : String, provider : &Provider, available_symbols? : Array[String], planner_system_prompt? : String) -> RLMPlannerPlanfn default_rlm_budget(max_steps? : Int, max_sub_calls? : Int, max_depth? : Int, max_prompt_read_chars? : Int, depth? : Int) -> RLMBudgetStatefn default_rlm_openai_options(model? : String, max_tokens? : Int, system_prompt? : String, timeout_sec? : Int, max_retries? : Int) -> RLMOpenAIOptionsfn default_rlm_options(budget? : RLMBudgetState, meta_preview_chars? : Int, task? : String?, require_prompt_read_before_finalize? : Bool, sub_runner? : (String) -> Result[String, String]?, symbol_runner? : (RLMExternalSymbolCall) -> Result[Json, String]?) -> RLMRunOptionsfn dsl_sub_map(in_key : String, query_template : String, out : String, limit? : Int?, concurrency? : Int?) -> RLMDSLfn[T, S] objective_metric_symbol(key : String, direction : MetricDirection, read : (ImprovementCandidate[T], Int, S) -> Result[Double, String], weight? : Double) -> ObjectiveMetricSymbol[T, S]fn[T, S] planned_long_run_hooks(baseline : MetricSnapshot, initial_state : S, generate_candidates : (LongRunIterationContext[T, S], RLMPlannerPlan) -> Array[ImprovementCandidate[T]], evaluate : (ImprovementCandidate[T], LongRunIterationContext[T, S], RLMPlannerPlan) -> Result[MetricSnapshot, String], max_iterations? : Int?, stop_when_no_accept? : Bool?, on_accepted? : (ImprovementResult[T], S) -> S?) -> PlannedLongRunHooks[T, S]fn planner_budget_patch(max_steps? : Int?, max_sub_calls? : Int?, max_depth? : Int?, max_prompt_read_chars? : Int?) -> RLMBudgetPatchfn planner_constraint_spec(key : String, comparator : MetricComparator, value : Double, source? : ConstraintSource) -> PlannerConstraintSpecfn planner_long_run_spec(objectives : Array[PlannerObjectiveSpec], constraints? : Array[PlannerConstraintSpec], max_iterations? : Int?, stop_when_no_accept? : Bool?, min_score_delta? : Double?) -> PlannerLongRunSpecfn planner_objective_spec(key : String, direction : MetricDirection, weight? : Double) -> PlannerObjectiveSpecfn planner_plan(mode : ProgramMode, task : String, profile? : RLMProfile?, budget? : RLMBudgetPatch?, require_prompt_read_before_finalize? : Bool?, symbols? : Array[String], long_run? : PlannerLongRunSpec?) -> RLMPlannerPlanfn policy(objectives : Array[ImprovementObjective], constraints? : Array[ImprovementConstraint], min_score_delta? : Double) -> ImprovementPolicyfn program_plan(mode : ProgramMode, candidate_limit : Int, max_iterations : Int, stop_when_no_accept? : Bool) -> ProgramPlanfn[T] run_improvement_loop(baseline : MetricSnapshot, policy : ImprovementPolicy, candidates : Array[ImprovementCandidate[T]], evaluate : (ImprovementCandidate[T], ImprovementContext[T]) -> Result[MetricSnapshot, String], update_baseline_on_accept? : Bool) -> ImprovementReport[T]fn[T, S] run_long_improvement_loop(baseline : MetricSnapshot, policy : ImprovementPolicy, initial_state : S, max_iterations : Int, stop_when_no_accept : Bool, generate_candidates : (LongRunIterationContext[T, S]) -> Array[ImprovementCandidate[T]], evaluate : (ImprovementCandidate[T], LongRunIterationContext[T, S]) -> Result[MetricSnapshot, String], on_accepted : (ImprovementResult[T], S) -> S) -> LongRunImprovementReport[T, S]fn[T, S] run_planned_rlm(prompt : String, complete : (Array[RLMChatMessage], Int) -> RLMDSL, plan : RLMPlannerPlan, runtime_options? : RLMRunOptions?, long_run? : PlannedLongRunHooks[T, S]?) -> Result[PlannedRLMResult[T, S], String]fn[T, S] run_planned_rlm_with_openai(input : String, prompt : String, api_key : String, available_symbols? : Array[String], runtime_options? : RLMRunOptions?, long_run? : PlannedLongRunHooks[T, S]?, planner_system_prompt? : String, planner_openai_options? : RLMOpenAIOptions, executor_openai_options? : RLMOpenAIOptions?) -> Result[PlannedRLMResult[T, S], String]fn[T, S] run_planned_rlm_with_provider(input : String, prompt : String, provider : &Provider, available_symbols? : Array[String], runtime_options? : RLMRunOptions?, long_run? : PlannedLongRunHooks[T, S]?, planner_system_prompt? : String) -> Result[PlannedRLMResult[T, S], String]fn[T, S] run_planned_rlm_with_providers(input : String, prompt : String, planner_provider : &Provider, executor_provider : &Provider, available_symbols? : Array[String], runtime_options? : RLMRunOptions?, long_run? : PlannedLongRunHooks[T, S]?, planner_system_prompt? : String) -> Result[PlannedRLMResult[T, S], String]fn[TPool, T, S] run_program(plan : ProgramPlan, baseline : MetricSnapshot, policy : ImprovementPolicy, pool : Array[TPool], initial_state : S, to_candidate : (TPool) -> ImprovementCandidate[T], evaluate : (ImprovementCandidate[T], LongRunIterationContext[T, S]) -> Result[MetricSnapshot, String], on_accepted : (ImprovementResult[T], S) -> S, format_metrics : (Map[String, Double]) -> String) -> ProgramResult[T, S]fn run_rlm(prompt : String, complete : (Array[RLMChatMessage], Int) -> RLMDSL, options? : RLMRunOptions) -> Result[RLMResultPack, String]fn run_rlm_from_json(prompt : String, complete_text : (Array[RLMChatMessage], Int) -> String, options? : RLMRunOptions) -> Result[RLMResultPack, String]fn run_rlm_with_openai(prompt : String, api_key : String, rlm_options? : RLMRunOptions, openai_options? : RLMOpenAIOptions) -> Result[RLMResultPack, String]fn run_rlm_with_provider(prompt : String, provider : &Provider, options? : RLMRunOptions) -> Result[RLMResultPack, String]fn[T, U] select_untried_candidates(pool : Array[T], rounds : Array[RoundSummary], candidate_limit : Int, to_candidate : (T) -> ImprovementCandidate[U]) -> Array[ImprovementCandidate[U]]Dependencies