Module: Legion::Extensions::Llm::Ledger::Runners::Prompts

Extended by:
Prompts
Included in:
Prompts
Defined in:
lib/legion/extensions/llm/ledger/runners/prompts.rb

Instance Method Summary collapse

Instance Method Details

#write_prompt_record(payload = nil, metadata = {}, **message) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/legion/extensions/llm/ledger/runners/prompts.rb', line 11

def write_prompt_record(payload = nil,  = {}, **message)
  payload,  = normalize_runner_args(payload, , message)
  headers = [:headers] || {}
  props   = [:properties] || {}

  body = Helpers::Decryption.decrypt_if_needed(payload, )
  ctx  = body[:message_context] || {}

  expires_at = Helpers::Retention.resolve(
    retention:    headers['x-legion-retention'],
    contains_phi: headers['x-legion-contains-phi'] == 'true'
  )

  record = build_prompt_record(body, ctx, props, headers, expires_at)
  ::Legion::Data::DB[:prompt_records].insert(record)
  { result: :ok }
rescue Sequel::UniqueConstraintViolation => _e
  { result: :duplicate }
rescue Helpers::DecryptionUnavailable => _e
  raise
rescue StandardError => e
  Legion::Logging.error("[lex-llm-ledger] write_prompt_record failed: #{e.message}") # rubocop:disable Legion/HelperMigration/DirectLogging
  { result: :error, error: e.message }
end