Class: ActiveAgent::GenerationProvider::LogSubscriber
- Inherits:
-
ActiveSupport::LogSubscriber
- Object
- ActiveSupport::LogSubscriber
- ActiveAgent::GenerationProvider::LogSubscriber
- Defined in:
- lib/active_agent/generation_provider/log_subscriber.rb
Overview
Generation Provider \LogSubscriber
Implements the ActiveSupport::LogSubscriber for logging notifications when generation providers make API calls and handle responses.
Instance Method Summary collapse
-
#error(event) ⇒ Object
Error occurred.
-
#generate(event) ⇒ Object
A generation request was made.
-
#logger ⇒ Object
Use the logger configured for ActiveAgent::Base if available.
-
#retry(event) ⇒ Object
Retry attempt.
-
#stream_chunk(event) ⇒ Object
Streaming chunk received.
-
#tool_call(event) ⇒ Object
Tool/function call executed.
Instance Method Details
#error(event) ⇒ Object
Error occurred
68 69 70 71 72 73 74 75 76 |
# File 'lib/active_agent/generation_provider/log_subscriber.rb', line 68 def error(event) error do provider = event.payload[:provider] error_class = event.payload[:error_class] = event.payload[:error_message] "#{provider}: Error #{error_class} - #{}" end end |
#generate(event) ⇒ Object
A generation request was made
13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
# File 'lib/active_agent/generation_provider/log_subscriber.rb', line 13 def generate(event) info do provider = event.payload[:provider] model = event.payload[:model] if exception = event.payload[:exception_object] "Failed generation with #{provider} model=#{model} error_class=#{exception.class} error_message=#{exception..inspect}" else "Generated response with #{provider} model=#{model} (#{event.duration.round(1)}ms)" end end debug { event.payload[:prompt] } if event.payload[:prompt] end |
#logger ⇒ Object
Use the logger configured for ActiveAgent::Base if available
80 81 82 83 84 85 86 |
# File 'lib/active_agent/generation_provider/log_subscriber.rb', line 80 def logger if defined?(ActiveAgent::Base) && ActiveAgent::Base.respond_to?(:logger) ActiveAgent::Base.logger else super end end |
#retry(event) ⇒ Object
Retry attempt
55 56 57 58 59 60 61 62 63 64 |
# File 'lib/active_agent/generation_provider/log_subscriber.rb', line 55 def retry(event) warn do provider = event.payload[:provider] attempt = event.payload[:attempt] max_attempts = event.payload[:max_attempts] error_class = event.payload[:error_class] "#{provider}: Retry attempt #{attempt}/#{max_attempts} after #{error_class}" end end |
#stream_chunk(event) ⇒ Object
Streaming chunk received
30 31 32 33 34 35 36 |
# File 'lib/active_agent/generation_provider/log_subscriber.rb', line 30 def stream_chunk(event) debug do provider = event.payload[:provider] chunk_size = event.payload[:chunk_size] "#{provider}: received stream chunk (#{chunk_size} bytes)" end end |
#tool_call(event) ⇒ Object
Tool/function call executed
40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/active_agent/generation_provider/log_subscriber.rb', line 40 def tool_call(event) info do tool_name = event.payload[:tool_name] tool_id = event.payload[:tool_id] if exception = event.payload[:exception_object] "Failed tool call #{tool_name} id=#{tool_id} error=#{exception.class}" else "Executed tool call #{tool_name} id=#{tool_id} (#{event.duration.round(1)}ms)" end end end |