Skip to content

Commit 9157c52

Browse files
gustavocidornelaswhoseoyster
authored andcommitted
feat(closes OPEN-8574): session and user id support for the ConversationalSearchService tracer
1 parent 27ad802 commit 9157c52

File tree

2 files changed

+30
-5
lines changed

2 files changed

+30
-5
lines changed

lib/openlayer/integrations/google_conversational_search_tracer.rb

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -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

rbi/openlayer/integrations.rbi

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,17 @@ module Openlayer
88
params(
99
client: T.untyped,
1010
openlayer_client: Openlayer::Client,
11-
inference_pipeline_id: String
11+
inference_pipeline_id: String,
12+
session_id: T.nilable(String),
13+
user_id: T.nilable(String)
1214
).void
1315
end
1416
def self.trace_client(
1517
client,
1618
openlayer_client:,
17-
inference_pipeline_id:
19+
inference_pipeline_id:,
20+
session_id: nil,
21+
user_id: nil
1822
)
1923
end
2024
end

0 commit comments

Comments
 (0)