Class: Raif::Admin::PromptStudio::BatchRunsController

Inherits:
BaseController show all
Defined in:
app/controllers/raif/admin/prompt_studio/batch_runs_controller.rb

Instance Method Summary collapse

Methods inherited from Raif::ApplicationController

#raif_current_user

Instance Method Details

#createObject



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

#showObject



57
58
59
60
61
# File 'app/controllers/raif/admin/prompt_studio/batch_runs_controller.rb', line 57

def show
  @batch_run = Raif::PromptStudioBatchRun.find(params[:id])
  items = @batch_run.items.includes(:source_task, :result_task, :judge_task).order(:id)
  @pagy, @items = pagy(items)
end