Module: Legion::LLM::Hooks

Extended by:
Legion::Logging::Helper
Defined in:
lib/legion/llm/hooks.rb,
lib/legion/llm/hooks/metering.rb,
lib/legion/llm/hooks/rag_guard.rb,
lib/legion/llm/hooks/reflection.rb,
lib/legion/llm/hooks/reciprocity.rb,
lib/legion/llm/hooks/budget_guard.rb,
lib/legion/llm/hooks/cost_tracking.rb,
lib/legion/llm/hooks/response_guard.rb

Defined Under Namespace

Modules: BudgetGuard, CostTracking, Metering, RagGuard, Reciprocity, Reflection, ResponseGuard

Class Method Summary collapse

Class Method Details

.after_chat(&block) ⇒ Object



25
26
27
# File 'lib/legion/llm/hooks.rb', line 25

def after_chat(&block)
  @after_chat << block
end

.before_chat(&block) ⇒ Object



21
22
23
# File 'lib/legion/llm/hooks.rb', line 21

def before_chat(&block)
  @before_chat << block
end

.reset!Object



51
52
53
54
# File 'lib/legion/llm/hooks.rb', line 51

def reset!
  @before_chat = []
  @after_chat = []
end

.run_after(response:, messages:, model:) ⇒ Object



40
41
42
43
44
45
46
47
48
49
# File 'lib/legion/llm/hooks.rb', line 40

def run_after(response:, messages:, model:, **)
  @after_chat.each do |hook|
    result = hook.call(response: response, messages: messages, model: model, **)
    return result if result.is_a?(Hash) && result[:action] == :block
  end
  nil
rescue StandardError => e
  handle_exception(e, level: :warn)
  nil
end

.run_before(messages:, model:) ⇒ Object



29
30
31
32
33
34
35
36
37
38
# File 'lib/legion/llm/hooks.rb', line 29

def run_before(messages:, model:, **)
  @before_chat.each do |hook|
    result = hook.call(messages: messages, model: model, **)
    return result if result.is_a?(Hash) && result[:action] == :block
  end
  nil
rescue StandardError => e
  handle_exception(e, level: :warn)
  nil
end