Class: Tracebook::Mappers::Anthropic
- Defined in:
- lib/tracebook/mappers/anthropic.rb
Instance Method Summary collapse
- #anthropic_usage(response, key) ⇒ Object private
- #extract_blocks(blocks) ⇒ Object private
- #normalize(raw_request:, raw_response:, meta: {}) ⇒ Object
Methods inherited from Base
#build_interaction, #compact_hash, #indifferent_meta, #symbolize
Instance Method Details
#anthropic_usage(response, key) ⇒ Object (private)
51 52 53 54 |
# File 'lib/tracebook/mappers/anthropic.rb', line 51 def anthropic_usage(response, key) usage = response[:usage] || {} usage.with_indifferent_access[key]&.to_i end |
#extract_blocks(blocks) ⇒ Object (private)
37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/tracebook/mappers/anthropic.rb', line 37 def extract_blocks(blocks) Array(blocks).flat_map do |block| block = block.with_indifferent_access case block[:type] when "text" block[:text] when "input_text" block[:text] else nil end end.compact.join("\n\n") end |
#normalize(raw_request:, raw_response:, meta: {}) ⇒ Object
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 |
# File 'lib/tracebook/mappers/anthropic.rb', line 8 def normalize(raw_request:, raw_response:, meta: {}) request = symbolize(raw_request || {}) response = symbolize(raw_response || {}) = () build_interaction( provider: "anthropic", model: request[:model] || response[:model], project: [:project], request_payload: raw_request, response_payload: raw_response, request_text: extract_blocks(request[:messages]), response_text: extract_blocks(response[:content]), input_tokens: anthropic_usage(response, :input_tokens), output_tokens: anthropic_usage(response, :output_tokens), latency_ms: [:latency_ms], status: [:status]&.to_sym || :success, error_class: nil, error_message: nil, tags: Array([:tags]).compact, metadata: {}, user: [:user], parent_id: [:parent_id], session_id: [:session_id] ) end |