3333 responses_cancel_wrapper ,
3434 responses_get_or_create_wrapper ,
3535)
36+ from opentelemetry .instrumentation .openai .v1 .realtime_wrappers import (
37+ realtime_connect_wrapper ,
38+ )
3639
3740from opentelemetry .instrumentation .openai .version import __version__
3841from opentelemetry .instrumentation .utils import unwrap
@@ -329,6 +332,17 @@ def _instrument(self, **kwargs):
329332 "AsyncResponses.cancel" ,
330333 async_responses_cancel_wrapper (tracer ),
331334 )
335+ # Realtime API (beta, WebSocket-based)
336+ self ._try_wrap (
337+ "openai.resources.beta.realtime.realtime" ,
338+ "Realtime.connect" ,
339+ realtime_connect_wrapper (tracer ),
340+ )
341+ self ._try_wrap (
342+ "openai.resources.beta.realtime.realtime" ,
343+ "AsyncRealtime.connect" ,
344+ realtime_connect_wrapper (tracer ),
345+ )
332346
333347 def _uninstrument (self , ** kwargs ):
334348 unwrap ("openai.resources.chat.completions" , "Completions.create" )
@@ -354,5 +368,7 @@ def _uninstrument(self, **kwargs):
354368 unwrap ("openai.resources.responses" , "AsyncResponses.create" )
355369 unwrap ("openai.resources.responses" , "AsyncResponses.retrieve" )
356370 unwrap ("openai.resources.responses" , "AsyncResponses.cancel" )
371+ unwrap ("openai.resources.beta.realtime.realtime" , "Realtime.connect" )
372+ unwrap ("openai.resources.beta.realtime.realtime" , "AsyncRealtime.connect" )
357373 except ImportError :
358374 pass
0 commit comments