7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'app/controllers/raif/admin/prompt_studio/batch_runs_controller.rb', line 7
def create
unless prompt_studio_runs_enabled?
redirect_to raif.admin_prompt_studio_tasks_path, alert: t("raif.admin.prompt_studio.common.runs_disabled")
return
end
source_tasks = resolve_source_tasks
if source_tasks.empty?
redirect_to raif.admin_prompt_studio_tasks_path(task_type: params[:task_type]),
alert: t("raif.admin.prompt_studio.batch_runs.create.no_tasks_selected")
return
end
available_keys = Raif.available_llm_keys.map(&:to_s)
unless params[:llm_model_key].present? && available_keys.include?(params[:llm_model_key])
redirect_to raif.admin_prompt_studio_tasks_path(task_type: params[:task_type]),
alert: t("raif.admin.prompt_studio.tasks.rerun.invalid_model")
return
end
if params[:judge_type].present? && params[:judge_llm_model_key].present? && !available_keys.include?(params[:judge_llm_model_key])
redirect_to raif.admin_prompt_studio_tasks_path(task_type: params[:task_type]),
alert: t("raif.admin.prompt_studio.tasks.rerun.invalid_model")
return
end
batch_run = Raif::PromptStudioBatchRun.new(
task_type: params[:task_type],
llm_model_key: params[:llm_model_key],
judge_type: params[:judge_type].presence,
judge_llm_model_key: params[:judge_llm_model_key].presence,
judge_config: build_judge_config,
total_count: source_tasks.size
)
batch_run.save!
source_tasks.each do |task|
batch_run.items.create!(source_task: task)
end
Raif::PromptStudioBatchRunJob.perform_later(batch_run: batch_run)
redirect_to raif.admin_prompt_studio_batch_run_path(batch_run)
rescue StandardError => e
redirect_to raif.admin_prompt_studio_tasks_path(task_type: params[:task_type]),
alert: t("raif.admin.prompt_studio.batch_runs.create.error", message: e.message)
end
|