Module: Raif::ApplicationHelper

Includes:
Pagy::Frontend
Defined in:
app/helpers/raif/application_helper.rb

Instance Method Summary collapse

Instance Method Details

#format_task_response(task) ⇒ Object



17
18
19
20
21
22
23
24
25
# File 'app/helpers/raif/application_helper.rb', line 17

def format_task_response(task)
  if task.response_format_json? && task.raw_response.present?
    JSON.pretty_generate(JSON.parse(task.raw_response))
  else
    task.raw_response
  end
rescue JSON::ParserError
  task.raw_response
end

#llm_model_options(selected: nil) ⇒ Object



33
34
35
36
37
38
39
40
# File 'app/helpers/raif/application_helper.rb', line 33

def llm_model_options(selected: nil)
  options = Raif.available_llm_keys.map do |key|
    label = I18n.t("raif.model_names.#{key}", default: key.to_s)
    [label, key.to_s]
  end.sort_by(&:first)

  options_for_select(options, selected&.to_s)
end

#llm_pricing_jsonObject



42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'app/helpers/raif/application_helper.rb', line 42

def llm_pricing_json
  pricing = {}
  Raif.available_llm_keys.each do |key|
    config = Raif.llm_config(key)
    next unless config

    pricing[key.to_s] = {
      input: config[:input_token_cost] || 0,
      output: config[:output_token_cost] || 0
    }
  end

  pricing.to_json
end

#pretty_json(value) ⇒ Object



27
28
29
30
31
# File 'app/helpers/raif/application_helper.rb', line 27

def pretty_json(value)
  JSON.pretty_generate(JSON.parse(value))
rescue StandardError
  value
end

#raif_pagy_nav(pagy) ⇒ Object



7
8
9
10
11
12
13
14
15
# File 'app/helpers/raif/application_helper.rb', line 7

def raif_pagy_nav(pagy)
  html = if pagy.respond_to?(:series_nav)
    pagy.series_nav(:bootstrap)
  else
    pagy_bootstrap_nav(pagy)
  end

  html.respond_to?(:html_safe) ? html.html_safe : html
end