Class: Kward::RPC::SessionMetrics
- Inherits:
-
Object
- Object
- Kward::RPC::SessionMetrics
- Defined in:
- lib/kward/rpc/session_metrics.rb
Overview
Computes conversation metrics and context usage for RPC runtime payloads.
Instance Method Summary collapse
- #context_usage(rpc_session, model, client:) ⇒ Object
-
#initialize(context_usage:) ⇒ SessionMetrics
constructor
A new instance of SessionMetrics.
- #message_count(conversation) ⇒ Object
- #message_stats(conversation) ⇒ Object
Constructor Details
#initialize(context_usage:) ⇒ SessionMetrics
Returns a new instance of SessionMetrics.
9 10 11 |
# File 'lib/kward/rpc/session_metrics.rb', line 9 def initialize(context_usage:) @context_usage = context_usage end |
Instance Method Details
#context_usage(rpc_session, model, client:) ⇒ Object
35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/kward/rpc/session_metrics.rb', line 35 def context_usage(rpc_session, model, client:) context_parts = if client.respond_to?(:current_context_parts) client.current_context_parts(rpc_session.conversation., rpc_session.tool_registry.schemas) else { provider: model[:provider], model: model[:id], messages: rpc_session.conversation., tools: rpc_session.tool_registry.schemas } end @context_usage.call( provider: model[:provider], model: model[:id], context_window: model[:contextWindow], context_parts: context_parts ) end |
#message_count(conversation) ⇒ Object
13 14 15 |
# File 'lib/kward/rpc/session_metrics.rb', line 13 def (conversation) conversation..count { || MessageAccess.role() != "system" } end |
#message_stats(conversation) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/kward/rpc/session_metrics.rb', line 17 def (conversation) conversation..each_with_object() do |, counts| role = MessageAccess.role() next if role == "system" counts[:totalMessages] += 1 case role when "user" counts[:userMessages] += 1 when "assistant" counts[:assistantMessages] += 1 counts[:toolCalls] += MessageAccess.tool_calls().length when "tool", "toolResult" counts[:toolResults] += 1 end end end |