@@ -38,8 +38,12 @@ class GoogleConversationalSearchTracer
3838 # The Openlayer client instance for sending traces
3939 # @param inference_pipeline_id [String]
4040 # The Openlayer inference pipeline ID to send traces to
41+ # @param session_id [String, nil]
42+ # Optional session ID to use for all traces. Takes precedence over auto-extracted sessions.
43+ # @param user_id [String, nil]
44+ # Optional user ID to use for all traces.
4145 # @return [void]
42- def self . trace_client ( client , openlayer_client :, inference_pipeline_id :)
46+ def self . trace_client ( client , openlayer_client :, inference_pipeline_id :, session_id : nil , user_id : nil )
4347 # Store original method reference
4448 original_answer_query = client . method ( :answer_query )
4549
@@ -63,7 +67,9 @@ def self.trace_client(client, openlayer_client:, inference_pipeline_id:)
6367 start_time : start_time ,
6468 end_time : end_time ,
6569 openlayer_client : openlayer_client ,
66- inference_pipeline_id : inference_pipeline_id
70+ inference_pipeline_id : inference_pipeline_id ,
71+ session_id : session_id ,
72+ user_id : user_id
6773 )
6874 rescue StandardError => e
6975 # Never break the user's application due to tracing errors
@@ -87,8 +93,10 @@ def self.trace_client(client, openlayer_client:, inference_pipeline_id:)
8793 # @param end_time [Time] Request end time
8894 # @param openlayer_client [Openlayer::Client] Openlayer client instance
8995 # @param inference_pipeline_id [String] Pipeline ID
96+ # @param session_id [String, nil] Optional session ID (takes precedence over auto-extracted)
97+ # @param user_id [String, nil] Optional user ID
9098 # @return [void]
91- def self . send_trace ( args :, kwargs :, response :, start_time :, end_time :, openlayer_client :, inference_pipeline_id :)
99+ def self . send_trace ( args :, kwargs :, response :, start_time :, end_time :, openlayer_client :, inference_pipeline_id :, session_id : nil , user_id : nil )
92100 # Calculate latency
93101 latency_ms = ( ( end_time - start_time ) * 1000 ) . round ( 2 )
94102
@@ -145,6 +153,19 @@ def self.send_trace(args:, kwargs:, response:, start_time:, end_time:, openlayer
145153 ]
146154 }
147155
156+ # Determine which session to use (kwarg takes precedence over auto-extracted)
157+ final_session = session_id || metadata [ :session ]
158+ if final_session
159+ trace_data [ :rows ] [ 0 ] [ :session_id ] = final_session
160+ trace_data [ :config ] [ :sessionIdColumnName ] = "session_id"
161+ end
162+
163+ # Add user_id if provided
164+ if user_id
165+ trace_data [ :rows ] [ 0 ] [ :user_id ] = user_id
166+ trace_data [ :config ] [ :userIdColumnName ] = "user_id"
167+ end
168+
148169 # Send to Openlayer
149170 openlayer_client
150171 . inference_pipelines
0 commit comments