@@ -83,13 +83,14 @@ def __init__(self, module: str, object: str, method: str, type: str, sync: bool)
8383
8484class OpenAiArgsExtractor :
8585 def __init__ (
86- self , name = None , metadata = None , trace_id = None , session_id = None , ** kwargs
86+ self , name = None , metadata = None , trace_id = None , session_id = None , user_id = None , ** kwargs
8787 ):
8888 self .args = {}
8989 self .args ["name" ] = name
9090 self .args ["metadata" ] = metadata
9191 self .args ["trace_id" ] = trace_id
9292 self .args ["session_id" ] = session_id
93+ self .args ["user_id" ] = user_id
9394 self .kwargs = kwargs
9495
9596 def get_langfuse_args (self ):
@@ -125,11 +126,15 @@ def _get_langfuse_data_from_kwargs(
125126 if session_id is not None and not isinstance (session_id , str ):
126127 raise TypeError ("session_id must be a string" )
127128
129+ user_id = kwargs .get ("user_id" , None )
130+ if user_id is not None and not isinstance (user_id , str ):
131+ raise TypeError ("user_id must be a string" )
132+
128133 if trace_id :
129- langfuse .trace (id = trace_id , session_id = session_id )
134+ langfuse .trace (id = trace_id , session_id = session_id , user_id = user_id )
130135 elif session_id :
131136 # If a session_id is provided but no trace_id, we should create a trace using the SDK and then use its trace_id
132- trace_id = langfuse .trace (session_id = session_id ).id
137+ trace_id = langfuse .trace (session_id = session_id , user_id = user_id ).id
133138
134139 metadata = kwargs .get ("metadata" , {})
135140
@@ -165,6 +170,7 @@ def _get_langfuse_data_from_kwargs(
165170 "name" : name ,
166171 "metadata" : metadata ,
167172 "trace_id" : trace_id ,
173+ "user_id" : user_id ,
168174 "start_time" : start_time ,
169175 "input" : prompt ,
170176 "model_parameters" : modelParameters ,
0 commit comments