Module: Legion::LLM::Inference::Steps::PostResponse

Includes:
Logging, Legion::Logging::Helper
Included in:
Executor
Defined in:
lib/legion/llm/inference/steps/post_response.rb

Instance Method Summary collapse

Instance Method Details

#step_post_responseObject



14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# File 'lib/legion/llm/inference/steps/post_response.rb', line 14

def step_post_response
  response = current_response
  log_step_debug(:post_response, :publish_audit, provider: @resolved_provider || 'none', model: @resolved_model || 'none')

  audit_event = AuditPublisher.publish(request: @request, response: response)

  if defined?(Legion::Gaia::AuditObserver) && audit_event
    log_step_debug(:post_response, :notify_gaia_audit_observer)
    Legion::Gaia::AuditObserver.instance.process_event(audit_event)
  else
    log_step_debug(:post_response, :gaia_audit_observer_skipped, reason: audit_event ? :observer_unavailable : :no_audit_event)
  end

  @timeline.record(
    category: :audit, key: 'audit:publish',
    direction: :outbound, detail: 'published to llm.audit',
    from: 'pipeline', to: 'llm.audit'
  )
  log_step_debug(:post_response, :complete, audit_event_present: !audit_event.nil?)
rescue StandardError => e
  @warnings << "post_response error: #{e.message}"
  handle_exception(e, level: :warn, operation: 'llm.pipeline.steps.post_response')
end