Module: Tracebook::Adapters::ActiveAgent
- Extended by:
- ActiveAgent
- Included in:
- ActiveAgent
- Defined in:
- lib/tracebook/adapters/active_agent.rb
Instance Method Summary collapse
- #disable! ⇒ Object
- #discover_bus ⇒ Object private
- #enable!(bus: nil) ⇒ Object
- #fallback(provider, payload, meta) ⇒ Object private
- #handle_event(event) ⇒ Object private
- #mapper_for(provider) ⇒ Object private
- #subscribers ⇒ Object private
Instance Method Details
#disable! ⇒ Object
17 18 19 |
# File 'lib/tracebook/adapters/active_agent.rb', line 17 def disable! subscribers.clear end |
#discover_bus ⇒ Object (private)
73 74 75 76 77 |
# File 'lib/tracebook/adapters/active_agent.rb', line 73 def discover_bus ActiveAgent::Bus if defined?(ActiveAgent::Bus) rescue NameError nil end |
#enable!(bus: nil) ⇒ Object
10 11 12 13 14 15 |
# File 'lib/tracebook/adapters/active_agent.rb', line 10 def enable!(bus: nil) bus ||= discover_bus return unless bus.respond_to?(:subscribe) subscribers << bus.subscribe { |event| handle_event(event) } end |
#fallback(provider, payload, meta) ⇒ Object (private)
55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/tracebook/adapters/active_agent.rb', line 55 def fallback(provider, payload, ) NormalizedInteraction.new( provider: provider, model: payload.dig(:request, :model), project: [:project], request_payload: payload[:request], response_payload: payload[:response], status: [:status] || :success, tags: Array([:tags]), session_id: [:session_id], parent_id: [:parent_id] ) end |
#handle_event(event) ⇒ Object (private)
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/tracebook/adapters/active_agent.rb', line 23 def handle_event(event) payload = event.with_indifferent_access provider = payload[:provider]&.to_s.presence || "active_agent" mapper = mapper_for(provider) = payload[:meta] || {} = .merge( session_id: payload[:session_id], parent_id: payload[:parent_id] ) normalized = if mapper mapper.normalize(raw_request: payload[:request], raw_response: payload[:response], meta: ) else fallback(provider, payload, ) end TraceBook.record!(**normalized.to_h) end |
#mapper_for(provider) ⇒ Object (private)
42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/tracebook/adapters/active_agent.rb', line 42 def mapper_for(provider) case provider when "openai" Tracebook::Mappers::OpenAI.new when "anthropic" Tracebook::Mappers::Anthropic.new when "ollama" Tracebook::Mappers::Ollama.new else nil end end |
#subscribers ⇒ Object (private)
69 70 71 |
# File 'lib/tracebook/adapters/active_agent.rb', line 69 def subscribers @subscribers ||= [] end |