@@ -130,8 +130,11 @@ def fill_trace_data(trace_id: str, data: Dict[str, Any], scenario: UpdateTraceSc
130130 trace_data .get ()[trace_id ].error = data ["error" ]
131131 trace_data .get ()[trace_id ].status = "error"
132132 elif scenario == UpdateTraceScenario .CHAIN :
133- trace_data .get ()[trace_id ].parent_trace_id = data ["parent_trace_id" ]
134- trace_data .get ()[data ["parent_trace_id" ]].children .append (trace_id )
133+ parent_trace_id = data ["parent_trace_id" ]
134+ trace_data .get ()[trace_id ].parent_trace_id = parent_trace_id
135+ trace_data .get ()[parent_trace_id ].children .append (trace_id )
136+ if trace_data .get ()[parent_trace_id ].log_sample_rate != trace_data .get ()[trace_id ].log_sample_rate :
137+ trace_data .get ()[trace_id ].log_sample_rate = trace_data .get ()[parent_trace_id ].log_sample_rate
135138 elif scenario == UpdateTraceScenario .LANGCHAIN_CHILD :
136139 trace_data .get ()[data ["parent_trace_id" ]].children .append (trace_id )
137140 elif scenario == UpdateTraceScenario .OPENAICONFIG :
@@ -162,6 +165,7 @@ def trace(
162165 log_omit_outputs : Optional [bool ] = False ,
163166 overwrite_trace_id : Optional [str ] = None ,
164167 overwrite_inputs : Optional [Dict [str , Any ]] = None ,
168+ log_sample_rate : Optional [float ] = 1.0 ,
165169):
166170 def init_trace (func_name , _parea_target_field , args , kwargs , func ) -> Tuple [str , datetime , contextvars .Token ]:
167171 start_time = timezone_aware_now ()
@@ -224,6 +228,7 @@ def init_trace(func_name, _parea_target_field, args, kwargs, func) -> Tuple[str,
224228 deployment_id = deployment_id ,
225229 depth = depth ,
226230 execution_order = execution_order ,
231+ log_sample_rate = log_sample_rate ,
227232 )
228233
229234 if parent_trace_id :
0 commit comments